aesara.tensor.isclose

Contents

aesara.tensor.isclose#

aesara.tensor.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[source]#

Implements Numpy’s isclose on tensors.

The tolerance values are positive, typically very small numbers. The relative difference (rtol * abs(b)) and the absolute difference atol are added together to compare against the absolute difference between a and b.

absolute(a - b) <= (atol + rtol * absolute(b))

Parameters:
  • a (tensor) – Input to compare.

  • b (tensor) – Input to compare.

  • rtol (float) – The relative tolerance parameter.

  • atol (float) – The absolute tolerance parameter.

  • equal_nan (bool) – Whether to consider nan’s in the same place to be close

Returns:

A boolean (int8) array where two arrays are element-wise equal within a tolerance.

Return type:

int8

Notes

Not a symmetric equation. See Numpy’s documentation.

Examples

>>> import aesara
>>> import numpy as np
>>> a = _asarray([1e10, 1e-7], dtype="float64")
>>> b = _asarray([1.00001e10, 1e-8], dtype="float64")
>>> aesara.tensor.isclose(a, b).eval()
array([1, 0], dtype=int8)
>>> a = _asarray([1e10, 1e-8], dtype="float64")
>>> b = _asarray([1.00001e10, 1e-9], dtype="float64")
>>> aesara.tensor.isclose(a, b).eval()
array([1, 1], dtype=int8)
>>> a = _asarray([1e10, 1e-8], dtype="float64")
>>> b = _asarray([1.0001e10, 1e-9], dtype="float64")
>>> aesara.tensor.isclose(a, b).eval()
array([0, 1], dtype=int8)
>>> a = _asarray([1.0, np.nan], dtype="float64")
>>> b = _asarray([1.0, np.nan], dtype="float64")
>>> aesara.tensor.isclose(a, b).eval()
array([1, 0], dtype==int8)
>>> a = _asarray([1.0, np.nan], dtype="float64")
>>> b = _asarray([1.0, np.nan], dtype="float64")
>>> aesara.tensor.isclose(a, b, equal_nan=True).eval()
array([1, 1], dtype==int8)
>>> a = _asarray([1.0, np.inf], dtype="float64")
>>> b = _asarray([1.0, -np.inf], dtype="float64")
>>> aesara.tensor.isclose(a, b).eval()
array([1, 0], dtype==int8)
>>> a = _asarray([1.0, np.inf], dtype="float64")
>>> b = _asarray([1.0, np.inf], dtype="float64")
>>> aesara.tensor.isclose(a, b).eval()
array([1, 1], dtype==int8)