According to array-api, there is no specified behavior when a non-floating point type is given for vector_norm, but I would like to suggest, with all due respect, to stop this casting or to output an error, for the following reasons. (For lgamma, not even defined in array-api.)
There are very limited situations where such behavior is needed.
It does not match the behavior of other functions in numpy; np.sin(1) returns 0.8414709848078965 instead of 0.
This behavior can be easily achieved by ivy.astype(ivy.lgamma(x), dtype=x.dtype)
Package maintainers using ivy need to worry about the type of input, and casts need to be made.
Bug Explanation
https://data-apis.org/array-api/latest/extensions/generated/array_api.linalg.vector_norm.html
According to array-api, there is no specified behavior when a non-floating point type is given for
vector_norm
, but I would like to suggest, with all due respect, to stop this casting or to output an error, for the following reasons. (Forlgamma
, not even defined in array-api.)np.sin(1)
returns0.8414709848078965
instead of0
.ivy.astype(ivy.lgamma(x), dtype=x.dtype)
Thanks for this great project anyway.
Steps to Reproduce Bug
Environment
NixOS 24.05, Python 3.11
Ivy Version
1.0.0.1
Backend
Device
CPU