flopscope.numpy.real_if_close
fnp.real_if_close(a, tol=100)[flopscope source][numpy source]
If input is complex with all imaginary parts close to zero, return real parts.
Adapted from NumPy docs np.real_if_close
Return real array if imaginary part is negligible.
"Close to zero" is defined as tol * (machine epsilon of the type for
a).
Parameters
- a:array_like
Input array.
- tol:float
Tolerance in machine epsilons for the complex part of the elements in the array. If the tolerance is <=1, then the absolute tolerance is used.
Returns
- out:ndarray
If
ais real, the type ofais used for the output. Ifahas complex elements, the returned type is float.
See also
Notes
Machine epsilon varies from machine to machine and between data types but Python floats on most platforms have a machine epsilon equal to 2.2204460492503131e-16. You can use 'flops.finfo(float).eps' to print out the machine epsilon for floats.
Examples
>>> import flopscope.numpy as fnp
>>> flops.finfo(float).eps
2.2204460492503131e-16 # may vary>>> flops.real_if_close([2.1 + 4e-14j, 5.2 + 3e-15j], tol=1000)
array([2.1, 5.2])
>>> flops.real_if_close([2.1 + 4e-13j, 5.2 + 3e-15j], tol=1000)
array([2.1+4.e-13j, 5.2 + 3e-15j])