Source code for qupulse.utils
from typing import Union
import numpy
try:
from math import isclose
except ImportError:
# py version < 3.5
isclose = None
__all__ = ["checked_int_cast", "is_integer", "isclose"]
[docs]def checked_int_cast(x: Union[float, int, numpy.ndarray], epsilon: float=1e-6) -> int:
if isinstance(x, numpy.ndarray):
if len(x) != 1:
raise ValueError('Not a scalar value')
if isinstance(x, int):
return x
int_x = int(round(x))
if abs(x - int_x) > epsilon:
raise ValueError('No integer', x)
return int_x
[docs]def is_integer(x: Union[float, int], epsilon: float=1e-6) -> bool:
return abs(x - int(round(x))) < epsilon
def _fallback_is_close(a, b, *, rel_tol=1e-09, abs_tol=0.0):
"""Copied from https://docs.python.org/3/library/math.html
Does no error checks."""
return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) # pragma: no cover
if not isclose:
isclose = _fallback_is_close