mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			19 lines
		
	
	
	
		
			389 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
	
		
			389 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include <limits.h>
 | 
						|
#include "ruby.h"
 | 
						|
 | 
						|
int
 | 
						|
signbit(double x)
 | 
						|
{
 | 
						|
    enum {double_per_long = sizeof(double) / sizeof(long)};
 | 
						|
    enum {long_msb = sizeof(long) * CHAR_BIT - 1};
 | 
						|
    union {double d; unsigned long i[double_per_long];} u;
 | 
						|
    unsigned long l;
 | 
						|
 | 
						|
    u.d = x;
 | 
						|
#ifdef WORDS_BIGENDIAN
 | 
						|
    l = u.i[0];
 | 
						|
#else
 | 
						|
    l = u.i[double_per_long - 1];
 | 
						|
#endif
 | 
						|
    return (int)(l >> long_msb);
 | 
						|
}
 |