Annotation of GNUtools/libg++/libiberty/copysign.c, revision 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.