home *** CD-ROM | disk | FTP | other *** search
- #include <ansidecl.h>
-
- #ifdef __IEEE_BIG_ENDIAN
-
- typedef union
- {
- double value;
- struct
- {
- unsigned int sign : 1;
- unsigned int exponent: 11;
- unsigned int fraction0:4;
- unsigned int fraction1:16;
- unsigned int fraction2:16;
- unsigned int fraction3:16;
-
- } number;
- struct
- {
- unsigned int sign : 1;
- unsigned int exponent: 11;
- unsigned int quiet:1;
- unsigned int function0:3;
- unsigned int function1:16;
- unsigned int function2:16;
- unsigned int function3:16;
- } nan;
- struct
- {
- unsigned long msw;
- unsigned long lsw;
- } parts;
- long aslong[2];
- } __ieee_double_shape_type;
-
- #endif
-
- #ifdef __IEEE_LITTLE_ENDIAN
-
- typedef union
- {
- double value;
- struct
- {
- #ifdef __SMALL_BITFIELDS
- unsigned int fraction3:16;
- unsigned int fraction2:16;
- unsigned int fraction1:16;
- unsigned int fraction0: 4;
- #else
- unsigned int fraction1:32;
- unsigned int fraction0:20;
- #endif
- unsigned int exponent :11;
- unsigned int sign : 1;
- } number;
- struct
- {
- #ifdef __SMALL_BITFIELDS
- unsigned int function3:16;
- unsigned int function2:16;
- unsigned int function1:16;
- unsigned int function0:3;
- #else
- unsigned int function1:32;
- unsigned int function0:19;
- #endif
- unsigned int quiet:1;
- unsigned int exponent: 11;
- unsigned int sign : 1;
- } nan;
- struct
- {
- unsigned long lsw;
- unsigned long msw;
- } parts;
-
- long aslong[2];
-
- } __ieee_double_shape_type;
-
- #endif
-
- #ifdef __IEEE_BIG_ENDIAN
- typedef union
- {
- float value;
- struct
- {
- unsigned int sign : 1;
- unsigned int exponent: 8;
- unsigned int fraction0: 7;
- unsigned int fraction1: 16;
- } number;
- struct
- {
- unsigned int sign:1;
- unsigned int exponent:8;
- unsigned int quiet:1;
- unsigned int function0:6;
- unsigned int function1:16;
- } nan;
- long p1;
-
- } __ieee_float_shape_type;
- #endif
-
- #ifdef __IEEE_LITTLE_ENDIAN
- typedef union
- {
- float value;
- struct
- {
- unsigned int fraction0: 7;
- unsigned int fraction1: 16;
- unsigned int exponent: 8;
- unsigned int sign : 1;
- } number;
- struct
- {
- unsigned int function1:16;
- unsigned int function0:6;
- unsigned int quiet:1;
- unsigned int exponent:8;
- unsigned int sign:1;
- } nan;
- long p1;
-
- } __ieee_float_shape_type;
- #endif
-
-
- double DEFUN(copysign, (x, y), double x AND double y)
- {
- __ieee_double_shape_type a,b;
- b.value = y;
- a.value = x;
- a.number.sign =b.number.sign;
- return a.value;
- }
-