fpi
(fpi, be, bits, kindp, mode, ndigits, decpt, rve)
FPI *fpi; int be; ULong *bits;
(FPI *fpi, int be, ULong *bits, int *kindp, int mode, int ndigits, int *decpt, char **rve)
b = bitstob(bits, nbits = fpi->nbits, &bbits);
if ( (rdir = fpi->rounding - 1) !=0) {
if (be - i++ < fpi->emin && mode != 3 && mode != 5) {
i = be - fpi->emin + 1;
if (bbits == 1 && be0 > fpi->emin + 1) {
extern char* __gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
FPI *fpi, fpi1;
fpi = &fpi0;
fpi = &fpi1;
switch(fpi->rounding) {
switch(fpi->rounding) {
nbits = fpi->nbits;
*exp = fpi->emin;
nbits = fpi->nbits;
if (e > fpi->emax) {
if (e < fpi->emin) {
n = fpi->emin - e;
switch (fpi->rounding) {
*exp = fpi->emin;
e = fpi->emin;
switch(fpi->rounding) {
if (nbits == fpi->nbits - 1
if (++e > fpi->emax)
gethex(sp, fpi, exp, bp, sign)
CONST char **sp; FPI *fpi; Long *exp; Bigint **bp; int sign;
gethex( CONST char **sp, FPI *fpi, Long *exp, Bigint **bp, int sign)
hexnan(sp, fpi, x0)
CONST char **sp; FPI *fpi; ULong *x0;
hexnan( CONST char **sp, FPI *fpi, ULong *x0)
nbits = fpi->nbits;
ret = gdtoa(&fpi, be, vbits, &kind, mode, ndigits, decpt, rve);
FPI fpi = {
fpi.rounding ^= (fpi.rounding >> 1) & p->ext_sign;
static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, SI };
FPI fpi1 = fpi;
#define fpi1 fpi
copybits(bits, fpi.nbits, bb);
if (rve > fpi->emax) {
switch(fpi->rounding & 3) {
*exp = fpi->emax;
be = b + ((fpi->nbits + 31) >> 5);
if ((j = fpi->nbits & 0x1f))
*exp = fpi->emax + 1;
(d, fpi, exp, bits, exact, rd, irv)
U *d; FPI *fpi; Long *exp; ULong *bits; int exact, rd, *irv;
(U *d, FPI *fpi, Long *exp, ULong *bits, int exact, int rd, int *irv)
bdif -= nb = fpi->nbits;
fpi->rounding ==
if (e < fpi->emin) {
k = fpi->emin - e;
e = fpi->emin;
if (k > nb || fpi->sudden_underflow) {
else if (e > fpi->emax) {
e = fpi->emax + 1;
(s00, se, fpi, exp, bits)
CONST char *s00; char **se; FPI *fpi; Long *exp; ULong *bits;
(CONST char *s00, char **se, FPI *fpi, Long *exp, ULong *bits)
nbits = fpi->nbits;
irv = gethex(&s, fpi, exp, &rvb, sign);
sudden_underflow = fpi->sudden_underflow;
*exp = fpi->emax + 1;
irv = hexnan(&s, fpi, bits);
switch(fpi->rounding & 3) {
if (rvOK(&rv, fpi, exp, bits, 1, rd, &irv)) {
if (rvOK(&rv, fpi, exp, bits, i, rd, &irv)) {
if (rvOK(&rv, fpi, exp, bits, 0, rd, &irv)) {
if (rvOK(&rv, fpi, exp, bits, 0, rd, &irv)) {
if (e2 > fpi->emax + 1)
if (e2 < (emin = fpi->emin)) {
k = strtodg(s, sp, fpi, &exp, bits);
FPI *fpi, fpi1;
fpi = &fpi0;
fpi = &fpi1;
k = strtodg(s, sp, fpi, &exp, bits);
FPI *fpi, fpi1;
fpi = &fpi0;
fpi = &fpi1;
k = strtodg(s, sp, fpi, &exp, bits);
FPI *fpi, fpi1;
fpi = &fpi0;
fpi = &fpi1;
k = strtodg(s, sp, fpi, &exp, bits);