Lines Matching refs:prec
74 typedef int bf_op2_func_t(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec,
396 slimb_t prec, int rnd_mode) in bf_get_rnd_add() argument
405 bit0 = scan_bit_nz(r, l * LIMB_BITS - 1 - bf_max(0, prec + 1)); in bf_get_rnd_add()
409 bit1 = get_bit(r->tab, l, l * LIMB_BITS - 1 - prec); in bf_get_rnd_add()
423 get_bit(r->tab, l, l * LIMB_BITS - 1 - (prec - 1)); in bf_get_rnd_add()
448 static int bf_set_overflow(bf_t *r, int sign, limb_t prec, bf_flags_t flags) in bf_set_overflow() argument
454 if (prec == BF_PREC_INF || in bf_set_overflow()
463 l = (prec + LIMB_BITS - 1) / LIMB_BITS; in bf_set_overflow()
468 r->tab[0] = limb_mask((-prec) & (LIMB_BITS - 1), in bf_set_overflow()
489 slimb_t i, bit_pos, pos, e_min, e_max, e_range, prec; in __bf_round() local
499 prec = r->expn + prec1; in __bf_round()
501 prec = prec1; in __bf_round()
506 prec = prec1 - (e_min - r->expn); in __bf_round()
508 prec = prec1; in __bf_round()
513 add_one = bf_get_rnd_add(&ret, r, l, prec, rnd_mode); in __bf_round()
515 if (prec <= 0) { in __bf_round()
519 r->expn += 1 - prec; in __bf_round()
529 bit_pos = l * LIMB_BITS - 1 - (prec - 1); in __bf_round()
571 bit_pos = l * LIMB_BITS - 1 - (prec - 1); in __bf_round()
631 int bf_can_round(const bf_t *a, slimb_t prec, bf_rnd_t rnd_mode, slimb_t k) in bf_can_round() argument
640 return (k >= (prec + 1)); in bf_can_round()
645 if (k < (prec + 2)) in bf_can_round()
647 bit_pos = a->len * LIMB_BITS - 1 - prec; in bf_can_round()
648 n = k - prec; in bf_can_round()
667 int bf_round(bf_t *r, limb_t prec, bf_flags_t flags) in bf_round() argument
671 return __bf_round(r, prec, flags, r->len, 0); in bf_round()
868 static int bf_add_internal(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_add_internal() argument
927 precl = (cancelled_bits + prec + 2 + LIMB_BITS - 1) / LIMB_BITS; in bf_add_internal()
1004 ret = bf_normalize_and_round(r, prec, flags); in bf_add_internal()
1012 static int __bf_add(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in __bf_add() argument
1015 return bf_add_internal(r, a, b, prec, flags, 0); in __bf_add()
1018 static int __bf_sub(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in __bf_sub() argument
1021 return bf_add_internal(r, a, b, prec, flags, 1); in __bf_sub()
1524 int bf_mul(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_mul() argument
1563 precl = (prec + 2 + LIMB_BITS - 1) / LIMB_BITS; in bf_mul()
1597 ret = bf_normalize_and_round(r, prec, flags); in bf_mul()
1606 int bf_mul_2exp(bf_t *r, slimb_t e, limb_t prec, bf_flags_t flags) in bf_mul_2exp() argument
1615 return __bf_round(r, prec, flags, r->len, 0); in bf_mul_2exp()
1652 static int __bf_div(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in __bf_div() argument
1688 precl = (prec + 2 + LIMB_BITS - 1) / LIMB_BITS; in __bf_div()
1716 ret = bf_normalize_and_round(r, prec, flags); in __bf_div()
1733 limb_t prec, bf_flags_t flags, int rnd_mode) in bf_divrem() argument
1754 return bf_round(r, prec, flags); in bf_divrem()
1819 return bf_round(r, prec, flags); in bf_divrem()
1826 int bf_rem(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_rem() argument
1833 ret = bf_divrem(q, r, a, b, prec, flags, rnd_mode); in bf_rem()
1847 int bf_remquo(slimb_t *pq, bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_remquo() argument
1854 ret = bf_divrem(q, r, a, b, prec, flags, rnd_mode); in bf_remquo()
2126 int bf_sqrt(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_sqrt() argument
2153 n = (2 * (prec + 2) + 2 * LIMB_BITS - 1) / (2 * LIMB_BITS); in bf_sqrt()
2182 ret = bf_round(r, prec, flags); in bf_sqrt()
2190 static no_inline int bf_op2(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_op2() argument
2198 ret = func(&tmp, a, b, prec, flags); in bf_op2()
2201 ret = func(r, a, b, prec, flags); in bf_op2()
2206 int bf_add(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_add() argument
2209 return bf_op2(r, a, b, prec, flags, __bf_add); in bf_add()
2212 int bf_sub(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_sub() argument
2215 return bf_op2(r, a, b, prec, flags, __bf_sub); in bf_sub()
2218 int bf_div(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, in bf_div() argument
2221 return bf_op2(r, a, b, prec, flags, __bf_div); in bf_div()
2224 int bf_mul_ui(bf_t *r, const bf_t *a, uint64_t b1, limb_t prec, in bf_mul_ui() argument
2231 ret |= bf_mul(r, a, &b, prec, flags); in bf_mul_ui()
2236 int bf_mul_si(bf_t *r, const bf_t *a, int64_t b1, limb_t prec, in bf_mul_si() argument
2243 ret |= bf_mul(r, a, &b, prec, flags); in bf_mul_si()
2248 int bf_add_si(bf_t *r, const bf_t *a, int64_t b1, limb_t prec, in bf_add_si() argument
2256 ret |= bf_add(r, a, &b, prec, flags); in bf_add_si()
2261 static int bf_pow_ui(bf_t *r, const bf_t *a, limb_t b, limb_t prec, in bf_pow_ui() argument
2272 ret |= bf_mul(r, r, r, prec, flags); in bf_pow_ui()
2274 ret |= bf_mul(r, r, a, prec, flags); in bf_pow_ui()
2280 limb_t prec, bf_flags_t flags) in bf_pow_ui_ui() argument
2292 ret |= bf_pow_ui(r, &a, b, prec, flags); in bf_pow_ui_ui()
2757 slimb_t expn, limb_t prec, bf_flags_t flags) in bf_mul_pow_radix() argument
2767 ret |= bf_round(r, prec, flags); in bf_mul_pow_radix()
2778 if (prec == BF_PREC_INF) { in bf_mul_pow_radix()
2789 prec1 = prec + ziv_extra_bits; in bf_mul_pow_radix()
2804 !bf_can_round(r, prec, flags & BF_RND_MASK, prec1) && in bf_mul_pow_radix()
2811 ret = bf_round(r, prec, flags) | (ret & BF_ST_INEXACT); in bf_mul_pow_radix()
2880 limb_t prec, bf_flags_t flags, BOOL is_dec) in bf_atof_internal() argument
3086 ret = bfdec_normalize_and_round((bfdec_t *)a, prec, flags); in bf_atof_internal()
3093 ret = bf_normalize_and_round(a, prec, flags); in bf_atof_internal()
3116 ret = bf_mul_pow_radix(r, T, radix, expn, prec, flags); in bf_atof_internal()
3139 limb_t prec, bf_flags_t flags) in bf_atof2() argument
3141 return bf_atof_internal(r, pexponent, str, pnext, radix, prec, flags, in bf_atof2()
3146 limb_t prec, bf_flags_t flags) in bf_atof() argument
3149 return bf_atof_internal(r, &dummy_exp, str, pnext, radix, prec, flags, FALSE); in bf_atof()
3492 slimb_t E, e, prec, extra_bits, ziv_extra_bits, prec0; in bf_convert_to_radix() local
3522 prec = prec0 + ziv_extra_bits; in bf_convert_to_radix()
3525 ret = bf_pow_ui_ui(r, radix, e, prec + extra_bits, in bf_convert_to_radix()
3528 ret |= bf_mul(r, r, a, prec + extra_bits, in bf_convert_to_radix()
3531 ret |= bf_div(r, a, r, prec + extra_bits, in bf_convert_to_radix()
3538 !bf_can_round(r, r->expn, rnd_mode, prec)) { in bf_convert_to_radix()
3701 limb_t prec, bf_flags_t flags, BOOL is_dec) in bf_ftoa_internal() argument
3738 …if (bfdec_round((bfdec_t *)a1, prec, (flags & BF_RND_MASK) | BF_FLAG_RADPNT_PREC) & BF_ST_MEM_ERRO… in bf_ftoa_internal()
3744 …if (bf_round(a1, prec * radix_bits, (flags & BF_RND_MASK) | BF_FLAG_RADPNT_PREC) & BF_ST_MEM_ERROR) in bf_ftoa_internal()
3758 if (prec > 0) { in bf_ftoa_internal()
3760 for(i = 0; i < prec; i++) { in bf_ftoa_internal()
3765 n_digits = prec + n; in bf_ftoa_internal()
3791 n_digits = n + prec; in bf_ftoa_internal()
3814 n_digits = prec; in bf_ftoa_internal()
3816 … if (bfdec_round((bfdec_t *)a1, prec, (flags & BF_RND_MASK)) & BF_ST_MEM_ERROR) in bf_ftoa_internal()
3820 prec = n_digits = a1->len * LIMB_DIGITS; in bf_ftoa_internal()
3823 get_digit(a1->tab, a1->len, prec - n_digits) == 0) { in bf_ftoa_internal()
3836 n_digits = prec; in bf_ftoa_internal()
3839 prec_bits = prec * radix_bits - in bf_ftoa_internal()
3871 n_digits = prec; in bf_ftoa_internal()
3876 assert(prec != BF_PREC_INF); in bf_ftoa_internal()
3877 n_digits = 1 + bf_mul_log2_radix(prec, radix, TRUE, TRUE); in bf_ftoa_internal()
3900 prec, in bf_ftoa_internal()
3994 char *bf_ftoa(size_t *plen, const bf_t *a, int radix, limb_t prec, in bf_ftoa() argument
3997 return bf_ftoa_internal(plen, a, radix, prec, flags, FALSE); in bf_ftoa()
4043 static void bf_const_log2_internal(bf_t *T, limb_t prec) in bf_const_log2_internal() argument
4049 w = prec + 15; in bf_const_log2_internal()
4054 bf_div(T, T, Q, prec, BF_RNDN); in bf_const_log2_internal()
4067 limb_t prec) in chud_bs() argument
4078 bf_mul_ui(G, G, 6 * b - 1, prec, BF_RNDN); in chud_bs()
4079 bf_mul_ui(G, G, 6 * b - 5, prec, BF_RNDN); in chud_bs()
4081 bf_mul_ui(&T0, &T0, b, prec, BF_RNDN); in chud_bs()
4083 bf_add(&T0, &T0, &T1, prec, BF_RNDN); in chud_bs()
4084 bf_mul(P, G, &T0, prec, BF_RNDN); in chud_bs()
4088 bf_mul_ui(Q, Q, b, prec, BF_RNDN); in chud_bs()
4089 bf_mul_ui(Q, Q, b, prec, BF_RNDN); in chud_bs()
4090 bf_mul_ui(Q, Q, (uint64_t)CHUD_C * CHUD_C * CHUD_C / 24, prec, BF_RNDN); in chud_bs()
4101 chud_bs(P, Q, G, a, c, 1, prec); in chud_bs()
4102 chud_bs(&P2, &Q2, &G2, c, b, need_g, prec); in chud_bs()
4107 bf_mul(&P2, &P2, G, prec, BF_RNDN); in chud_bs()
4110 bf_mul(P, P, &Q2, prec, BF_RNDN); in chud_bs()
4111 bf_add(P, P, &P2, prec, BF_RNDN); in chud_bs()
4114 bf_mul(Q, Q, &Q2, prec, BF_RNDN); in chud_bs()
4117 bf_mul(G, G, &G2, prec, BF_RNDN); in chud_bs()
4124 static void bf_const_pi_internal(bf_t *Q, limb_t prec) in bf_const_pi_internal() argument
4131 n = prec / CHUD_BITS_PER_TERM + 1; in bf_const_pi_internal()
4133 prec1 = prec + 32; in bf_const_pi_internal()
4147 bf_mul(Q, Q, &G, prec, BF_RNDN); in bf_const_pi_internal()
4152 static int bf_const_get(bf_t *T, limb_t prec, bf_flags_t flags, in bf_const_get() argument
4154 void (*func)(bf_t *res, limb_t prec), int sign) in bf_const_get() argument
4160 prec1 = prec + ziv_extra_bits; in bf_const_get()
4161 if (c->prec < prec1) { in bf_const_get()
4165 c->prec = prec1; in bf_const_get()
4167 prec1 = c->prec; in bf_const_get()
4171 if (!bf_can_round(T, prec, flags & BF_RND_MASK, prec1)) { in bf_const_get()
4178 return bf_round(T, prec, flags); in bf_const_get()
4187 int bf_const_log2(bf_t *T, limb_t prec, bf_flags_t flags) in bf_const_log2() argument
4190 return bf_const_get(T, prec, flags, &s->log2_cache, bf_const_log2_internal, 0); in bf_const_log2()
4194 static int bf_const_pi_signed(bf_t *T, int sign, limb_t prec, bf_flags_t flags) in bf_const_pi_signed() argument
4197 return bf_const_get(T, prec, flags, &s->pi_cache, bf_const_pi_internal, in bf_const_pi_signed()
4201 int bf_const_pi(bf_t *T, limb_t prec, bf_flags_t flags) in bf_const_pi() argument
4203 return bf_const_pi_signed(T, 0, prec, flags); in bf_const_pi()
4218 typedef int ZivFunc(bf_t *r, const bf_t *a, limb_t prec, void *opaque);
4221 limb_t prec, bf_flags_t flags, in bf_ziv_rounding() argument
4230 f(r, a, prec, opaque); in bf_ziv_rounding()
4235 prec1 = prec + ziv_extra_bits; in bf_ziv_rounding()
4248 if (bf_can_round(r, prec, rnd_mode, prec1)) { in bf_ziv_rounding()
4259 return __bf_round(r, prec, flags, r->len, ret); in bf_ziv_rounding()
4264 limb_t prec, int flags) in bf_add_epsilon() argument
4273 ret = bf_add(r, r, T, prec, flags); in bf_add_epsilon()
4280 static int bf_exp_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) in bf_exp_internal() argument
4304 K = bf_isqrt((prec + 1) / 2); in bf_exp_internal()
4305 l = (prec - 1) / K + 1; in bf_exp_internal()
4307 prec1 = prec + (K + 2 * l + 18) + K + 8; in bf_exp_internal()
4352 limb_t prec, bf_flags_t flags) in check_exp_underflow_overflow() argument
4364 e_min -= (prec - 1); in check_exp_underflow_overflow()
4375 return bf_set_overflow(r, 0, prec, flags); in check_exp_underflow_overflow()
4400 int bf_exp(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_exp() argument
4419 ret = check_exp_underflow_overflow(s, r, a, a, prec, flags); in bf_exp()
4422 if (a->expn < 0 && (-a->expn) >= (prec + 2)) { in bf_exp()
4425 return bf_add_epsilon(r, r, -(prec + 2), a->sign, prec, flags); in bf_exp()
4428 return bf_ziv_rounding(r, a, prec, flags, bf_exp_internal, NULL); in bf_exp()
4431 static int bf_log_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) in bf_log_internal() argument
4464 K = bf_isqrt((prec + 1) / 2); in bf_log_internal()
4466 l = prec / (2 * K) + 1; in bf_log_internal()
4468 prec1 = prec + K + 2 * l + 32; in bf_log_internal()
4530 int bf_log(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_log() argument
4566 return bf_ziv_rounding(r, a, prec, flags, bf_log_internal, NULL); in bf_log()
4570 static int bf_pow_generic(bf_t *r, const bf_t *x, limb_t prec, void *opaque) in bf_pow_generic() argument
4579 prec1 = prec + 32; in bf_pow_generic()
4591 static int bf_pow_int(bf_t *r, const bf_t *x, limb_t prec, void *opaque) in bf_pow_int() argument
4604 prec1 = prec + ceil_log2(y1) * 2 + 8; in bf_pow_int()
4656 int bf_pow(bf_t *r, const bf_t *x, const bf_t *y, limb_t prec, bf_flags_t flags) in bf_pow() argument
4748 ret = check_exp_underflow_overflow(s, r, al, ah, prec, flags); in bf_pow()
4764 ret = bf_mul_2exp(r, e, prec, flags); in bf_pow()
4765 } else if (prec == BF_PREC_INF) { in bf_pow()
4791 if (prec < e) in bf_pow()
4794 ret = bf_ziv_rounding(r, T, prec, flags, bf_pow_int, (void *)y); in bf_pow()
4817 ret = bf_ziv_rounding(r, T, prec, flags, bf_pow_generic, (void *)y); in bf_pow()
4841 static int bf_sincos(bf_t *s, bf_t *c, const bf_t *a, limb_t prec) in bf_sincos() argument
4857 K = bf_isqrt(prec / 2); in bf_sincos()
4858 l = prec / (2 * K) + 1; in bf_sincos()
4859 prec1 = prec + 2 * K + l + 8; in bf_sincos()
4938 static int bf_cos_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) in bf_cos_internal() argument
4940 return bf_sincos(NULL, r, a, prec); in bf_cos_internal()
4943 int bf_cos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_cos() argument
4963 if (e < -(prec + 2)) { in bf_cos()
4965 return bf_add_epsilon(r, r, e, 1, prec, flags); in bf_cos()
4969 return bf_ziv_rounding(r, a, prec, flags, bf_cos_internal, NULL); in bf_cos()
4972 static int bf_sin_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) in bf_sin_internal() argument
4974 return bf_sincos(r, NULL, a, prec); in bf_sin_internal()
4977 int bf_sin(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_sin() argument
4997 if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { in bf_sin()
4999 return bf_add_epsilon(r, r, e, 1 - a->sign, prec, flags); in bf_sin()
5003 return bf_ziv_rounding(r, a, prec, flags, bf_sin_internal, NULL); in bf_sin()
5006 static int bf_tan_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) in bf_tan_internal() argument
5013 prec1 = prec + 8; in bf_tan_internal()
5021 int bf_tan(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_tan() argument
5042 if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { in bf_tan()
5044 return bf_add_epsilon(r, r, e, a->sign, prec, flags); in bf_tan()
5048 return bf_ziv_rounding(r, a, prec, flags, bf_tan_internal, NULL); in bf_tan()
5053 static int bf_atan_internal(bf_t *r, const bf_t *a, limb_t prec, in bf_atan_internal() argument
5066 K = bf_isqrt((prec + 1) / 2); in bf_atan_internal()
5067 l = prec / (2 * K) + 1; in bf_atan_internal()
5068 prec1 = prec + K + 2 * l + 32; in bf_atan_internal()
5139 int bf_atan(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_atan() argument
5151 bf_const_pi_signed(r, a->sign, prec, flags); in bf_atan()
5166 bf_const_pi_signed(r, a->sign, prec, flags); in bf_atan()
5176 if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { in bf_atan()
5178 return bf_add_epsilon(r, r, e, 1 - a->sign, prec, flags); in bf_atan()
5182 return bf_ziv_rounding(r, a, prec, flags, bf_atan_internal, (void *)FALSE); in bf_atan()
5185 static int bf_atan2_internal(bf_t *r, const bf_t *y, limb_t prec, void *opaque) in bf_atan2_internal() argument
5200 prec1 = prec + 32; in bf_atan2_internal()
5224 limb_t prec, bf_flags_t flags) in bf_atan2() argument
5226 return bf_ziv_rounding(r, y, prec, flags, bf_atan2_internal, (void *)x); in bf_atan2()
5229 static int bf_asin_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) in bf_asin_internal() argument
5238 prec1 = prec + 8; in bf_asin_internal()
5260 int bf_asin(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_asin() argument
5292 if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { in bf_asin()
5294 return bf_add_epsilon(r, r, e, a->sign, prec, flags); in bf_asin()
5298 return bf_ziv_rounding(r, a, prec, flags, bf_asin_internal, (void *)FALSE); in bf_asin()
5301 int bf_acos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) in bf_acos() argument
5315 bf_const_pi(r, prec, flags); in bf_acos()
5332 return bf_ziv_rounding(r, a, prec, flags, bf_asin_internal, (void *)TRUE); in bf_acos()
6359 slimb_t prec, int rnd_mode) in bfdec_get_rnd_add() argument
6369 digit0 = scan_digit_nz(r, l * LIMB_DIGITS - 1 - bf_max(0, prec + 1)); in bfdec_get_rnd_add()
6373 digit1 = get_digit(r->tab, l, l * LIMB_DIGITS - 1 - prec); in bfdec_get_rnd_add()
6387 get_digit(r->tab, l, l * LIMB_DIGITS - 1 - (prec - 1)) & 1; in bfdec_get_rnd_add()
6422 slimb_t i, bit_pos, pos, e_min, e_max, e_range, prec; in __bfdec_round() local
6432 prec = r->expn + prec1; in __bfdec_round()
6434 prec = prec1; in __bfdec_round()
6439 prec = prec1 - (e_min - r->expn); in __bfdec_round()
6441 prec = prec1; in __bfdec_round()
6447 add_one = bfdec_get_rnd_add(&ret, r, l, prec, rnd_mode); in __bfdec_round()
6449 if (prec <= 0) { in __bfdec_round()
6453 r->expn += 1 - prec; in __bfdec_round()
6463 bit_pos = l * LIMB_DIGITS - 1 - (prec - 1); in __bfdec_round()
6496 bit_pos = l * LIMB_DIGITS - 1 - (prec - 1); in __bfdec_round()
6519 int bfdec_round(bfdec_t *r, limb_t prec, bf_flags_t flags) in bfdec_round() argument
6523 return __bfdec_round(r, prec, flags, r->len); in bfdec_round()
6600 static int bfdec_add_internal(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, bf_flags… in bfdec_add_internal() argument
6707 ret = bfdec_normalize_and_round(r, prec, flags); in bfdec_add_internal()
6715 static int __bfdec_add(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in __bfdec_add() argument
6718 return bfdec_add_internal(r, a, b, prec, flags, 0); in __bfdec_add()
6721 static int __bfdec_sub(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in __bfdec_sub() argument
6724 return bfdec_add_internal(r, a, b, prec, flags, 1); in __bfdec_sub()
6727 int bfdec_add(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in bfdec_add() argument
6730 return bf_op2((bf_t *)r, (bf_t *)a, (bf_t *)b, prec, flags, in bfdec_add()
6734 int bfdec_sub(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in bfdec_sub() argument
6737 return bf_op2((bf_t *)r, (bf_t *)a, (bf_t *)b, prec, flags, in bfdec_sub()
6741 int bfdec_mul(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in bfdec_mul() argument
6793 ret = bfdec_normalize_and_round(r, prec, flags); in bfdec_mul()
6801 int bfdec_mul_si(bfdec_t *r, const bfdec_t *a, int64_t b1, limb_t prec, in bfdec_mul_si() argument
6808 ret |= bfdec_mul(r, a, &b, prec, flags); in bfdec_mul_si()
6813 int bfdec_add_si(bfdec_t *r, const bfdec_t *a, int64_t b1, limb_t prec, in bfdec_add_si() argument
6821 ret |= bfdec_add(r, a, &b, prec, flags); in bfdec_add_si()
6827 limb_t prec, bf_flags_t flags) in __bfdec_div() argument
6861 if (prec == BF_PREC_INF) { in __bfdec_div()
6870 prec + 2 + LIMB_DIGITS - 1) / LIMB_DIGITS; in __bfdec_div()
6873 precl = (prec + 2 + LIMB_DIGITS - 1) / LIMB_DIGITS; in __bfdec_div()
6902 if (prec == BF_PREC_INF) { in __bfdec_div()
6911 ret = bfdec_normalize_and_round(r, prec, flags); in __bfdec_div()
6919 int bfdec_div(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in bfdec_div() argument
6922 return bf_op2((bf_t *)r, (bf_t *)a, (bf_t *)b, prec, flags, in bfdec_div()
6950 limb_t prec, bf_flags_t flags, int rnd_mode) in bfdec_divrem() argument
6973 return bfdec_round(r, prec, flags); in bfdec_divrem()
7047 return bfdec_round(r, prec, flags); in bfdec_divrem()
7054 int bfdec_rem(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, in bfdec_rem() argument
7061 ret = bfdec_divrem(q, r, a, b, prec, flags, rnd_mode); in bfdec_rem()
7072 int bfdec_sqrt(bfdec_t *r, const bfdec_t *a, limb_t prec, bf_flags_t flags) in bfdec_sqrt() argument
7091 } else if (a->sign || prec == BF_PREC_INF) { in bfdec_sqrt()
7097 prec1 = bf_max(floor_div(a->expn + 1, 2) + prec, 1); in bfdec_sqrt()
7099 prec1 = prec; in bfdec_sqrt()
7146 ret = bfdec_round(r, prec, flags); in bfdec_sqrt()
7221 char *bfdec_ftoa(size_t *plen, const bfdec_t *a, limb_t prec, bf_flags_t flags) in bfdec_ftoa() argument
7223 return bf_ftoa_internal(plen, (const bf_t *)a, 10, prec, flags, TRUE); in bfdec_ftoa()
7227 limb_t prec, bf_flags_t flags) in bfdec_atof() argument
7230 return bf_atof_internal((bf_t *)r, &dummy_exp, str, pnext, 10, prec, in bfdec_atof()