Hello,
I found this rather interesting behaviour
julia> using LinearAlgebra
julia> a = [0, 0, 1]
3-element Array{Int64,1}:
0
0
1
julia> @. a/norm(a)
3-element Array{Float64,1}:
NaN
NaN
1.0
julia> a./norm(a)
3-element Array{Float64,1}:
0.0
0.0
1.0
Only when i tried with a=[0, 4, 4]
and got out @. a/norm(a)
returned [NaN, 1.0, 1.0]
that i realised that the broadcasting was being passed to norm
as well.
This is a rather simplistic case but this renders using @.
over expressions that use the norm
completely useless, so we can’t take advantage of the performances of fusing broadcasting calls.
I assumed that norm would only work for vectors and up, since for scalars one could just use abs
.
The quotes over breaks are because i realise that the norm behaving this way make sense, but still, as i said above one could just use abs to take the norm of a scalar value.
Is there a reason it is this way?