Author: Armin Rigo <[email protected]>
Branch: py3.5
Changeset: r87099:682481164902
Date: 2016-09-13 20:37 +0200
http://bitbucket.org/pypy/pypy/changeset/682481164902/
Log: math.gcd()
diff --git a/pypy/module/math/__init__.py b/pypy/module/math/__init__.py
--- a/pypy/module/math/__init__.py
+++ b/pypy/module/math/__init__.py
@@ -4,7 +4,8 @@
class Module(MixedModule):
appleveldefs = {
- 'factorial' : 'app_math.factorial'
+ 'factorial' : 'app_math.factorial',
+ 'gcd' : 'app_math.gcd',
}
interpleveldefs = {
diff --git a/pypy/module/math/app_math.py b/pypy/module/math/app_math.py
--- a/pypy/module/math/app_math.py
+++ b/pypy/module/math/app_math.py
@@ -42,3 +42,11 @@
res, _, shift = _fac1(x)
return res << shift
+
+def gcd(x, y):
+ """greatest common divisor of x and y"""
+ x = abs(x)
+ y = abs(y)
+ while x > 0:
+ x, y = y % x, x
+ return y
diff --git a/pypy/module/math/test/test_math.py
b/pypy/module/math/test/test_math.py
--- a/pypy/module/math/test/test_math.py
+++ b/pypy/module/math/test/test_math.py
@@ -363,3 +363,9 @@
#
raises(TypeError, math.isclose, 0, 1, rel_tol=None)
raises(TypeError, math.isclose, 0, 1, abs_tol=None)
+
+ def test_gcd(self):
+ import math
+ assert math.gcd(-4, -10) == 2
+ assert math.gcd(0, -10) == 10
+ assert math.gcd(0, 0) == 0
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit