flopscope.

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

Areacore
Typecounted
Cost
numel(output)\text{numel}(\text{output})
Flopscope Context

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 a is real, the type of a is used for the output. If a has 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])