This seems like it shouldn’t convert to a UniformScaling{Float64}
:
julia> inv(I)
UniformScaling{Float64}
1.0*I
at least I don’t see a reason for this and it could cause some type instabilities!? Possibly there is a reason why inv(I) !== I
?
This seems like it shouldn’t convert to a UniformScaling{Float64}
:
julia> inv(I)
UniformScaling{Float64}
1.0*I
at least I don’t see a reason for this and it could cause some type instabilities!? Possibly there is a reason why inv(I) !== I
?
You also have
julia> inv(true)
1.0
so I would assume it stems from this since
julia> UniformScaling(1//1)
UniformScaling{Rational{Int64}}
1//1*I
julia> inv(ans)
UniformScaling{Rational{Int64}}
1//1*I
and it seems like dispatching specifically on I
might not be optimal since you can also create
julia> UniformScaling(false)
UniformScaling{Bool}
false*I
which would not fulfill inv(false*I) = false*I
but still have the same type.
I see the point, and I guess the conversion is pretty much irrelevant in most use-cases since 1.0
is exactly represented by a Float64
. It just seemed like an oddly specific type, when I simply use I
.