Lines Matching refs:prodp
21 #define MPN_MUL_N_RECURSE(prodp, up, vp, size, tspace) \
24 mul_n_basecase(prodp, up, vp, size); \
26 mul_n(prodp, up, vp, size, tspace); \
29 #define MPN_SQR_N_RECURSE(prodp, up, size, tspace) \
32 mpih_sqr_n_basecase(prodp, up, size); \
34 mpih_sqr_n(prodp, up, size, tspace); \
55 mul_n_basecase(mpi_ptr_t prodp, mpi_ptr_t up, mpi_ptr_t vp, mpi_size_t size)
66 MPN_COPY(prodp, up, size);
68 MPN_ZERO(prodp, size);
71 cy = mpihelp_mul_1(prodp, up, size, v_limb);
73 prodp[size] = cy;
74 prodp++;
83 cy = mpihelp_add_n(prodp, prodp, up, size);
85 cy = mpihelp_addmul_1(prodp, up, size, v_limb);
87 prodp[size] = cy;
88 prodp++;
95 mul_n(mpi_ptr_t prodp, mpi_ptr_t up, mpi_ptr_t vp,
112 MPN_MUL_N_RECURSE(prodp, up, vp, esize, tspace);
113 cy_limb = mpihelp_addmul_1(prodp + esize, up, esize, vp[esize]);
114 prodp[esize + esize] = cy_limb;
115 cy_limb = mpihelp_addmul_1(prodp + esize, vp, size, up[esize]);
116 prodp[esize + size] = cy_limb;
142 MPN_MUL_N_RECURSE(prodp + size, up + hsize, vp + hsize, hsize,
149 mpihelp_sub_n(prodp, up + hsize, up, hsize);
152 mpihelp_sub_n(prodp, up, up + hsize, hsize);
156 mpihelp_sub_n(prodp + hsize, vp + hsize, vp, hsize);
159 mpihelp_sub_n(prodp + hsize, vp, vp + hsize, hsize);
166 MPN_MUL_N_RECURSE(tspace, prodp, prodp + hsize, hsize,
170 MPN_COPY(prodp + hsize, prodp + size, hsize);
171 cy = mpihelp_add_n(prodp + size, prodp + size,
172 prodp + size + hsize, hsize);
177 mpihelp_sub_n(prodp + hsize, prodp + hsize, tspace,
181 mpihelp_add_n(prodp + hsize, prodp + hsize, tspace,
194 cy += mpihelp_add_n(prodp + hsize, prodp + hsize, tspace, size);
196 mpihelp_add_1(prodp + hsize + size,
197 prodp + hsize + size, hsize, cy);
199 MPN_COPY(prodp, tspace, hsize);
200 cy = mpihelp_add_n(prodp + hsize, prodp + hsize, tspace + hsize,
203 mpihelp_add_1(prodp + size, prodp + size, size, 1);
207 void mpih_sqr_n_basecase(mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t size)
218 MPN_COPY(prodp, up, size);
220 MPN_ZERO(prodp, size);
223 cy_limb = mpihelp_mul_1(prodp, up, size, v_limb);
225 prodp[size] = cy_limb;
226 prodp++;
235 cy_limb = mpihelp_add_n(prodp, prodp, up, size);
237 cy_limb = mpihelp_addmul_1(prodp, up, size, v_limb);
239 prodp[size] = cy_limb;
240 prodp++;
245 mpih_sqr_n(mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t size, mpi_ptr_t tspace)
261 MPN_SQR_N_RECURSE(prodp, up, esize, tspace);
262 cy_limb = mpihelp_addmul_1(prodp + esize, up, esize, up[esize]);
263 prodp[esize + esize] = cy_limb;
264 cy_limb = mpihelp_addmul_1(prodp + esize, up, size, up[esize]);
266 prodp[esize + size] = cy_limb;
276 MPN_SQR_N_RECURSE(prodp + size, up + hsize, hsize, tspace);
282 mpihelp_sub_n(prodp, up + hsize, up, hsize);
284 mpihelp_sub_n(prodp, up, up + hsize, hsize);
289 MPN_SQR_N_RECURSE(tspace, prodp, hsize, tspace + size);
292 MPN_COPY(prodp + hsize, prodp + size, hsize);
293 cy = mpihelp_add_n(prodp + size, prodp + size,
294 prodp + size + hsize, hsize);
297 cy -= mpihelp_sub_n(prodp + hsize, prodp + hsize, tspace, size);
307 cy += mpihelp_add_n(prodp + hsize, prodp + hsize, tspace, size);
309 mpihelp_add_1(prodp + hsize + size,
310 prodp + hsize + size, hsize, cy);
312 MPN_COPY(prodp, tspace, hsize);
313 cy = mpihelp_add_n(prodp + hsize, prodp + hsize, tspace + hsize,
316 mpihelp_add_1(prodp + size, prodp + size, size, 1);
321 void mpihelp_mul_n(mpi_ptr_t prodp,
326 mpih_sqr_n_basecase(prodp, up, size);
330 mpih_sqr_n(prodp, up, size, tspace);
335 mul_n_basecase(prodp, up, vp, size);
339 mul_n(prodp, up, vp, size, tspace);
346 mpihelp_mul_karatsuba_case(mpi_ptr_t prodp,
362 MPN_MUL_N_RECURSE(prodp, up, vp, vsize, ctx->tspace);
364 prodp += vsize;
383 cy = mpihelp_add_n(prodp, prodp, ctx->tp, vsize);
384 mpihelp_add_1(prodp + vsize, ctx->tp + vsize, vsize,
386 prodp += vsize;
411 cy = mpihelp_add_n(prodp, prodp, ctx->tspace, vsize);
412 mpihelp_add_1(prodp + vsize, ctx->tspace + vsize, usize, cy);
452 mpihelp_mul(mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t usize,
455 mpi_ptr_t prod_endp = prodp + usize + vsize - 1;
473 MPN_COPY(prodp, up, usize);
475 MPN_ZERO(prodp, usize);
478 cy = mpihelp_mul_1(prodp, up, usize, v_limb);
480 prodp[usize] = cy;
481 prodp++;
490 cy = mpihelp_add_n(prodp, prodp, up,
493 cy = mpihelp_addmul_1(prodp, up, usize, v_limb);
495 prodp[usize] = cy;
496 prodp++;
504 if (mpihelp_mul_karatsuba_case(prodp, up, usize, vp, vsize, &ctx) < 0)