Lines Matching refs:bc
2288 (x, bc) U *x; BCinfo *bc; in sulp() argument
2290 (U *x, BCinfo *bc)
2298 if (!bc->scale || (i = 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift)) <= 0)
2310 (rv, s0, bc) in bigcomp() argument
2311 U *rv; CONST char *s0; BCinfo *bc; in bigcomp()
2313 (U *rv, const char *s0, BCinfo *bc)
2319 dsign = bc->dsign;
2320 nd = bc->nd;
2321 nd0 = bc->nd0;
2322 p5 = nd + bc->e0 - 1;
2337 if (bc->rounding == 1)
2350 p2 -= bc->scale;
2362 word0(rv) = (1 + bc->scale) << Exp_shift;
2372 if (bc->rounding != 1) {
2431 for(j = bc->dp1; i++ < nd;) {
2448 if (bc->rounding != 1) {
2450 if (bc->rounding == 0) {
2458 if (bc->rounding == 0) {
2465 dval(rv) += 2.*sulp(rv,bc);
2468 bc->inexact = 0;
2482 dval(rv) -= sulp(rv,bc);
2487 dval(rv) += sulp(rv,bc);
2492 if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
2531 BCinfo bc; local
2544 bc.rounding = Flt_Rounds;
2546 bc.rounding = 1;
2548 case FE_TOWARDZERO: bc.rounding = 0; break;
2549 case FE_UPWARD: bc.rounding = 2; break;
2550 case FE_DOWNWARD: bc.rounding = 3;
2558 sign = nz0 = nz1 = nz = bc.dplen = bc.uflchk = 0;
2587 gethex(&s, &rv, bc.rounding, sign);
2607 bc.dp0 = bc.dp1 = s - s0;
2631 bc.dp1 = s - s0;
2632 bc.dplen = bc.dp1 - bc.dp0;
2637 bc.dp0 = s0 - s;
2638 bc.dp1 = bc.dp0 + bc.dplen;
2715 if (!bc.dplen)
2747 bc.e0 = e1 = e -= nf;
2842 bc.inexact = 1;
2847 bc.scale = 0;
2850 if (bc.rounding >= 2) {
2852 bc.rounding = bc.rounding == 2 ? 0 : 2;
2854 if (bc.rounding != 2)
2855 bc.rounding = 0;
2871 switch(bc.rounding) {
2936 bc.scale = 2*P;
2940 if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
2986 bc.nd = nd - nz1;
2988 bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */
2997 j += bc.dplen;
2999 if (--j < bc.dp1 && j >= bc.dp0)
3000 j = bc.dp0 - 1;
3013 for(j = bc.dp1; i < nd; ++i)
3018 bd0 = s2b(s0, nd0, nd, y, bc.dplen);
3040 if (bc.rounding != 1)
3046 j = bbe - bc.scale;
3078 bd2 += bc.scale;
3103 bc.dsign = delta->sign;
3107 if (bc.nd > nd && i <= 0) {
3108 if (bc.dsign) {
3114 if (bc.rounding != 1) {
3126 if (bc.rounding != 1) {
3132 bc.inexact = 0;
3136 if (bc.rounding) {
3137 if (bc.dsign) {
3142 else if (!bc.dsign) {
3148 if (!bc.scale || y > 2*P*Exp_msk1)
3160 if (bc.scale && (y = word0(&rv) & Exp_mask)
3185 if (!((bc.rounding>>1) ^ bc.dsign))
3191 if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
3198 if (bc.dsign)
3208 if (bc.dsign) {
3223 if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
3234 bc.inexact = 0;
3241 bc.inexact = 0;
3252 if (bc.dsign) {
3256 (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
3271 bc.dsign = 0;
3285 if (L <= (bc.scale ? (2*P+1)*Exp_msk1 : Exp_msk1))
3291 if (bc.nd >nd) {
3292 bc.uflchk = 1;
3300 if (bc.scale) {
3308 if (bc.nd >nd) {
3309 bc.uflchk = 1;
3324 if (bc.nd > nd)
3343 if (bc.dsign)
3345 dval(&rv) += sulp(&rv, &bc);
3352 dval(&rv) -= sulp(&rv, &bc);
3358 if (bc.nd >nd) {
3359 bc.uflchk = 1;
3367 bc.dsign = 1 - bc.dsign;
3373 if (bc.dsign)
3378 if (bc.nd >nd) {
3379 bc.uflchk = 1;
3401 aadj1 = bc.dsign ? aadj : -aadj;
3403 switch(bc.rounding) {
3438 if (bc.scale && y <= 2*P*Exp_msk1) {
3443 aadj1 = bc.dsign ? aadj : -aadj;
3479 if (bc.nd >nd) {
3480 bc.uflchk = 1;
3506 if (!bc.dsign)
3516 if (bc.nd == nd) {
3518 if (!bc.scale)
3525 if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
3548 bc.e0 += nz1;
3549 bigcomp(&rv, s0, &bc);
3558 if (bc.inexact) {
3569 if (bc.scale) {
3585 if (bc.inexact && !(word0(&rv) & Exp_mask)) {