Lines Matching refs:bc
2303 (x, bc) U *x; BCinfo *bc; in sulp() argument
2305 (U *x, BCinfo *bc)
2313 if (!bc->scale || (i = 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift)) <= 0)
2325 (rv, s0, bc) in bigcomp() argument
2326 U *rv; CONST char *s0; BCinfo *bc; in bigcomp()
2328 (U *rv, const char *s0, BCinfo *bc)
2334 dsign = bc->dsign;
2335 nd = bc->nd;
2336 nd0 = bc->nd0;
2337 p5 = nd + bc->e0 - 1;
2352 if (bc->rounding == 1)
2365 p2 -= bc->scale;
2377 word0(rv) = (1 + bc->scale) << Exp_shift;
2387 if (bc->rounding != 1) {
2446 for(j = bc->dp1; i++ < nd;) {
2463 if (bc->rounding != 1) {
2465 if (bc->rounding == 0) {
2473 if (bc->rounding == 0) {
2480 dval(rv) += 2.*sulp(rv,bc);
2483 bc->inexact = 0;
2497 dval(rv) -= sulp(rv,bc);
2502 dval(rv) += sulp(rv,bc);
2507 if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
2546 BCinfo bc; local
2559 bc.rounding = Flt_Rounds;
2561 bc.rounding = 1;
2563 case FE_TOWARDZERO: bc.rounding = 0; break;
2564 case FE_UPWARD: bc.rounding = 2; break;
2565 case FE_DOWNWARD: bc.rounding = 3;
2573 sign = nz0 = nz1 = nz = bc.dplen = bc.uflchk = 0;
2602 gethex(&s, &rv, bc.rounding, sign);
2622 bc.dp0 = bc.dp1 = s - s0;
2646 bc.dp1 = s - s0;
2647 bc.dplen = bc.dp1 - bc.dp0;
2652 bc.dp0 = s0 - s;
2653 bc.dp1 = bc.dp0 + bc.dplen;
2729 if (!bc.dplen)
2761 bc.e0 = e1 = e -= nf;
2856 bc.inexact = 1;
2861 bc.scale = 0;
2864 if (bc.rounding >= 2) {
2866 bc.rounding = bc.rounding == 2 ? 0 : 2;
2868 if (bc.rounding != 2)
2869 bc.rounding = 0;
2885 switch(bc.rounding) {
2950 bc.scale = 2*P;
2954 if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
3000 bc.nd = nd - nz1;
3002 bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */
3011 j += bc.dplen;
3013 if (--j < bc.dp1 && j >= bc.dp0)
3014 j = bc.dp0 - 1;
3027 for(j = bc.dp1; i < nd; ++i)
3032 bd0 = s2b(s0, nd0, nd, y, bc.dplen);
3054 if (bc.rounding != 1)
3060 j = bbe - bc.scale;
3092 bd2 += bc.scale;
3117 bc.dsign = delta->sign;
3121 if (bc.nd > nd && i <= 0) {
3122 if (bc.dsign) {
3128 if (bc.rounding != 1) {
3140 if (bc.rounding != 1) {
3146 bc.inexact = 0;
3150 if (bc.rounding) {
3151 if (bc.dsign) {
3156 else if (!bc.dsign) {
3162 if (!bc.scale || y > 2*P*Exp_msk1)
3174 if (bc.scale && (y = word0(&rv) & Exp_mask)
3199 if (!((bc.rounding>>1) ^ bc.dsign))
3205 if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
3212 if (bc.dsign)
3222 if (bc.dsign) {
3237 if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
3248 bc.inexact = 0;
3255 bc.inexact = 0;
3266 if (bc.dsign) {
3270 (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
3285 bc.dsign = 0;
3299 if (L <= (bc.scale ? (2*P+1)*Exp_msk1 : Exp_msk1))
3305 if (bc.nd >nd) {
3306 bc.uflchk = 1;
3314 if (bc.scale) {
3322 if (bc.nd >nd) {
3323 bc.uflchk = 1;
3338 if (bc.nd > nd)
3357 if (bc.dsign)
3359 dval(&rv) += sulp(&rv, &bc);
3366 dval(&rv) -= sulp(&rv, &bc);
3372 if (bc.nd >nd) {
3373 bc.uflchk = 1;
3381 bc.dsign = 1 - bc.dsign;
3387 if (bc.dsign)
3392 if (bc.nd >nd) {
3393 bc.uflchk = 1;
3415 aadj1 = bc.dsign ? aadj : -aadj;
3417 switch(bc.rounding) {
3452 if (bc.scale && y <= 2*P*Exp_msk1) {
3457 aadj1 = bc.dsign ? aadj : -aadj;
3493 if (bc.nd >nd) {
3494 bc.uflchk = 1;
3520 if (!bc.dsign)
3530 if (bc.nd == nd) {
3532 if (!bc.scale)
3539 if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
3562 bc.e0 += nz1;
3563 bigcomp(&rv, s0, &bc);
3572 if (bc.inexact) {
3583 if (bc.scale) {
3599 if (bc.inexact && !(word0(&rv) & Exp_mask)) {