38 lines
		
	
	
		
			730 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			730 B
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * isinff(x) returns 1 if x is +-infinity, else 0;
 | |
|  *
 | |
|  * isinf is a <math.h> macro in the C99 standard.  It was previously
 | |
|  * implemented as isinf and isinff functions by newlib and are still declared
 | |
|  * as such in <ieeefp.h>.  Newlib supplies it here as a function if the user
 | |
|  * chooses to use <ieeefp.h> or needs to link older code compiled with the
 | |
|  * previous <math.h> declaration.
 | |
|  */
 | |
| 
 | |
| #include "fdlibm.h"
 | |
| #include <ieeefp.h>
 | |
| 
 | |
| #undef isinff
 | |
| 
 | |
| int
 | |
| _DEFUN (isinff, (x),
 | |
| 	float x)
 | |
| {
 | |
| 	__int32_t ix;
 | |
| 	GET_FLOAT_WORD(ix,x);
 | |
| 	ix &= 0x7fffffff;
 | |
| 	return FLT_UWORD_IS_INFINITE(ix);
 | |
| }
 | |
| 
 | |
| #ifdef _DOUBLE_IS_32BITS
 | |
| 
 | |
| #undef isinf
 | |
| 
 | |
| int
 | |
| _DEFUN (isinf, (x),
 | |
| 	double x)
 | |
| {
 | |
| 	return isinff((float) x);
 | |
| }
 | |
| 
 | |
| #endif /* defined(_DOUBLE_IS_32BITS) */
 |