Annotation of GNUtools/libg++/libiberty/copysign.c, revision 1.1.1.1

1.1       root        1: #include <ansidecl.h>
                      2: 
                      3: #ifdef __IEEE_BIG_ENDIAN
                      4: 
                      5: typedef union 
                      6: {
                      7:   double value;
                      8:   struct 
                      9:   {
                     10:     unsigned int sign : 1;
                     11:     unsigned int exponent: 11;
                     12:     unsigned int fraction0:4;
                     13:     unsigned int fraction1:16;
                     14:     unsigned int fraction2:16;
                     15:     unsigned int fraction3:16;
                     16:     
                     17:   } number;
                     18:   struct 
                     19:   {
                     20:     unsigned int sign : 1;
                     21:     unsigned int exponent: 11;
                     22:     unsigned int quiet:1;
                     23:     unsigned int function0:3;
                     24:     unsigned int function1:16;
                     25:     unsigned int function2:16;
                     26:     unsigned int function3:16;
                     27:   } nan;
                     28:   struct 
                     29:   {
                     30:     unsigned long msw;
                     31:     unsigned long lsw;
                     32:   } parts;
                     33:     long aslong[2];
                     34: } __ieee_double_shape_type;
                     35: 
                     36: #endif
                     37: 
                     38: #ifdef __IEEE_LITTLE_ENDIAN
                     39: 
                     40: typedef union 
                     41: {
                     42:   double value;
                     43:   struct 
                     44:   {
                     45: #ifdef __SMALL_BITFIELDS
                     46:     unsigned int fraction3:16;
                     47:     unsigned int fraction2:16;
                     48:     unsigned int fraction1:16;
                     49:     unsigned int fraction0: 4;
                     50: #else
                     51:     unsigned int fraction1:32;
                     52:     unsigned int fraction0:20;
                     53: #endif
                     54:     unsigned int exponent :11;
                     55:     unsigned int sign     : 1;
                     56:   } number;
                     57:   struct 
                     58:   {
                     59: #ifdef __SMALL_BITFIELDS
                     60:     unsigned int function3:16;
                     61:     unsigned int function2:16;
                     62:     unsigned int function1:16;
                     63:     unsigned int function0:3;
                     64: #else
                     65:     unsigned int function1:32;
                     66:     unsigned int function0:19;
                     67: #endif
                     68:     unsigned int quiet:1;
                     69:     unsigned int exponent: 11;
                     70:     unsigned int sign : 1;
                     71:   } nan;
                     72:   struct 
                     73:   {
                     74:     unsigned long lsw;
                     75:     unsigned long msw;
                     76:   } parts;
                     77: 
                     78:   long aslong[2];
                     79: 
                     80: } __ieee_double_shape_type;
                     81: 
                     82: #endif
                     83: 
                     84: #ifdef __IEEE_BIG_ENDIAN
                     85: typedef union
                     86: {
                     87:   float value;
                     88:   struct 
                     89:   {
                     90:     unsigned int sign : 1;
                     91:     unsigned int exponent: 8;
                     92:     unsigned int fraction0: 7;
                     93:     unsigned int fraction1: 16;
                     94:   } number;
                     95:   struct 
                     96:   {
                     97:     unsigned int sign:1;
                     98:     unsigned int exponent:8;
                     99:     unsigned int quiet:1;
                    100:     unsigned int function0:6;
                    101:     unsigned int function1:16;
                    102:   } nan;
                    103:   long p1;
                    104:   
                    105: } __ieee_float_shape_type;
                    106: #endif
                    107: 
                    108: #ifdef __IEEE_LITTLE_ENDIAN
                    109: typedef union
                    110: {
                    111:   float value;
                    112:   struct 
                    113:   {
                    114:     unsigned int fraction0: 7;
                    115:     unsigned int fraction1: 16;
                    116:     unsigned int exponent: 8;
                    117:     unsigned int sign : 1;
                    118:   } number;
                    119:   struct 
                    120:   {
                    121:     unsigned int function1:16;
                    122:     unsigned int function0:6;
                    123:     unsigned int quiet:1;
                    124:     unsigned int exponent:8;
                    125:     unsigned int sign:1;
                    126:   } nan;
                    127:   long p1;
                    128:   
                    129: } __ieee_float_shape_type;
                    130: #endif
                    131: 
                    132: 
                    133: double DEFUN(copysign, (x, y), double x AND double y)
                    134: {
                    135:   __ieee_double_shape_type a,b;
                    136:   b.value = y;  
                    137:   a.value = x;
                    138:   a.number.sign =b.number.sign;
                    139:   return a.value;
                    140: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.