For type stability my current code is:
eltype(x)(0.5)
Please advise, is there a simpler solution if x is a scalar?
For type stability my current code is:
eltype(x)(0.5)
Please advise, is there a simpler solution if x is a scalar?
To get the type of x
you can use typeof(x)
.
To convert 0.5
to the type of x
you can use oftype(x, 0.5)
.
Thank you very much!
Just one more question.
Is there the slightest difference in code efficiency for the three versions?
(I see no difference after top:, but what happens in define?)
julia> x = 1f0
1.0f0
julia> @code_llvm typeof(x)(0.5)
; Function Attrs: uwtable
define float @jlsys_Type_56602(i8**, double) #0 !dbg !5 {
top:
%2 = fptrunc double %1 to float
ret float %2
}
julia> @code_llvm eltype(x)(0.5)
; Function Attrs: uwtable
define float @jlsys_Type_56602(i8**, double) #0 !dbg !5 {
top:
%2 = fptrunc double %1 to float
ret float %2
}
julia> @code_llvm oftype(x,0.5)
; Function Attrs: uwtable
define float @julia_oftype_64020(float, double) #0 !dbg !5 {
top:
%2 = fptrunc double %1 to float
ret float %2
}
I guess there should be no difference in performance. When I use @code_native
the generated code is identical although it references to a different file.
Thank you again.
It is a peace of mind that I am free to choose the preferred syntax.