Skip to content

Loading…

norm is not type-stable #6056

Closed
stevengj opened this Issue · 1 comment

1 participant

@stevengj
The Julia Language member

As discussed on the mailing list, I was working on a new vecnorm(x,p) function (generalizing and replacing normfro) which computes a p-norm of any iterable container as if it were a vector. I noticed that it is quite tricky to make it type stable, and that in fact our current norm function is not type-stable

julia> norm(Float32[0,1],0)
1

julia> norm(Float32[0,1],2)
1.0f0

julia> norm(Int32[0,1],2)
1.0

julia> norm(Int32[0,1],1)
1

julia> norm(Int32[0,1],3)
1.0

julia> norm(Int32[0,1],0)
1

Obviously, the "0-norm" needs to be promoted to a floating-point type. Similarly for the 1-norm of integer arrays.

(What's not as obvious to me is whether the norm of a Float32 array should be Float32. I'd much rather accumulate the sum in double precision, and I don't see the point of returning a single-precision result. However, since sum of a Float32 array is also single-precision, I suppose doing the same thing for norm makes a certain amount of sense.)

cc: @toivoh

@stevengj
The Julia Language member

Hopefully, I will have a vecnorm PR soon that will fix this issue, among other things.

@stevengj stevengj added a commit to stevengj/julia that referenced this issue
@stevengj stevengj type stability in all norm variants (continuing #6056 and #6057) d6ff069
@stevengj stevengj added a commit to stevengj/julia that referenced this issue
@stevengj stevengj type stability in all norm variants (continuing #6056 and #6057) f27e154
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.