Lines Matching defs:la
5415 _kmul_resultsize(mpd_size_t la, mpd_size_t lb)
5419 n = add_size_t(la, lb);
5422 m = (la+1)/2 + 1;
5448 * c must be _kmul_resultsize(la, lb) in size.
5456 mpd_uint_t *w, mpd_size_t la, mpd_size_t lb)
5460 assert(la >= lb && lb > 0);
5461 assert(la <= MPD_KARATSUBA_BASECASE || w != NULL);
5463 if (la <= MPD_KARATSUBA_BASECASE) {
5464 _mpd_basemul(c, a, b, la, lb);
5468 m = (la+1)/2; /* ceil(la/2) */
5470 /* lb <= m < la */
5473 /* lb can now be larger than la-m */
5474 if (lb > la-m) {
5477 _karatsuba_rec(w, b, a+m, w+lt, lb, la-m); /* b*ah */
5480 lt = (la-m) + (la-m) + 1; /* space needed for result array */
5482 _karatsuba_rec(w, a+m, b, w+lt, la-m, lb); /* ah*b */
5484 _mpd_baseaddto(c+m, w, (la-m)+lb); /* add ah*b*B**m */
5494 /* la >= lb > m */
5497 _mpd_baseaddto(w, a+m, la-m);
5505 lt = (la-m) + (la-m) + 1;
5508 _karatsuba_rec(w, a+m, b+m, w+lt, la-m, lb-m);
5510 _mpd_baseaddto(c+2*m, w, (la-m) + (lb-m));
5511 _mpd_basesubfrom(c+m, w, (la-m) + (lb-m));
5740 mpd_uint_t *w, mpd_size_t la, mpd_size_t lb)
5744 assert(la >= lb && lb > 0);
5745 assert(la <= 3*(MPD_MAXTRANSFORM_2N/2) || w != NULL);
5747 if (la <= 3*(MPD_MAXTRANSFORM_2N/2)) {
5750 _mpd_basemul(c, b, a, lb, la);
5756 if ((result = _mpd_fntmul(a, b, la, lb, &dummy)) == NULL) {
5759 memcpy(c, result, (la+lb) * (sizeof *result));
5765 m = (la+1)/2; /* ceil(la/2) */
5767 /* lb <= m < la */
5770 /* lb can now be larger than la-m */
5771 if (lb > la-m) {
5774 if (!_karatsuba_rec_fnt(w, b, a+m, w+lt, lb, la-m)) { /* b*ah */
5779 lt = (la-m) + (la-m) + 1; /* space needed for result array */
5781 if (!_karatsuba_rec_fnt(w, a+m, b, w+lt, la-m, lb)) { /* ah*b */
5785 _mpd_baseaddto(c+m, w, (la-m)+lb); /* add ah*b*B**m */
5797 /* la >= lb > m */
5800 _mpd_baseaddto(w, a+m, la-m);
5810 lt = (la-m) + (la-m) + 1;
5813 if (!_karatsuba_rec_fnt(w, a+m, b+m, w+lt, la-m, lb-m)) {
5817 _mpd_baseaddto(c+2*m, w, (la-m) + (lb-m));
5818 _mpd_basesubfrom(c+m, w, (la-m) + (lb-m));