3
3
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
4
4
/* SPDX-License-Identifier: Unlicense */
5
5
6
+ /*
7
+ This file contains code from J. Arndt's book "Matters Computational"
8
+ and the accompanying FXT-library with permission of the author.
9
+ */
10
+
6
11
/*
7
12
Setup and interpolation from
8
13
@@ -27,7 +32,7 @@ int s_mp_toom_cook_4_sqr(const mp_int *a, mp_int *c)
27
32
return e ;
28
33
}
29
34
30
- /** A = a3*x^3 + a2*x^2 + a1*x + a0; */
35
+ /** A = a3*x^3 + a2*x^2 + a1*x + a0;; */
31
36
if ((e = mp_init_size (& a0 , B )) != MP_OKAY ) {
32
37
goto LTM_ERRa0 ;
33
38
}
@@ -61,113 +66,113 @@ int s_mp_toom_cook_4_sqr(const mp_int *a, mp_int *c)
61
66
}
62
67
mp_clamp (& a3 );
63
68
64
- /** S2 = a0 * a1 */
69
+ /** S2 = a0 * a1; */
65
70
if ((e = mp_mul (& a0 , & a1 , & S2 )) != MP_OKAY ) {
66
71
goto LTM_ERR ;
67
72
}
68
- /** S2 = S2 * 2 */
73
+ /** S2 = S2 * 2 ; */
69
74
if ((e = mp_mul_2 (& S2 , & S2 )) != MP_OKAY ) {
70
75
goto LTM_ERR ;
71
76
}
72
- /** S6 = a0 - a2 */
77
+ /** S6 = a0 - a2; */
73
78
if ((e = mp_sub (& a0 , & a2 , & S6 )) != MP_OKAY ) {
74
79
goto LTM_ERR ;
75
80
}
76
- /** S7 = a1 - a3 */
81
+ /** S7 = a1 - a3; */
77
82
if ((e = mp_sub (& a1 , & a3 , & S7 )) != MP_OKAY ) {
78
83
goto LTM_ERR ;
79
84
}
80
- /** S3 = S6 + S7 */
85
+ /** S3 = S6 + S7; */
81
86
if ((e = mp_add (& S6 , & S7 , & S3 )) != MP_OKAY ) {
82
87
goto LTM_ERR ;
83
88
}
84
- /** S4 = S6 - S7 */
89
+ /** S4 = S6 - S7; */
85
90
if ((e = mp_sub (& S6 , & S7 , & S4 )) != MP_OKAY ) {
86
91
goto LTM_ERR ;
87
92
}
88
- /** S3 = S3 * S4 */
93
+ /** S3 = S3 * S4; */
89
94
if ((e = mp_mul (& S3 , & S4 , & S3 )) != MP_OKAY ) {
90
95
goto LTM_ERR ;
91
96
}
92
- /** S5 = S6 * S7 */
97
+ /** S5 = S6 * S7; */
93
98
if ((e = mp_mul (& S6 , & S7 , & S5 )) != MP_OKAY ) {
94
99
goto LTM_ERR ;
95
100
}
96
- /** S5 = S5 * 2 */
101
+ /** S5 = S5 * 2 ; */
97
102
if ((e = mp_mul_2 (& S5 , & S5 )) != MP_OKAY ) {
98
103
goto LTM_ERR ;
99
104
}
100
- /** S4 = a0 + a1 */
105
+ /** S4 = a0 + a1; */
101
106
if ((e = mp_add (& a0 , & a1 , & S4 )) != MP_OKAY ) {
102
107
goto LTM_ERR ;
103
108
}
104
- /** S4 = S4 + a2 */
109
+ /** S4 = S4 + a2; */
105
110
if ((e = mp_add (& S4 , & a2 , & S4 )) != MP_OKAY ) {
106
111
goto LTM_ERR ;
107
112
}
108
- /** S4 = S4 + a3 */
113
+ /** S4 = S4 + a3; */
109
114
if ((e = mp_add (& S4 , & a3 , & S4 )) != MP_OKAY ) {
110
115
goto LTM_ERR ;
111
116
}
112
- /** S4 = S4^2 */
117
+ /** S4 = S4^2; */
113
118
if ((e = mp_sqr (& S4 , & S4 )) != MP_OKAY ) {
114
119
goto LTM_ERR ;
115
120
}
116
121
117
- /** S6 = a3 * a2 */
122
+ /** S6 = a3 * a2; */
118
123
if ((e = mp_mul (& a3 , & a2 , & S6 )) != MP_OKAY ) {
119
124
goto LTM_ERR ;
120
125
}
121
- /** S6 = S6 * 2 */
126
+ /** S6 = S6 * 2 ; */
122
127
if ((e = mp_mul_2 (& S6 , & S6 )) != MP_OKAY ) {
123
128
goto LTM_ERR ;
124
129
}
125
- /** T1 = S3 + S4 */
130
+ /** T1 = S3 + S4; */
126
131
if ((e = mp_add (& S3 , & S4 , & tmp )) != MP_OKAY ) {
127
132
goto LTM_ERR ;
128
133
}
129
- /** T1 = T1 + S5 */
134
+ /** T1 = T1 + S5; */
130
135
if ((e = mp_add (& tmp , & S5 , & tmp )) != MP_OKAY ) {
131
136
goto LTM_ERR ;
132
137
}
133
- /** T1 = T1 / 2 */
138
+ /** T1 = T1 / 2 ; */
134
139
if ((e = mp_div_2 (& tmp ,& tmp )) != MP_OKAY ) {
135
140
goto LTM_ERR ;
136
141
}
137
- /** S1 = S2 + S6 */
142
+ /** S1 = S2 + S6; */
138
143
if ((e = mp_add (& S2 , & S6 , & S1 )) != MP_OKAY ) {
139
144
goto LTM_ERR ;
140
145
}
141
- /** S7 = T1 - S1 */
146
+ /** S7 = T1 - S1; */
142
147
if ((e = mp_sub (& tmp , & S1 , & S7 )) != MP_OKAY ) {
143
148
goto LTM_ERR ;
144
149
}
145
- /** S4 = S1 - S5 */
150
+ /** S4 = S1 - S5; */
146
151
if ((e = mp_sub (& S1 , & S5 , & S4 )) != MP_OKAY ) {
147
152
goto LTM_ERR ;
148
153
}
149
- /** S3 = S7 - S3 */
154
+ /** S3 = S7 - S3; */
150
155
if ((e = mp_sub (& S7 , & S3 , & S3 )) != MP_OKAY ) {
151
156
goto LTM_ERR ;
152
157
}
153
- /** S1 = a0^2 */
158
+ /** S1 = a0^2 ; */
154
159
if ((e = mp_sqr (& a0 , & S1 )) != MP_OKAY ) {
155
160
goto LTM_ERR ;
156
161
}
157
- /** S5 = S7 - S1 */
162
+ /** S5 = S7 - S1; */
158
163
if ((e = mp_sub (& S7 , & S1 , & S5 )) != MP_OKAY ) {
159
164
goto LTM_ERR ;
160
165
}
161
- /** S7 = a3^2 */
166
+ /** S7 = a3^2 ; */
162
167
if ((e = mp_sqr (& a3 , & S7 )) != MP_OKAY ) {
163
168
goto LTM_ERR ;
164
169
}
165
- /** S3 = S3 - S7 */
170
+ /** S3 = S3 - S7; */
166
171
if ((e = mp_sub (& S3 , & S7 , & S3 )) != MP_OKAY ) {
167
172
goto LTM_ERR ;
168
173
}
169
174
170
- /** P = S7 * x^6 + S6 * x^5 + S5 * x^4 + S4 * x^3 + S3 * x^2 + S2 * x + S1 */
175
+ /** P = S7 * x^6 + S6 * x^5 + S5 * x^4 + S4 * x^3 + S3 * x^2 + S2 * x + S1; */
171
176
if ((e = mp_lshd (& S7 , 6 * B )) != MP_OKAY ) {
172
177
goto LTM_ERR ;
173
178
}
0 commit comments