1 /* 2 $Id$ 3 */ 4 5 #include "typesf2c.h" 6 #include <stdio.h> 7 #if defined(SOLARIS) 8 #define WORKS_FOR 1 9 #endif 10 11 #if defined(CRAY) || defined(WIN32) 12 #define is_this_val_okay_ IS_THIS_VAL_OKAY 13 #endif 14 15 /* */ 16 17 #if defined(WORKS_FOR) 18 #include <ieeefp.h> 19 #endif 20 is_this_val_okay_(double * value)21int FATR is_this_val_okay_(double *value) 22 { 23 #if defined(WORKS_FOR) 24 /* 25 -1 unknown 26 0 zero 27 1 nan 28 2 infinity 29 3 nonzero 30 */ 31 double val; 32 fpclass_t fp_res; 33 int ret_val; 34 35 val = *value; 36 fp_res = fpclass (val); 37 38 if (fp_res == FP_NZERO || fp_res == FP_PZERO) 39 { 40 ret_val = 0; 41 } 42 else if (fp_res == FP_SNAN || fp_res == FP_QNAN) 43 { 44 ret_val = 1; 45 } 46 else if (fp_res == FP_NINF || fp_res == FP_PINF) 47 { 48 ret_val = 2; 49 } 50 else if (fp_res == FP_NDENORM || fp_res == FP_PDENORM || fp_res == FP_NNORM || fp_res == FP_PNORM) 51 { 52 ret_val = 3; 53 } 54 else 55 { 56 ret_val = -1; 57 } 58 return ret_val; 59 #else 60 return (int) 3; 61 #endif 62 } 63