188: carry = rv = 0;
189: b = d2b(dval(d), &e, &bdif);
190: if (b == NULL) {
379: denorm = sign = nz0 = nz = 0;
380: dval(&rv) = 0.;
381: rvb = 0;
573: k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1;
574: dval(&rv) = y;
575: if (k > 9)
576: dval(&rv) = tens[k - 9] * dval(&rv) + z;
577: bd0 = 0;
591: i = fivesbits[e] + mantbits(&rv) <= P;
592: /* rv = */ rounded_product(dval(&rv), tens[e]);
593: if (rvOK(&rv, fpi, exp, bits, i, rd, &irv)) {
608: e1 -= i;
609: dval(&rv) *= tens[i];
610: #ifdef VAX
614: vax_ovfl_check:
615: dval(&adj) = dval(&rv);
616: word0(&adj) -= P*Exp_msk1;
617: /* adj = */ rounded_product(dval(&adj), tens[e2]);
618: if ((word0(&adj) & Exp_mask)
621: word0(&adj) += P*Exp_msk1;
622: dval(&rv) = dval(&adj);
623: #else
624: /* rv = */ rounded_product(dval(&rv), tens[e2]);
625: #endif
635: else if (e >= -Ten_pmax) {
636: /* rv = */ rounded_quotient(dval(&rv), tens[-e]);
637: if (rvOK(&rv, fpi, exp, bits, 0, rd, &irv)) {
653: if ( (i = e1 & 15) !=0)
654: dval(&rv) *= tens[i];
655: if (e1 &= ~15) {
661: word0(&rv) |= Bias << Exp_shift1;
662: dval(&rv) *= bigtens[n_bigtens-1];
663: e1 -= 1 << (n_bigtens-1);
669: if (e1 & 1)
670: dval(&rv) *= bigtens[j];
671: }
675: if ( (i = e1 & 15) !=0)
676: dval(&rv) /= tens[i];
677: if (e1 &= ~15) {
683: word0(&rv) |= Bias << Exp_shift1;
684: dval(&rv) *= tinytens[n_bigtens-1];
685: e1 -= 1 << (n_bigtens-1);
691: if (e1 & 1)
692: dval(&rv) *= tinytens[j];
693: }
702: #endif
703: rvb = d2b(dval(&rv), &rve, &rvbits); /* rv = rvb * 2^rve */
704: if (rvb == NULL)
935: }
936: if ((dval(&adj) = ratio(delta, bs)) <= 2.) {
937: adj1:
949: }
950: adj0 = dval(&adj) = 1.;
951: }
952: else {
953: adj0 = dval(&adj) *= 0.5;
954: if (dsign) {
957: }
958: if (dval(&adj) < 2147483647.) {
959: L = adj0;
976: }
977: dval(&adj) = L;
978: }
991: }
992: ab = d2b(dval(&adj), &abe, &abits);
993: if (ab == NULL)
1056: /* Can we stop now? */
1057: tol = dval(&adj) * 5e-16; /* > max rel error */
1058: dval(&adj) = adj0 - .5;
1059: if (dval(&adj) < -tol) {
1060: if (adj0 > tol) {
1064: }
1065: else if (dval(&adj) > tol && adj0 < 1. - tol) {
1066: irv |= inex;