|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.