Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
signbit.c
Go to the documentation of this file.
1#include <limits.h>
2#include "ruby.h"
3
4int
5signbit(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}
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
Historical shim for <limits.h>.
#define CHAR_BIT
Definition: limits.h:44
int signbit(double x)
Definition: signbit.c:5