Lines Matching refs:n2

164  * r is 2*n2 words in size,
165 * a and b are both n2 words in size.
166 * n2 must be a power of 2.
168 * t must be 2*n2 words in size
174 /* dnX may not be positive, but n2/2+dnX has to be */
175 void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
178 int n = n2 / 2, c1, c2;
185 if (n2 == 4) {
191 * Only call bn_mul_comba 8 if n2 == 8 and the two arrays are complete
194 if (n2 == 8 && dna == 0 && dnb == 0) {
200 if (n2 < BN_MUL_RECURSIVE_SIZE_NORMAL) {
201 bn_mul_normal(r, a, n2 + dna, b, n2 + dnb);
203 memset(&r[2 * n2 + dna + dnb], 0,
247 bn_mul_comba4(&(t[n2]), t, &(t[n]));
249 memset(&t[n2], 0, sizeof(*t) * 8);
252 bn_mul_comba4(&(r[n2]), &(a[n]), &(b[n]));
257 bn_mul_comba8(&(t[n2]), t, &(t[n]));
259 memset(&t[n2], 0, sizeof(*t) * 16);
262 bn_mul_comba8(&(r[n2]), &(a[n]), &(b[n]));
266 p = &(t[n2 * 2]);
268 bn_mul_recursive(&(t[n2]), t, &(t[n]), n, 0, 0, p);
270 memset(&t[n2], 0, sizeof(*t) * n2);
272 bn_mul_recursive(&(r[n2]), &(a[n]), &(b[n]), n, dna, dnb, p);
281 c1 = (int)(bn_add_words(t, r, &(r[n2]), n2));
284 c1 -= (int)(bn_sub_words(&(t[n2]), t, &(t[n2]), n2));
287 c1 += (int)(bn_add_words(&(t[n2]), &(t[n2]), t, n2));
296 c1 += (int)(bn_add_words(&(r[n]), &(r[n]), &(t[n2]), n2));
298 p = &(r[n + n2]);
325 int i, j, n2 = n * 2;
369 bn_mul_comba4(&(t[n2]), t, &(t[n]));
371 bn_mul_normal(&(r[n2]), &(a[n]), tn, &(b[n]), tn);
372 memset(&r[n2 + tn * 2], 0, sizeof(*r) * (n2 - tn * 2));
376 bn_mul_comba8(&(t[n2]), t, &(t[n]));
378 bn_mul_normal(&(r[n2]), &(a[n]), tna, &(b[n]), tnb);
379 memset(&r[n2 + tna + tnb], 0, sizeof(*r) * (n2 - tna - tnb));
381 p = &(t[n2 * 2]);
382 bn_mul_recursive(&(t[n2]), t, &(t[n]), n, 0, 0, p);
393 bn_mul_recursive(&(r[n2]), &(a[n]), &(b[n]),
395 memset(&r[n2 + i * 2], 0, sizeof(*r) * (n2 - i * 2));
397 bn_mul_part_recursive(&(r[n2]), &(a[n]), &(b[n]),
399 memset(&(r[n2 + tna + tnb]), 0,
400 sizeof(BN_ULONG) * (n2 - tna - tnb));
403 memset(&r[n2], 0, sizeof(*r) * n2);
406 bn_mul_normal(&(r[n2]), &(a[n]), tna, &(b[n]), tnb);
415 bn_mul_part_recursive(&(r[n2]),
420 bn_mul_recursive(&(r[n2]),
436 c1 = (int)(bn_add_words(t, r, &(r[n2]), n2));
439 c1 -= (int)(bn_sub_words(&(t[n2]), t, &(t[n2]), n2));
442 c1 += (int)(bn_add_words(&(t[n2]), &(t[n2]), t, n2));
451 c1 += (int)(bn_add_words(&(r[n]), &(r[n]), &(t[n2]), n2));
453 p = &(r[n + n2]);
474 * a and b must be the same size, which is n2.
475 * r needs to be n2 words and t needs to be n2*2
477 void bn_mul_low_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
480 int n = n2 / 2;
484 bn_mul_low_recursive(&(t[0]), &(a[0]), &(b[n]), n, &(t[n2]));
486 bn_mul_low_recursive(&(t[0]), &(a[n]), &(b[0]), n, &(t[n2]));