| #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 | 
 |  | 
 | #if defined(__IEEE_BIG_ENDIAN) || defined(__IEEE_LITTLE_ENDIAN) | 
 |  | 
 | double | 
 | copysign (double x, double y) | 
 | { | 
 |   __ieee_double_shape_type a,b; | 
 |   b.value = y;   | 
 |   a.value = x; | 
 |   a.number.sign =b.number.sign; | 
 |   return a.value; | 
 | } | 
 |  | 
 | #else | 
 |  | 
 | double | 
 | copysign (double x, double y) | 
 | { | 
 |   if ((x < 0 && y > 0) || (x > 0 && y < 0)) | 
 |     return -x; | 
 |   return x; | 
 | } | 
 |  | 
 | #endif |