656c8d7c8bc74401f2edbf42ffd2a3aed59f7a23
3 from bigint_presentation_code
.toom_cook
import ToomCookInstance
6 class TestToomCook(unittest
.TestCase
):
8 TOOM_2
= ToomCookInstance
.make_toom_2()
9 # print(repr(repr(TOOM_2)))
12 "ToomCookInstance(lhs_part_count=2, rhs_part_count=2, "
13 "eval_points=(0, 1, POINT_AT_INFINITY), "
15 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
17 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
19 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
20 "poly=EvalOpPoly({0: Fraction(1, 1), 1: Fraction(1, 1)})), "
21 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)}))),"
23 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
25 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
27 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
28 "poly=EvalOpPoly({0: Fraction(1, 1), 1: Fraction(1, 1)})), "
29 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)}))),"
31 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
34 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
36 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
37 "poly=EvalOpPoly({0: Fraction(-1, 1), 1: Fraction(1, 1)})), "
39 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)})), "
41 "0: Fraction(-1, 1), 1: Fraction(1, 1), 2: Fraction(-1, 1)})), "
42 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)}))))"
45 def test_toom_2_5(self
):
46 TOOM_2_5
= ToomCookInstance
.make_toom_2_5()
47 # print(repr(repr(TOOM_2_5)))
50 "ToomCookInstance(lhs_part_count=3, rhs_part_count=2, "
51 "eval_points=(0, 1, -1, POINT_AT_INFINITY), lhs_eval_ops=("
52 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
55 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
56 "rhs=EvalOpInput(lhs=2, rhs=0, "
57 "poly=EvalOpPoly({2: Fraction(1, 1)})), "
58 "poly=EvalOpPoly({0: Fraction(1, 1), 2: Fraction(1, 1)})), "
59 "rhs=EvalOpInput(lhs=1, rhs=0, "
60 "poly=EvalOpPoly({1: Fraction(1, 1)})), "
62 "0: Fraction(1, 1), 1: Fraction(1, 1), 2: Fraction(1, 1)})), "
65 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
66 "rhs=EvalOpInput(lhs=2, rhs=0, "
67 "poly=EvalOpPoly({2: Fraction(1, 1)})), "
68 "poly=EvalOpPoly({0: Fraction(1, 1), 2: Fraction(1, 1)})), "
69 "rhs=EvalOpInput(lhs=1, rhs=0, "
70 "poly=EvalOpPoly({1: Fraction(1, 1)})), poly=EvalOpPoly("
71 "{0: Fraction(1, 1), 1: Fraction(-1, 1), 2: Fraction(1, 1)})), "
72 "EvalOpInput(lhs=2, rhs=0, "
73 "poly=EvalOpPoly({2: Fraction(1, 1)}))), rhs_eval_ops=("
74 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
75 "EvalOpAdd(lhs=EvalOpInput(lhs=0, rhs=0, "
76 "poly=EvalOpPoly({0: Fraction(1, 1)})), rhs="
77 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
78 "poly=EvalOpPoly({0: Fraction(1, 1), 1: Fraction(1, 1)})), "
80 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
81 "rhs=EvalOpInput(lhs=1, rhs=0, "
82 "poly=EvalOpPoly({1: Fraction(1, 1)})), "
83 "poly=EvalOpPoly({0: Fraction(1, 1), 1: Fraction(-1, 1)})), "
84 "EvalOpInput(lhs=1, rhs=0, "
85 "poly=EvalOpPoly({1: Fraction(1, 1)}))), "
87 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
88 "EvalOpSub(lhs=EvalOpExactDiv(lhs=EvalOpSub(lhs="
89 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
90 "rhs=EvalOpInput(lhs=2, rhs=0, "
91 "poly=EvalOpPoly({2: Fraction(1, 1)})), "
92 "poly=EvalOpPoly({1: Fraction(1, 1), 2: Fraction(-1, 1)})), "
94 "poly=EvalOpPoly({1: Fraction(1, 2), 2: Fraction(-1, 2)})), rhs="
95 "EvalOpInput(lhs=3, rhs=0, poly=EvalOpPoly({3: Fraction(1, 1)})), "
97 "{1: Fraction(1, 2), 2: Fraction(-1, 2), 3: Fraction(-1, 1)})), "
98 "EvalOpSub(lhs=EvalOpExactDiv(lhs=EvalOpAdd(lhs="
99 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
101 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)})), "
102 "poly=EvalOpPoly({1: Fraction(1, 1), 2: Fraction(1, 1)})), rhs=2, "
103 "poly=EvalOpPoly({1: Fraction(1, 2), 2: Fraction(1, 2)})), rhs="
104 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
106 "{0: Fraction(-1, 1), 1: Fraction(1, 2), 2: Fraction(1, 2)})), "
107 "EvalOpInput(lhs=3, rhs=0, poly=EvalOpPoly({3: Fraction(1, 1)}))))"
110 def test_reversed_toom_2_5(self
):
111 TOOM_2_5
= ToomCookInstance
.make_toom_2_5().reversed()
112 print(repr(repr(TOOM_2_5
)))
115 "ToomCookInstance(lhs_part_count=2, rhs_part_count=3, "
116 "eval_points=(0, 1, -1, POINT_AT_INFINITY), lhs_eval_ops=("
117 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
119 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
121 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
122 "poly=EvalOpPoly({0: Fraction(1, 1), 1: Fraction(1, 1)})), "
124 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
126 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
127 "poly=EvalOpPoly({0: Fraction(1, 1), 1: Fraction(-1, 1)})), "
128 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)}))),"
130 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
131 "EvalOpAdd(lhs=EvalOpAdd(lhs="
132 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
134 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)})), "
135 "poly=EvalOpPoly({0: Fraction(1, 1), 2: Fraction(1, 1)})), rhs="
136 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
138 "{0: Fraction(1, 1), 1: Fraction(1, 1), 2: Fraction(1, 1)})), "
139 "EvalOpSub(lhs=EvalOpAdd(lhs="
140 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
142 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)})), "
143 "poly=EvalOpPoly({0: Fraction(1, 1), 2: Fraction(1, 1)})), rhs="
144 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
146 "{0: Fraction(1, 1), 1: Fraction(-1, 1), 2: Fraction(1, 1)})), "
147 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)}))),"
149 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
150 "EvalOpSub(lhs=EvalOpExactDiv(lhs=EvalOpSub(lhs="
151 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
153 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)})), "
154 "poly=EvalOpPoly({1: Fraction(1, 1), 2: Fraction(-1, 1)})), "
156 "poly=EvalOpPoly({1: Fraction(1, 2), 2: Fraction(-1, 2)})), rhs="
157 "EvalOpInput(lhs=3, rhs=0, poly=EvalOpPoly({3: Fraction(1, 1)})), "
159 "{1: Fraction(1, 2), 2: Fraction(-1, 2), 3: Fraction(-1, 1)})), "
160 "EvalOpSub(lhs=EvalOpExactDiv(lhs=EvalOpAdd(lhs="
161 "EvalOpInput(lhs=1, rhs=0, poly=EvalOpPoly({1: Fraction(1, 1)})), "
163 "EvalOpInput(lhs=2, rhs=0, poly=EvalOpPoly({2: Fraction(1, 1)})), "
164 "poly=EvalOpPoly({1: Fraction(1, 1), 2: Fraction(1, 1)})), rhs=2, "
165 "poly=EvalOpPoly({1: Fraction(1, 2), 2: Fraction(1, 2)})), rhs="
166 "EvalOpInput(lhs=0, rhs=0, poly=EvalOpPoly({0: Fraction(1, 1)})), "
168 "{0: Fraction(-1, 1), 1: Fraction(1, 2), 2: Fraction(1, 2)})), "
169 "EvalOpInput(lhs=3, rhs=0, poly=EvalOpPoly({3: Fraction(1, 1)}))))"
173 if __name__
== "__main__":