/usr/lib/python3/dist-packages/pyutilib/math/numtypes.py is in python3-pyutilib 5.3.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | # _________________________________________________________________________
#
# PyUtilib: A Python utility library.
# Copyright (c) 2008 Sandia Corporation.
# This software is distributed under the BSD License.
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
# _________________________________________________________________________
__all__ = ['infinity', 'nan', 'is_nan', 'is_finite']
"""
Definitions of mathematical constants
"""
import sys
import math
if sys.version_info < (2,6):
""" Definition of infinity """
infinity = float(1e3000)
""" Definition of NaN """
nan = infinity/infinity
def is_nan(x):
"""
Returns true if the argument is a float and it does not equal itself
"""
return type(x) is float and x != x
def is_finite(val):
"""
Returns true if the argument is a float or int and it is not infinite or NaN
"""
return type(val) in (float,int) and val not in (infinity, -infinity, nan)
else:
""" Definition of infinity """
infinity = float('inf')
""" Definition of NaN """
nan = infinity/infinity
def is_nan(x):
"""
Returns true if the argument is a float and it does not equal itself
"""
try:
return math.isnan(x)
except TypeError:
return False
def is_finite(x):
"""
Returns true if the argument is a float or int and it is not infinite or NaN
"""
try:
return not math.isinf(x)
except TypeError:
return False
|