* Added epsilon() function to find out the granuality of a given floating
point type.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# $Id: __init__.py,v 1.2 2010-05-28 18:43:59 wirawan Exp $
|
||||
# $Id: __init__.py,v 1.3 2010-09-10 21:23:59 wirawan Exp $
|
||||
#
|
||||
# wpylib.math main module
|
||||
# Created: 20091204
|
||||
@@ -28,3 +28,17 @@ def ztol(val, tol=None, copy=True):
|
||||
else:
|
||||
raise ValueError, "Unsupported datatype: %s" % str(type(val))
|
||||
|
||||
|
||||
def epsilon(dtype):
|
||||
"""A simple way to determine (at runtime) the precision of a given type
|
||||
real number.
|
||||
Precision is defined such that (1.0 + epsilon(dtype) > 1.0).
|
||||
Below this number, the addition will not yield a different result.
|
||||
"""
|
||||
one = dtype(1.0)
|
||||
small = one
|
||||
small2 = small
|
||||
while one + small > one:
|
||||
small2 = small
|
||||
small = dtype(small / 2)
|
||||
return small2
|
||||
|
||||
Reference in New Issue
Block a user