testing.assert_close_nulp

array_api_extra.testing.assert_close_nulp(actual, desired, *, nulp=1, check_dtype=True, check_shape=True, check_scalar=False, xp=None)

Compare two arrays relatively to their spacing.

This is an interface to numpy.testing.assert_array_almost_equal_nulp() which accepts any standard-compatible array and performs additional array namespace, shape, and dtype checks.

Parameters:
  • actual (Array) – The array produced by the tested function.

  • desired (Array) – The expected array (typically hardcoded).

  • nulp (int, optional) – The maximum number of units in the last place for the tolerance check. Default: 1.

  • check_dtype (bool, default: True) – Whether to check agreement between actual and desired dtypes.

  • check_shape (bool, default: True) – Whether to check agreement between actual and desired shapes.

  • check_scalar (bool, default: False) – NumPy only: whether to check agreement between actual and desired types — 0-D numpy.ndarray vs scalar (e.g. numpy.double).

  • xp (array_namespace, optional) – A standard-compatible namespace which actual and desired must match.

Raises:
  • AssertionError – If the spacing between actual and desired for one or more elements is larger than nulp.

  • ImportError – If numpy is not importable in the Python environment.

Return type:

None

See also

assert_close

Similar function for inexact equality checks.

numpy.spacing

Spacing calculation for NumPy arrays.

numpy.testing.assert_array_almost_equal_nulp

Similar function for NumPy arrays.

Notes

This is a relatively robust method to compare two arrays whose amplitude is variable.

An assertion is raised if the following condition is not met:

abs(actual - desired) <= nulp * spacing(maximum(abs(actual), abs(desired)))

where spacing(x) is the distance between x and the nearest adjacent number representable by in the data type of x.