# [pypy-svn] r72274 - pypy/branch/ll_math/pypy/rpython/lltypesystem/module

arigo at codespeak.net arigo at codespeak.net
Tue Mar 16 12:45:38 CET 2010

```Author: arigo
Date: Tue Mar 16 12:45:37 2010
New Revision: 72274

Modified:
pypy/branch/ll_math/pypy/rpython/lltypesystem/module/ll_math.py
Log:

Modified: pypy/branch/ll_math/pypy/rpython/lltypesystem/module/ll_math.py
==============================================================================
--- pypy/branch/ll_math/pypy/rpython/lltypesystem/module/ll_math.py	(original)
+++ pypy/branch/ll_math/pypy/rpython/lltypesystem/module/ll_math.py	Tue Mar 16 12:45:37 2010
@@ -163,6 +163,25 @@
return math_copysign(x, y)     # no error checking needed

+def ll_math_fmod(x, y):
+    if isinf(y):
+        if isinf(x):
+            raise ValueError("math domain error")
+        return x  # fmod(x, +/-Inf) returns x for finite x (or if x is a NaN).
+
+    _error_reset()
+    r = math_fmod(x, y)
+    errno = rposix.get_errno()
+    if isnan(r):
+        if isnan(x) or isnan(y):
+            errno = 0
+        else:
+            errno = EDOM
+    if errno:
+        _likely_raise(errno, r)
+    return r
+
+
def ll_math_hypot(x, y):
# hypot(x, +/-Inf) returns Inf, even if x is a NaN.
if isinf(x):
@@ -278,9 +297,10 @@
# ____________________________________________________________

unary_math_functions = [
-    'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh',
+    'acos', 'asin', 'atan',
'ceil', 'cos', 'cosh', 'exp', 'fabs', 'floor',
-    'log1p', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'
+    'sin', 'sinh', 'sqrt', 'tan', 'tanh',
+    # 'log1p', 'acosh', 'asinh', 'atanh',   -- added in Python 2.6
]
unary_math_functions_can_overflow = [
'cosh', 'exp', 'log1p', 'sinh', # why log1p? CPython does it

```