1 /************************************************************************* 2 * 3 * $Id$ 4 * 5 * Copyright (C) 2001 Bjorn Reese <breese (at) users.sourceforge.net> 6 * 7 * Permission to use, copy, modify, and distribute this software for any 8 * purpose with or without fee is hereby granted, provided that the above 9 * copyright notice and this permission notice appear in all copies. 10 * 11 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 12 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 13 * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND 14 * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. 15 * 16 ************************************************************************/ 17 18 #ifndef TRIO_NAN_H 19 #define TRIO_NAN_H 20 21 #include "triodef.h" 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 enum { 28 TRIO_FP_INFINITE, 29 TRIO_FP_NAN, 30 TRIO_FP_NORMAL, 31 TRIO_FP_SUBNORMAL, 32 TRIO_FP_ZERO 33 }; 34 35 /* 36 * Return NaN (Not-a-Number). 37 */ 38 TRIO_PUBLIC double trio_nan TRIO_PROTO((void)); 39 40 /* 41 * Return positive infinity. 42 */ 43 TRIO_PUBLIC double trio_pinf TRIO_PROTO((void)); 44 45 /* 46 * Return negative infinity. 47 */ 48 TRIO_PUBLIC double trio_ninf TRIO_PROTO((void)); 49 50 /* 51 * Return negative zero. 52 */ 53 TRIO_PUBLIC double trio_nzero TRIO_PROTO((TRIO_NOARGS)); 54 55 /* 56 * If number is a NaN return non-zero, otherwise return zero. 57 */ 58 TRIO_PUBLIC int trio_isnan TRIO_PROTO((double number)); 59 60 /* 61 * If number is positive infinity return 1, if number is negative 62 * infinity return -1, otherwise return 0. 63 */ 64 TRIO_PUBLIC int trio_isinf TRIO_PROTO((double number)); 65 66 /* 67 * If number is finite return non-zero, otherwise return zero. 68 */ 69 #if 0 70 /* Temporary fix - these 2 routines not used in libxml */ 71 TRIO_PUBLIC int trio_isfinite TRIO_PROTO((double number)); 72 73 TRIO_PUBLIC int trio_fpclassify TRIO_PROTO((double number)); 74 #endif 75 76 TRIO_PUBLIC int trio_signbit TRIO_PROTO((double number)); 77 78 TRIO_PUBLIC int trio_fpclassify_and_signbit TRIO_PROTO((double number, int *is_negative)); 79 80 #ifdef __cplusplus 81 } 82 #endif 83 84 #endif /* TRIO_NAN_H */ 85