Lines Matching refs:bc
2296 (x, bc) U *x; BCinfo *bc; in sulp() argument
2298 (U *x, BCinfo *bc)
2306 if (!bc->scale || (i = 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift)) <= 0)
2318 (rv, s0, bc) in bigcomp() argument
2319 U *rv; CONST char *s0; BCinfo *bc; in bigcomp()
2321 (U *rv, const char *s0, BCinfo *bc)
2327 dsign = bc->dsign;
2328 nd = bc->nd;
2329 nd0 = bc->nd0;
2330 p5 = nd + bc->e0 - 1;
2345 if (bc->rounding == 1)
2358 p2 -= bc->scale;
2370 word0(rv) = (1 + bc->scale) << Exp_shift;
2380 if (bc->rounding != 1) {
2439 for(j = bc->dp1; i++ < nd;) {
2456 if (bc->rounding != 1) {
2458 if (bc->rounding == 0) {
2466 if (bc->rounding == 0) {
2473 dval(rv) += 2.*sulp(rv,bc);
2476 bc->inexact = 0;
2490 dval(rv) -= sulp(rv,bc);
2495 dval(rv) += sulp(rv,bc);
2500 if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
2539 BCinfo bc; local
2552 bc.rounding = Flt_Rounds;
2554 bc.rounding = 1;
2556 case FE_TOWARDZERO: bc.rounding = 0; break;
2557 case FE_UPWARD: bc.rounding = 2; break;
2558 case FE_DOWNWARD: bc.rounding = 3;
2566 sign = nz0 = nz1 = nz = bc.dplen = bc.uflchk = 0;
2595 gethex(&s, &rv, bc.rounding, sign);
2615 bc.dp0 = bc.dp1 = s - s0;
2639 bc.dp1 = s - s0;
2640 bc.dplen = bc.dp1 - bc.dp0;
2645 bc.dp0 = s0 - s;
2646 bc.dp1 = bc.dp0 + bc.dplen;
2723 if (!bc.dplen)
2755 bc.e0 = e1 = e -= nf;
2850 bc.inexact = 1;
2855 bc.scale = 0;
2858 if (bc.rounding >= 2) {
2860 bc.rounding = bc.rounding == 2 ? 0 : 2;
2862 if (bc.rounding != 2)
2863 bc.rounding = 0;
2879 switch(bc.rounding) {
2944 bc.scale = 2*P;
2948 if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
2994 bc.nd = nd - nz1;
2996 bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */
3005 j += bc.dplen;
3007 if (--j < bc.dp1 && j >= bc.dp0)
3008 j = bc.dp0 - 1;
3021 for(j = bc.dp1; i < nd; ++i)
3026 bd0 = s2b(s0, nd0, nd, y, bc.dplen);
3048 if (bc.rounding != 1)
3054 j = bbe - bc.scale;
3086 bd2 += bc.scale;
3111 bc.dsign = delta->sign;
3115 if (bc.nd > nd && i <= 0) {
3116 if (bc.dsign) {
3122 if (bc.rounding != 1) {
3134 if (bc.rounding != 1) {
3140 bc.inexact = 0;
3144 if (bc.rounding) {
3145 if (bc.dsign) {
3150 else if (!bc.dsign) {
3156 if (!bc.scale || y > 2*P*Exp_msk1)
3168 if (bc.scale && (y = word0(&rv) & Exp_mask)
3193 if (!((bc.rounding>>1) ^ bc.dsign))
3199 if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
3206 if (bc.dsign)
3216 if (bc.dsign) {
3231 if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
3242 bc.inexact = 0;
3249 bc.inexact = 0;
3260 if (bc.dsign) {
3264 (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
3279 bc.dsign = 0;
3293 if (L <= (bc.scale ? (2*P+1)*Exp_msk1 : Exp_msk1))
3299 if (bc.nd >nd) {
3300 bc.uflchk = 1;
3308 if (bc.scale) {
3316 if (bc.nd >nd) {
3317 bc.uflchk = 1;
3332 if (bc.nd > nd)
3351 if (bc.dsign)
3353 dval(&rv) += sulp(&rv, &bc);
3360 dval(&rv) -= sulp(&rv, &bc);
3366 if (bc.nd >nd) {
3367 bc.uflchk = 1;
3375 bc.dsign = 1 - bc.dsign;
3381 if (bc.dsign)
3386 if (bc.nd >nd) {
3387 bc.uflchk = 1;
3409 aadj1 = bc.dsign ? aadj : -aadj;
3411 switch(bc.rounding) {
3446 if (bc.scale && y <= 2*P*Exp_msk1) {
3451 aadj1 = bc.dsign ? aadj : -aadj;
3487 if (bc.nd >nd) {
3488 bc.uflchk = 1;
3514 if (!bc.dsign)
3524 if (bc.nd == nd) {
3526 if (!bc.scale)
3533 if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
3556 bc.e0 += nz1;
3557 bigcomp(&rv, s0, &bc);
3566 if (bc.inexact) {
3577 if (bc.scale) {
3593 if (bc.inexact && !(word0(&rv) & Exp_mask)) {