39 lhs: Optional[Range], rhs: Optional[Range]
41 """Merges the two optional ranges.
44 lhs: The left hand side range.
45 rhs: The right hand side range.
48 A merged range (None if both lhs and rhs are None).
55 minimum=min(lhs.minimum, rhs.minimum),
56 maximum=max(lhs.maximum, rhs.maximum),
61 """Returns the range of the absolute values of the finite non-zeros.
64 values: An iterable object of float values.
67 The range of the absolute values of the finite non-zeros, None if no such
70 minimum: Optional[float] =
None
71 maximum: Optional[float] =
None
74 if math.isinf(v)
or v == 0.0:
80 minimum = min(minimum, v)
81 maximum = max(maximum, v)
83 assert (maximum
is None) == (minimum
is None), (minimum, maximum)
87 return Range(minimum=minimum, maximum=maximum)
90@dataclasses.dataclass(frozen=True)