Description
Right now finfo
requires that the output fields be float
https://data-apis.org/array-api/latest/API_specification/generated/signatures.data_type_functions.finfo.html#signatures.data_type_functions.finfo. However, making the results 0-D arrays would be better.
For the spec itself, float
is fine, but it's problematic for any library that implements higher precision data types like float128:
>>> import numpy as np
>>> np.finfo(np.float128)
finfo(resolution=1.0000000000000000715e-18, min=-1.189731495357231765e+4932, max=1.189731495357231765e+4932, dtype=float128)
>>> float('-1.189731495357231765e+4932')
-inf
float
is essentially a float64, so the various values for float128
cannot be represented as floats. NumPy uses scalars for the values, which for the spec would be 0-D arrays:
>>> type(np.finfo(np.float128).min)
<class 'numpy.float128'>
Even if there are no plans to add float128
to the spec, it's useful for libraries that do have it to have a consistent return type for finfo
, since float
and a 0-D array aren't 100% duck type compatible.
For iinfo
obviously this problem isn't present since int
can represent any integer, but it may be good to change it to 0-D array as well just for consistency (although I should note that numpy.iinfo
just uses int
for its fields).