Lines Matching refs:n2

153 _bc_do_compare (n1, n2, use_sign, ignore_last)
154 bc_num n1, n2;
162 if (use_sign && n1->n_sign != n2->n_sign)
171 if (n1->n_len != n2->n_len)
173 if (n1->n_len > n2->n_len)
175 /* Magnitude of n1 > n2. */
183 /* Magnitude of n1 < n2. */
193 count = n1->n_len + MIN (n1->n_scale, n2->n_scale);
195 n2ptr = n2->n_value;
203 if (ignore_last && count == 1 && n1->n_scale == n2->n_scale)
209 /* Magnitude of n1 > n2. */
217 /* Magnitude of n1 < n2. */
226 if (n1->n_scale != n2->n_scale)
228 if (n1->n_scale > n2->n_scale)
230 for (count = n1->n_scale-n2->n_scale; count>0; count--)
233 /* Magnitude of n1 > n2. */
242 for (count = n2->n_scale-n1->n_scale; count>0; count--)
245 /* Magnitude of n1 < n2. */
262 bc_compare (n1, n2)
263 bc_num n1, n2;
265 return _bc_do_compare (n1, n2, TRUE, FALSE);
337 _bc_do_add (n1, n2, scale_min)
338 bc_num n1, n2;
348 sum_scale = MAX (n1->n_scale, n2->n_scale);
349 sum_digits = MAX (n1->n_len, n2->n_len) + 1;
362 n2bytes = n2->n_scale;
364 n2ptr = (char *) (n2->n_value + n2->n_len + n2bytes - 1);
380 n2bytes += n2->n_len;
429 _bc_do_sub (n1, n2, scale_min)
430 bc_num n1, n2;
440 diff_len = MAX (n1->n_len, n2->n_len);
441 diff_scale = MAX (n1->n_scale, n2->n_scale);
442 min_len = MIN (n1->n_len, n2->n_len);
443 min_scale = MIN (n1->n_scale, n2->n_scale);
456 n2ptr = (char *) (n2->n_value + n2->n_len + n2->n_scale -1);
471 /* n2 has the longer scale */
472 for (count = n2->n_scale - min_scale; count > 0; count--)
501 /* If n1 has more digits then n2, we now do that subtract. */
529 bc_sub (n1, n2, result, scale_min)
530 bc_num n1, n2, *result;
537 if (n1->n_sign != n2->n_sign)
539 diff = _bc_do_add (n1, n2, scale_min);
546 cmp_res = _bc_do_compare (n1, n2, FALSE, FALSE);
550 /* n1 is less than n2, subtract n1 from n2. */
551 diff = _bc_do_sub (n2, n1, scale_min);
552 diff->n_sign = (n2->n_sign == PLUS ? MINUS : PLUS);
556 res_scale = MAX (scale_min, MAX(n1->n_scale, n2->n_scale));
561 /* n2 is less than n1, subtract n2 from n1. */
562 diff = _bc_do_sub (n1, n2, scale_min);
579 bc_add (n1, n2, result, scale_min)
580 bc_num n1, n2, *result;
587 if (n1->n_sign == n2->n_sign)
589 sum = _bc_do_add (n1, n2, scale_min);
595 cmp_res = _bc_do_compare (n1, n2, FALSE, FALSE); /* Compare magnitudes. */
599 /* n1 is less than n2, subtract n1 from n2. */
600 sum = _bc_do_sub (n2, n1, scale_min);
601 sum->n_sign = n2->n_sign;
605 res_scale = MAX (scale_min, MAX(n1->n_scale, n2->n_scale));
610 /* n2 is less than n1, subtract n2 from n1. */
611 sum = _bc_do_sub (n1, n2, scale_min);
657 _bc_simp_mul (bc_num n1, int n1len, bc_num n2, int n2len, bc_num *prod,
661 char *n1end, *n2end; /* To the end of n1 and n2. */
669 n2end = (char *) (n2->n_value + n2len - 1);
857 bc_multiply (n1, n2, prod, scale)
858 bc_num n1, n2, *prod;
867 len2 = n2->n_len + n2->n_scale;
868 full_scale = n1->n_scale + n2->n_scale;
869 prod_scale = MIN(full_scale,MAX(scale,MAX(n1->n_scale,n2->n_scale)));
872 _bc_rec_mul (n1, len1, n2, len2, &pval, full_scale);
875 pval->n_sign = ( n1->n_sign == n2->n_sign ? PLUS : MINUS );
932 bc_divide (n1, n2, quot, scale)
933 bc_num n1, n2, *quot;
947 if (bc_is_zero (n2)) return -1;
950 if (n2->n_scale == 0)
952 if (n2->n_len == 1 && *n2->n_value == 1)
955 qval->n_sign = (n1->n_sign == n2->n_sign ? PLUS : MINUS);
964 /* Set up the divide. Move the decimal point on n1 by n2's scale.
966 scale2 = n2->n_scale;
967 n2ptr = (unsigned char *) n2->n_value+n2->n_len+scale2-1;
981 len2 = n2->n_len + scale2;
984 memcpy (num2, n2->n_value, len2);
1107 qval->n_sign = ( n1->n_sign == n2->n_sign ? PLUS : MINUS );