int main (void) { #define DECIMAL_PRINTF_BUF_SIZE 65 /* ((DECIMAL128_PMAX + 14) * 2) + 1 */ char digits[DECIMAL_PRINTF_BUF_SIZE]; int exp; /* the exponent */ int is_neg; /* is negative */ int is_nan; /* is not a number */ int is_inf; /* is infinite */ int i; for (i=0; i<d32_s; ++i) { fprintf (stdout, "__get_digits_d32(%HeDF) in: %s:%d\n", d32[i].d, __FILE__, __LINE__ - 1); memset (&digits[0], '\0', DECIMAL_PRINTF_BUF_SIZE); __get_digits_d32 (d32[i].d, digits + 1, &exp, &is_neg, &is_nan, &is_inf); out_digits (digits, is_neg, exp); _SC_P (__FILE__, d32[i].line, d32[i].expect, &digits[0]); } for (i=0; i<d64_s; ++i) { fprintf (stdout, "__get_digits_d64(%DeDD) in: %s:%d\n", d64[i].d, __FILE__, __LINE__ - 1); __get_digits_d64 (d64[i].d, digits + 1, &exp, &is_neg, &is_nan, &is_inf); out_digits (digits, is_neg, exp); _SC_P (__FILE__, d64[i].line, d64[i].expect, &digits[0]); } for (i=0; i<d128_s; ++i) { fprintf (stdout, "__get_digits_d128(%DDeDL) in: %s:%d\n", d128[i].d, __FILE__, __LINE__ - 1); __get_digits_d128 (d128[i].d, digits + 1, &exp, &is_neg, &is_nan, &is_inf); out_digits (digits, is_neg, exp); _SC_P (__FILE__, d128[i].line, d128[i].expect, &digits[0]); } _REPORT (); /* fail comes from scaffold.c */ return fail; }
void out_fix(fix fval) { register int a = (fval & 0xfff00000) >> 20, f = fval & 0xfffff, j=0; register int delta; out("R "); if (a>0x7ff) { out("-"); a = 0x1000 - a; if (f>0) { f = 0x100000 - f; a--; } } do { digits[j] = a % 10; j++; a = a / 10; } while (a > 0); out_digits(j); out("."); f = 10*f + 5; delta = 10; do { if (delta>0x100000) f = f + 0x80000 - (delta / 2); fprintf(file_output, "%c", (f / 0x100000) + '0'); f = 10 * (f % 0x100000); delta = delta*10; } while (f>delta); }
int main(int argc, char* argv[]) { struct timeval now; gettimeofday(&now, NULL); printf("%ld.", now.tv_sec); out_digits((int)now.tv_usec/10000); printf("\n"); return 0; }
void out_int(unsigned val, unsigned base) { register unsigned j=0, acc=val; if (val < 0) internal_error_1("out_int (val=%d)", val); if (base==16) out("H "); else if (base==10) out("D "); else if (base==8) out("O "); else internal_error_1("out_int (base=%d)", base); do { digits[j] = acc % base; j++; acc = acc / base; } while (acc > 0); /* if ((base==16) && (ec>=0x100)) { while (j<4) { digits[j] = 0; j++; } } */ out_digits(j); }