Ruby 2.0.0p247(2013-06-27revision41674)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

signbit.c
Go to the documentation of this file.
1 #include <limits.h>
2 #include "ruby.h"
3
4 int
5 signbit(double x)
6 {
7 enum {double_per_long = sizeof(double) / sizeof(long)};
8 enum {long_msb = sizeof(long) * CHAR_BIT - 1};
9 union {double d; unsigned long i[double_per_long];} u;
10 unsigned long l;
11
12 u.d = x;
13 #ifdef WORDS_BIGENDIAN
14 l = u.i[0];
15 #else
16 l = u.i[double_per_long - 1];
17 #endif
18 return (int)(l >> long_msb);
19 }
20