From b7cd0209b8c7db16ccb30f6369a7fc4d9d4e6d38 Mon Sep 17 00:00:00 2001 From: jjgarcia Date: Wed, 22 May 2002 16:51:15 +0000 Subject: [PATCH] Use ISO-C99 functions to check whether a real number is finite. --- src/c/print.d | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/c/print.d b/src/c/print.d index 1b1e77778..5ef794e51 100644 --- a/src/c/print.d +++ b/src/c/print.d @@ -393,8 +393,7 @@ edit_double(int n, double d, int *sp, char *s, int *ep) char *p, buff[FPRC + 9]; int i; -#ifdef IEEEFLOAT - if ((*((int *)&d +HIND) & 0x7ff00000) == 0x7ff00000) + if (isnan(d) || !finite(d)) FEerror("Can't print a non-number.", 0); else sprintf(buff, "%*.*e",FPRC+8,FPRC, d); @@ -407,15 +406,6 @@ edit_double(int n, double d, int *sp, char *s, int *ep) *sp = 1; if (buff[0] == '-') *sp *= -1; -#else - sprintf(buff, "%*.*e",FPRC+7,FPRC, d); - /* "-D.MMMMMMMMMMMMMMMe+EE" */ - /* 0123456789012345678901 */ - *sp = 1; - if (buff[0] == '-') - *sp *= -1; - *ep = (buff[FPRC+5]-'0')*10 + (buff[FPRC+6]-'0'); -#endif /* IEEEFLOAT */ if (buff[FPRC+4] == '-') *ep *= -1;