From c27a9cf984a357f7a1e32dacf06a7282937faea5 Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Sat, 26 Aug 2023 07:43:15 +0530 Subject: [PATCH 1/7] Add benchmarks for GCD when input is Gaussian Integer --- benchmarks/polys.py | 54 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index ec97803..45cae6b 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -1,4 +1,4 @@ -from sympy import symbols, prod, prem, rem, degree, LC, subresultants, gcd +from sympy import symbols, prod, prem, rem, degree, LC, subresultants, gcd, I from sympy.polys import QQ, Poly @@ -175,6 +175,36 @@ def make_poly(self, n): return f, g, d, syms +class _GaussianInteger(_GCDExample): + """An example of Polynomial using Gaussian Integer""" + + def make_poly(self, n): + x, y1, y2, y3, y4, y5, y6 = syms = symbols("x y1 y2 y3 y4 y5 y6") + + d = (-x**3 + I*x**2 + x)**n + + f = (-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) + \ + -y1*y2/2 - y1*(y2 + 1)/2 - y1*(y3 + 1) - \ + I*y4 + I*y6 + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 - I*y5 + \ + -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - I*(y4 + y5) + \ + -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - I*(-y4 + y5) + \ + y1*(y2 + 1) + -y1*y2 - y1*y3/2 - y1*(y3 + 1)/2 - I*y5 + -I*y6 + \ + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 + I*y5 + -y1*y2 + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + y1*y2 + y1*y3 + \ + y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d + + g = (-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) + \ + -y1*y2/2 - y1*(y2 + 1)/2 - y1*(y3 + 1) - \ + I*y4 + I*y6 + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 - I*y5 + \ + -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - I*(y4 + y5) + \ + -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - \ + I*(-y4 + y5) + y1*(y2 + 1) + -y1*y2 - y1*y3/2 - y1*(y3 + 1)/2 - \ + I*y5 + -I*y6 + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 + I*y5 + \ + -y1*y2 + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + \ + y1*y2 + y1*y3 + y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d + + return f, g, d, syms + + class _TimeOP: """ Benchmarks comparing Poly implementations of a given operation. @@ -341,4 +371,24 @@ class TimeGCD_QuadraticNonMonicGCD(_TimeGCD): class TimeGCD_SparseNonMonicQuadratic(_TimeGCD): GCDExampleCLS = _SparseNonMonicQuadratic - params = [(1, 3, 5), ('expr', 'dense', 'sparse')] \ No newline at end of file + params = [(1, 3, 5), ('expr', 'dense', 'sparse')] + + +class _TimeGaussianInt(_TimeOP): + """Benchmarks for GCDs method when input is Gaussian Integer""" + + def expected(self, f, g, d, syms): + expected_gcd = gcd(f, g) + + return expected_gcd + + def get_func_expr(self, f, g, d, syms): + return lambda: gcd(f, g) + + def get_func_poly(self, f, g, d): + return lambda: f.gcd(g) + + +class TimeGCD_GaussInt(_TimeGaussianInt): + GCDExampleCLS = _GaussianInteger + params = [(1, 2, 3), ('expr', 'dense')] \ No newline at end of file From c70e881fd9727d693059d9a77007bf500dbe3715 Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Sun, 10 Sep 2023 20:07:22 +0530 Subject: [PATCH 2/7] Add sparse method --- benchmarks/polys.py | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index 45cae6b..4508c0b 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -1,4 +1,4 @@ -from sympy import symbols, prod, prem, rem, degree, LC, subresultants, gcd, I +from sympy import symbols, prod, prem, rem, degree, LC, subresultants, gcd, I, ZZ_I from sympy.polys import QQ, Poly @@ -183,24 +183,25 @@ def make_poly(self, n): d = (-x**3 + I*x**2 + x)**n - f = (-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) + \ - -y1*y2/2 - y1*(y2 + 1)/2 - y1*(y3 + 1) - \ - I*y4 + I*y6 + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 - I*y5 + \ - -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - I*(y4 + y5) + \ - -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - I*(-y4 + y5) + \ - y1*(y2 + 1) + -y1*y2 - y1*y3/2 - y1*(y3 + 1)/2 - I*y5 + -I*y6 + \ - -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 + I*y5 + -y1*y2 + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + y1*y2 + y1*y3 + \ - y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d - - g = (-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) + \ - -y1*y2/2 - y1*(y2 + 1)/2 - y1*(y3 + 1) - \ - I*y4 + I*y6 + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 - I*y5 + \ - -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - I*(y4 + y5) + \ - -y1*y2/2 - y1*(y2 + 1)/2 - y1*y3/2 - y1*(y3 + 1)/2 - \ - I*(-y4 + y5) + y1*(y2 + 1) + -y1*y2 - y1*y3/2 - y1*(y3 + 1)/2 - \ - I*y5 + -I*y6 + -y1*(y2 + 1) - y1*y3/2 - y1*(y3 + 1)/2 + I*y5 + \ - -y1*y2 + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + \ - y1*y2 + y1*y3 + y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d + f = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - + 2*y1*y2 - 5*y1*(y2 + 1) - y1*(y3 + 1) - + I*y4 + I*y6 + -y1*(y2 + 1) - 3*y1*y3 - y1*(y3 + 1) - I*y5 - + 2*y1*y2 - 7*y1*(y2 + 1) - 3*y1*y3 - 5*y1*(y3 + 1) - I*(y4 + y5) - + y1*y2 - 2*y1*(y2 + 1) - y1*y3 - 3*y1*(y3 + 1) - I*(-y4 + y5) + + y1*(y2 + 1) + -y1*y2 - 5*y1*y3 - y1*(y3 + 1) - I*y5 + -I*y6 - + 3*y1*(y2 + 1) - y1*y3 - 7*y1*(y3 + 1) + I*y5 + -y1*y2 + y1*(y3 + 1) + + 5*y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + y1*y2 + y1*y3 + + 7*y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d) + + g = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - + 7*y1*y2 - y1*(y2 + 1) - y1*(y3 + 1) - + I*y4 + I*y6 - y1*(y2 + 1) - 3*y1*y3 - y1*(y3 + 1) - I*y5 - + y1*y2 - 7*y1*(y2 + 1) - 5*y1*y3 - 2*y1*(y3 + 1) - I*(y4 + y5) - + 3*y1*y2 - 5*y1*(y2 + 1) - 9*y1*y3 - 7*y1*(y3 + 1) - + I*(-y4 + y5) + y1*(y2 + 1) + -y1*y2 - y1*y3 - y1*(y3 + 1) - + I*y5 + -I*y6 + -y1*(y2 + 1) - y1*y3 - y1*(y3 + 1) + I*y5 - 3*y1*y2 + + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + + y1*y2 + y1*y3 + y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d) return f, g, d, syms @@ -388,7 +389,9 @@ def get_func_expr(self, f, g, d, syms): def get_func_poly(self, f, g, d): return lambda: f.gcd(g) + def get_func_sparse(self, f, g, d, syms): + return lambda: f.gcd(g) class TimeGCD_GaussInt(_TimeGaussianInt): GCDExampleCLS = _GaussianInteger - params = [(1, 2, 3), ('expr', 'dense')] \ No newline at end of file + params = [(1, 2, 3), ('expr', 'dense', 'sparse')] \ No newline at end of file From e4f235f2d890d99024f90e96a3ab83af9bb51760 Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Mon, 11 Sep 2023 23:13:38 +0530 Subject: [PATCH 3/7] fix error in sparse method --- benchmarks/polys.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index 4508c0b..9fbcbaf 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -39,7 +39,10 @@ def to_poly(self, expr): return Poly(expr, self.syms) def to_ring(self, expr): - return self.ring(expr) + try: + return self.ring(expr) + except: + return expr def as_expr(self): return (self.f, self.g, self.d, self.syms) @@ -181,7 +184,7 @@ class _GaussianInteger(_GCDExample): def make_poly(self, n): x, y1, y2, y3, y4, y5, y6 = syms = symbols("x y1 y2 y3 y4 y5 y6") - d = (-x**3 + I*x**2 + x)**n + d = (-x + I*y1)**n f = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - 2*y1*y2 - 5*y1*(y2 + 1) - y1*(y3 + 1) - @@ -235,7 +238,10 @@ def setup(self, n, impl): expected = examples.to_poly(expected) elif impl == 'sparse': - func = self.get_func_sparse(*examples.as_ring()) + try: + func = self.get_func_sparse(*examples.as_ring()) + except: + func = self.get_func_expr(*examples.as_expr()) if isinstance(expected, list): expected = [examples.to_ring(p) for p in expected] else: @@ -248,7 +254,7 @@ def time_op(self, n, impl): self.returned_result = self.func() def teardown(self, n, impl): - assert self.expected_result == self.returned_result + assert self.expected_result.as_expr() == self.returned_result.as_expr() class _TimePREM(_TimeOP): @@ -390,7 +396,9 @@ def get_func_poly(self, f, g, d): return lambda: f.gcd(g) def get_func_sparse(self, f, g, d, syms): - return lambda: f.gcd(g) + fpe = ZZ_I[syms](f) + gpe = ZZ_I[syms](g) + return lambda: fpe.gcd(gpe) class TimeGCD_GaussInt(_TimeGaussianInt): GCDExampleCLS = _GaussianInteger From 34db70bcb3b22a7f1e53baba3d8231d23533c3c7 Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Tue, 12 Sep 2023 14:33:58 +0530 Subject: [PATCH 4/7] fix errors --- benchmarks/polys.py | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index 9fbcbaf..116fbec 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -30,7 +30,7 @@ def __init__(self, n): self.x = syms[0] self.y = syms[1:] self.syms = syms - self.ring = QQ[syms] + self.ring = Poly(f).domain[syms] def to_expr(self, expr): return expr @@ -39,10 +39,7 @@ def to_poly(self, expr): return Poly(expr, self.syms) def to_ring(self, expr): - try: - return self.ring(expr) - except: - return expr + return self.ring(expr) def as_expr(self): return (self.f, self.g, self.d, self.syms) @@ -184,7 +181,7 @@ class _GaussianInteger(_GCDExample): def make_poly(self, n): x, y1, y2, y3, y4, y5, y6 = syms = symbols("x y1 y2 y3 y4 y5 y6") - d = (-x + I*y1)**n + d = -x**n f = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - 2*y1*y2 - 5*y1*(y2 + 1) - y1*(y3 + 1) - @@ -229,7 +226,10 @@ def setup(self, n, impl): expected = examples.to_expr(expected) elif impl == 'dense': - func = self.get_func_poly(*examples.as_poly()) + if examples.ring.domain == ZZ_I: + func = self.get_func_poly(*examples.as_expr()) + else: + func = self.get_func_poly(*examples.as_poly()) if isinstance(expected, list): # some methods output a list of polynomials expected = [examples.to_poly(p) for p in expected] @@ -238,10 +238,11 @@ def setup(self, n, impl): expected = examples.to_poly(expected) elif impl == 'sparse': - try: + if examples.ring.domain == ZZ_I: + func = self.get_func_sparse(*examples.as_expr()) + else: func = self.get_func_sparse(*examples.as_ring()) - except: - func = self.get_func_expr(*examples.as_expr()) + if isinstance(expected, list): expected = [examples.to_ring(p) for p in expected] else: @@ -254,7 +255,15 @@ def time_op(self, n, impl): self.returned_result = self.func() def teardown(self, n, impl): - assert self.expected_result.as_expr() == self.returned_result.as_expr() + examples = self.GCDExampleCLS(n) + domain = examples.ring.domain + if domain != ZZ_I: + assert self.expected_result == self.returned_result + else: + if impl == 'expr' or impl == 'sparse': + assert self.expected_result == self.returned_result + else: + assert self.expected_result.as_expr() == self.returned_result.as_expr() class _TimePREM(_TimeOP): @@ -392,12 +401,14 @@ def expected(self, f, g, d, syms): def get_func_expr(self, f, g, d, syms): return lambda: gcd(f, g) - def get_func_poly(self, f, g, d): - return lambda: f.gcd(g) + def get_func_poly(self, f, g, d, syms): + fp = Poly(f) + gp = Poly(g) + return lambda: fp.gcd(gp) - def get_func_sparse(self, f, g, d, syms): - fpe = ZZ_I[syms](f) - gpe = ZZ_I[syms](g) + def get_func_sparse(self, f, g, d, ring): + fpe = ZZ_I[ring](f) + gpe = ZZ_I[ring](g) return lambda: fpe.gcd(gpe) class TimeGCD_GaussInt(_TimeGaussianInt): From 5e73ef2186600a557dece2c1dd6627b02e97af34 Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Wed, 13 Sep 2023 18:15:37 +0530 Subject: [PATCH 5/7] Add suggestions and remove unnecessary code --- benchmarks/polys.py | 50 +++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index 116fbec..2662588 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -23,14 +23,15 @@ class _GCDExample: """A benchmark example with two polynomials and their gcd.""" def __init__(self, n): - f, g, d, syms = self.make_poly(n) + f, g, d, syms, domain = self.make_poly(n) self.f = f self.g = g self.d = d self.x = syms[0] self.y = syms[1:] self.syms = syms - self.ring = Poly(f).domain[syms] + self.domain = domain + self.ring = domain[syms] def to_expr(self, expr): return expr @@ -79,7 +80,7 @@ def make_poly(self, n): d = (1 + x + sum(y[:n])) ** 2 f = d * (-2 + x - sum(y[:n])) ** 2 g = d * (2 + x + sum(y[:n])) ** 2 - return f, g, d, syms + return f, g, d, syms, QQ class _SparseGCDHighDegree(_GCDExample): @@ -110,7 +111,7 @@ def make_poly(self, n): d = 1 + x ** (n + 1) + sum([y[i] ** (n + 1) for i in range(n)]) f = d * (-2 + x ** (n + 1) + sum([y[i] ** (n + 1) for i in range(n)])) g = d * (2 + x ** (n + 1) + sum([y[i] ** (n + 1) for i in range(n)])) - return f, g, d, syms + return f, g, d, syms, QQ class _QuadraticNonMonicGCD(_GCDExample): @@ -141,7 +142,7 @@ def make_poly(self, n): d = 1 + x ** 2 * y[0] ** 2 + sum([y[i] ** 2 for i in range(1, n)]) f = d * (-1 + x ** 2 - y[0] ** 2 + sum([y[i] ** 2 for i in range(1, n)])) g = d * (2 + x * y[0] + sum(y[1:n])) ** 2 - return f, g, d, syms + return f, g, d, syms, QQ class _SparseNonMonicQuadratic(_GCDExample): @@ -172,7 +173,7 @@ def make_poly(self, n): d = -1 + x * prod(y[:n]) f = d * (3 + x * prod(y[:n])) g = d * (-3 + x * prod(y[:n])) - return f, g, d, syms + return f, g, d, syms, QQ class _GaussianInteger(_GCDExample): @@ -181,7 +182,7 @@ class _GaussianInteger(_GCDExample): def make_poly(self, n): x, y1, y2, y3, y4, y5, y6 = syms = symbols("x y1 y2 y3 y4 y5 y6") - d = -x**n + d = (-x + I*y1)*n f = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - 2*y1*y2 - 5*y1*(y2 + 1) - y1*(y3 + 1) - @@ -203,7 +204,7 @@ def make_poly(self, n): + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + y1*y2 + y1*y3 + y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d) - return f, g, d, syms + return f, g, d, syms, ZZ_I class _TimeOP: @@ -226,10 +227,7 @@ def setup(self, n, impl): expected = examples.to_expr(expected) elif impl == 'dense': - if examples.ring.domain == ZZ_I: - func = self.get_func_poly(*examples.as_expr()) - else: - func = self.get_func_poly(*examples.as_poly()) + func = self.get_func_poly(*examples.as_poly()) if isinstance(expected, list): # some methods output a list of polynomials expected = [examples.to_poly(p) for p in expected] @@ -238,11 +236,7 @@ def setup(self, n, impl): expected = examples.to_poly(expected) elif impl == 'sparse': - if examples.ring.domain == ZZ_I: - func = self.get_func_sparse(*examples.as_expr()) - else: - func = self.get_func_sparse(*examples.as_ring()) - + func = self.get_func_sparse(*examples.as_ring()) if isinstance(expected, list): expected = [examples.to_ring(p) for p in expected] else: @@ -255,15 +249,7 @@ def time_op(self, n, impl): self.returned_result = self.func() def teardown(self, n, impl): - examples = self.GCDExampleCLS(n) - domain = examples.ring.domain - if domain != ZZ_I: - assert self.expected_result == self.returned_result - else: - if impl == 'expr' or impl == 'sparse': - assert self.expected_result == self.returned_result - else: - assert self.expected_result.as_expr() == self.returned_result.as_expr() + assert self.expected_result == self.returned_result class _TimePREM(_TimeOP): @@ -401,15 +387,13 @@ def expected(self, f, g, d, syms): def get_func_expr(self, f, g, d, syms): return lambda: gcd(f, g) - def get_func_poly(self, f, g, d, syms): - fp = Poly(f) - gp = Poly(g) - return lambda: fp.gcd(gp) + def get_func_poly(self, f, g, d): + return lambda: f.gcd(g) def get_func_sparse(self, f, g, d, ring): - fpe = ZZ_I[ring](f) - gpe = ZZ_I[ring](g) - return lambda: fpe.gcd(gpe) + return lambda: f.gcd(g) + + class TimeGCD_GaussInt(_TimeGaussianInt): GCDExampleCLS = _GaussianInteger From 5e664a88f614741a216077dc82b470edc8c99e0b Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Thu, 14 Sep 2023 09:57:38 +0530 Subject: [PATCH 6/7] remove duplicate methods --- benchmarks/polys.py | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index 2662588..d042ef6 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -376,25 +376,6 @@ class TimeGCD_SparseNonMonicQuadratic(_TimeGCD): params = [(1, 3, 5), ('expr', 'dense', 'sparse')] -class _TimeGaussianInt(_TimeOP): - """Benchmarks for GCDs method when input is Gaussian Integer""" - - def expected(self, f, g, d, syms): - expected_gcd = gcd(f, g) - - return expected_gcd - - def get_func_expr(self, f, g, d, syms): - return lambda: gcd(f, g) - - def get_func_poly(self, f, g, d): - return lambda: f.gcd(g) - - def get_func_sparse(self, f, g, d, ring): - return lambda: f.gcd(g) - - - -class TimeGCD_GaussInt(_TimeGaussianInt): +class TimeGCD_GaussInt( _TimeGCD): GCDExampleCLS = _GaussianInteger params = [(1, 2, 3), ('expr', 'dense', 'sparse')] \ No newline at end of file From 6aac3803151a3b667224a52d2be93a60030dc91c Mon Sep 17 00:00:00 2001 From: Abhishek Patidar <1e9abhi1e10@gmail.com> Date: Thu, 14 Sep 2023 18:40:05 +0530 Subject: [PATCH 7/7] fix error --- benchmarks/polys.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/benchmarks/polys.py b/benchmarks/polys.py index d042ef6..4120bd6 100644 --- a/benchmarks/polys.py +++ b/benchmarks/polys.py @@ -180,32 +180,15 @@ class _GaussianInteger(_GCDExample): """An example of Polynomial using Gaussian Integer""" def make_poly(self, n): - x, y1, y2, y3, y4, y5, y6 = syms = symbols("x y1 y2 y3 y4 y5 y6") + x, y1, y2, y3, y4, y5 = syms = symbols("x y1 y2 y3 y4 y5") d = (-x + I*y1)*n - f = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - - 2*y1*y2 - 5*y1*(y2 + 1) - y1*(y3 + 1) - - I*y4 + I*y6 + -y1*(y2 + 1) - 3*y1*y3 - y1*(y3 + 1) - I*y5 - - 2*y1*y2 - 7*y1*(y2 + 1) - 3*y1*y3 - 5*y1*(y3 + 1) - I*(y4 + y5) - - y1*y2 - 2*y1*(y2 + 1) - y1*y3 - 3*y1*(y3 + 1) - I*(-y4 + y5) + - y1*(y2 + 1) + -y1*y2 - 5*y1*y3 - y1*(y3 + 1) - I*y5 + -I*y6 - - 3*y1*(y2 + 1) - y1*y3 - 7*y1*(y3 + 1) + I*y5 + -y1*y2 + y1*(y3 + 1) - + 5*y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + y1*y2 + y1*y3 + - 7*y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d) - - g = ((-I*(x)**4 - (x)**3 + I*(x)**2 + (x) + -I*(y2 + 1) - y1*(y3 + 1) - - 7*y1*y2 - y1*(y2 + 1) - y1*(y3 + 1) - - I*y4 + I*y6 - y1*(y2 + 1) - 3*y1*y3 - y1*(y3 + 1) - I*y5 - - y1*y2 - 7*y1*(y2 + 1) - 5*y1*y3 - 2*y1*(y3 + 1) - I*(y4 + y5) - - 3*y1*y2 - 5*y1*(y2 + 1) - 9*y1*y3 - 7*y1*(y3 + 1) - - I*(-y4 + y5) + y1*(y2 + 1) + -y1*y2 - y1*y3 - y1*(y3 + 1) - - I*y5 + -I*y6 + -y1*(y2 + 1) - y1*y3 - y1*(y3 + 1) + I*y5 - 3*y1*y2 - + y1*(y3 + 1) + y1*(y3 + 1) + -y1*y2 - y1*(y2 + 1) - y1*y3 + - y1*y2 + y1*y3 + y1*(y3 + 1) + y1*(y2 + 1) + y1*y3)*d) + f = (-I*x**n - 2*y1*y3 - I*(-y2 + n) - I*(y4 + y5))*d - return f, g, d, syms, ZZ_I + g = (-I*x**(n + 1) - 2*y1*(y3 + n) - I*(-y2 + n + 1) - I*(y4 + y5))*d + return f, g, d, syms, ZZ_I class _TimeOP: """