Hi,
I’m trying to tackle issue #24590 (https://github.com/JuliaLang/julia/issues/24590).
To do so I want to add a method to deal with transpose/adjoint of dense vectors (to call BLAS.dotc).
I don’t understand why the third line below returns false
julia> a = rand(ComplexF64, 1000);
julia> isa(a',Adjoint{Complex{Float64},Array{Complex{Float64},1}})
true
julia> isa(a',Adjoint{Complex{Float64},DenseArray{Complex{Float64},1}})
false
julia> isa(a',Adjoint{Complex{Float64},<:DenseArray{Complex{Float64}}})
true
julia> typeof(a')
Adjoint{Complex{Float64},Array{Complex{Float64},1}}
Thanks for any insight
There are big words for this, but this is just how parametric types work in Julia. If you think of isa
as being a <:
relation, this only applies to the outermost type, the parameters must be ==
unless you say otherwise:
julia> Array{Float64,1} <: AbstractArray{Float64,1}
true
julia> Array{Float64,1} <: AbstractArray{AbstractFloat,1}
false
julia> Array{Float64,1} <: AbstractArray{<:AbstractFloat,1}
true
Thanks for the help ! I had read about this, but it seems I had not fully understand it
And I don’t know why I did not try
Adjoint{Complex{Float64},<:DenseArray{Complex{Float64},1}}
(as I wanted to limit to 1d) which indeed works.
Thanks again !