Skip to content

[Bug]: ivy.vector_norm and ivy.lgamma when backend=numpy return rounded values #28844

@34j

Description

@34j

Bug Explanation

> python -c "import ivy; ivy.set_backend('numpy'); print(ivy.lgamma(5)); print(ivy.lgamma(5.))"
ivy.array(3)
ivy.array(3.1780539)
> python -c "import ivy; ivy.set_backend('numpy'); print(ivy.vector_norm([1, 1])); print(ivy.vector_norm([1., 1.]))"
ivy.array(1)
ivy.array(1.4142135)

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. (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.

Thanks for this great project anyway.

Steps to Reproduce Bug

python -c "import ivy; ivy.set_backend('numpy'); print(ivy.lgamma(5)); print(ivy.lgamma(5.))"
python -c "import ivy; ivy.set_backend('numpy'); print(ivy.vector_norm([1, 1])); print(ivy.vector_norm([1., 1.]))"

Environment

NixOS 24.05, Python 3.11

Ivy Version

1.0.0.1

Backend

  • NumPy
  • TensorFlow
  • PyTorch
  • JAX

Device

CPU

Metadata

Metadata

Assignees

Labels

Bug ReportReport bugs detected in Ivy.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions