Lines Matching defs:len2
183 mp_add(BNS *rop, BNS *op1, BNS *op2, BNI len1, BNI len2)
189 if (len1 < len2)
190 MP_SWAP(op1, op2, len1, len2);
198 for (size = 1; size < len2; size++) {
226 mp_sub(BNS *rop, BNS *op1, BNS *op2, BNI len1, BNI len2)
245 for (size = 1; size < len2; size++) {
355 /* rop must be a pointer to len1 + len2 elements
359 mp_base_mul(BNS *rop, BNS *op1, BNS *op2, BNI len1, BNI len2)
364 long size = len1 + len2;
371 for (j = 1; j < len2; j++) {
387 for (j = 1; j < len2; j++) {
417 mp_karatsuba_mul(BNS *rop, BNS *op1, BNS *op2, BNI len1, BNI len2)
427 if (len1 >= len2)
430 x = (len2 + 1) >> 1;
436 lb1 = len2 - x;
481 xlen = len1 + len2;
581 mp_toom_mul(BNS *rop, BNS *op1, BNS *op2, BNI len1, BNI len2)
592 x = (len1 + len2 + 4) / 6;
594 l2 = len2 - (x << 1); /* length of remaining piece of op2 */
737 memset(rop, '\0', sizeof(BNS) * (len1 + len2));
740 xsize = (len1 + len2) - i;
766 mp_mul(BNS *rop, BNS *op1, BNS *op2, BNI len1, BNI len2)
768 if (len1 < len2)
769 MP_SWAP(op1, op2, len1, len2);
771 if (len1 < KARATSUBA || len2 < KARATSUBA)
772 return (mp_base_mul(rop, op1, op2, len1, len2));
773 else if (len1 < TOOM && len2 < TOOM && len2 > ((len1 + 1) >> 1))
774 return (mp_karatsuba_mul(rop, op1, op2, len1, len2));
775 else if (len1 >= TOOM && len2 >= TOOM && (len2 + 2) / 3 == (len1 + 2) / 3)
776 return (mp_toom_mul(rop, op1, op2, len1, len2));
783 xsize = len1 + len2;
784 mp_mul(rop, op1, op2, len2, len2);
786 len1 -= len2;
787 op1 += len2;
790 if (len1 > len2)
791 ptr = mp_calloc(1, sizeof(BNS) * (len2 + len2));
793 ptr = mp_calloc(1, sizeof(BNS) * (len1 + len2));
795 /* loop multiplying len2 size operands at a time */
796 while (len1 >= len2) {
797 isize += len2;
798 psize = mp_mul(ptr, op1, op2, len2, len2);
800 len1 -= len2;
801 op1 += len2;
804 memset(ptr, '\0', sizeof(BNS) * (MIN(len1, len2) + len2));
807 /* len1 was not a multiple of len2 */
809 isize += len2;
810 psize = mp_mul(ptr, op2, op1, len2, len1);