/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 11:53:29 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: FloatOpsImpl, module: FloatOpsImpl */ /* switches: cfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> #define XRM←BITXOR(x, y) (((word)(x)) ↑ ((word)(y))) #define XRM←BITOR(x, y) (((word)(x)) | ((word)(y))) #define XRM←BITAND(x, y) (((word)(x)) & ((word)(y))) #define XRM←BITLSHIFT(x, y) ((word)(x) << (word)(y)) #define XRM←BITRSHIFT(x, y) ((word)(x) >> (word)(y)) static char versionStamp[] = "@(#)mob←version [2808075000,2594761725] FloatOpsImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef word (*fPt)(); typedef struct {word f0, f1;} W2; #define SOURCE(p, l) /* source p, l */ #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) static float fc6 = 0.0; #define IOP2(op, x, y) ( (word) ((x) op (y)) ) static void NoName←Q5268(); static void FloatOpsImpl←P0(); extern word XR←RealSub(); extern word XR←RealAdd(); extern word XR←RealMul(); extern word XR←RealDiv(); extern word XR←FloatInt(); extern word XR←FloatCard(); extern word XR←REAL32←Fix(); extern word XR←REAL32←Round(); extern word XR←REAL32←Floor(); extern word XR←REAL32←Ceiling(); extern word XR←RealNeg(); extern word XR←RealAbs(); extern word XR←RealMin(); extern word XR←RealMax(); extern word XR←RealGt(); extern word XR←RealGe(); extern word XR←RealEq(); static word SoftCmp←P1500(); extern word XR←RealLt(); extern word XR←RealLe(); extern word XR←SignedPwr(); extern word XR←UnsignedPwr(); extern word XR←RealPwr(); static word SetExceptionFlag←P1860(); static word RaiseFloatError←P1920(); static word GetStickyFlags←P1980(); static word SetStickyFlags←P2040(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\247\137\322\370\300\232\250\353\375\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\313\044\005\371\300\370\023\007\040\100\150\000\000"}; static struct { word f0[6]; word f6; word f7; word f8; word f9; word f10; word f11; word f12; word f13; word f14; word f15; word f16; word f17; word f18; word f19; word f20; word f21; word f22; word f23; word f24; word f25; word f26; word f27; word f28; word f29; word f30; word f31; word f32; word f33; word f34; word f35; word f36; word f37; word f38; word f39; word f40; word f41; word f42; word f43; word f44; word f45; word f46; word f47; word f48; word f49; word f50; word f51; word f52; word f53; word f54; word f55; word f56; word f57; word f58; word f59; word f60; word f61[4]; } globalframe = { {0}, (word) SetStickyFlags←P2040, 0, (word) GetStickyFlags←P1980, 0, (word) RaiseFloatError←P1920, 0, (word) SetExceptionFlag←P1860, 0, (word) XR←RealPwr, 0, (word) XR←UnsignedPwr, 0, (word) XR←SignedPwr, 0, (word) XR←RealLe, 0, (word) XR←RealLt, 0, (word) SoftCmp←P1500, 0, (word) XR←RealEq, 0, (word) XR←RealGe, 0, (word) XR←RealGt, 0, (word) XR←RealMax, 0, (word) XR←RealMin, 0, (word) XR←RealAbs, 0, (word) XR←RealNeg, 0, (word) XR←REAL32←Ceiling, 0, (word) XR←REAL32←Floor, 0, (word) XR←REAL32←Round, 0, (word) XR←REAL32←Fix, 0, (word) XR←FloatCard, 0, (word) XR←FloatInt, 0, (word) XR←RealDiv, 0, (word) XR←RealMul, 0, (word) XR←RealAdd, 0, (word) XR←RealSub, 0, (word) FloatOpsImpl←P0, {0} }; static void NoName←Q5268() { register ptr gf←c0294 = (ptr) &globalframe; word var←c23052; (void) XR←DeclareGlobalFrame((word) "FloatOpsImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c0294)+240) /* var←c19180 */ ); var←c23052 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string2)), 11); (* (( (ptr) gf←c0294)+63)/* var←c22988 */ ) = var←c23052; var←c23052 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string3)), 36); (* (( (ptr) gf←c0294)+62)/* var←c22924 */ ) = var←c23052; (void) XR←ImportProcS(var←c23052, 67633922); var←c23052 = (word) XR←ExportInterface((word) "FloatOps", (word) XR←GetTypeIndexS((word) (&string4)), 23); (* (( (ptr) gf←c0294)+64)/* var←c23084 */ ) = var←c23052; (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+232)/* var←c19148 */ , 67633154); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+224)/* var←c19116 */ , 67633410); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+216)/* var←c19084 */ , 67633666); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+208)/* var←c19052 */ , 67633922); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+200)/* var←c19020 */ , 67372033); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+192)/* var←c18988 */ , 67372289); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+184)/* var←c18956 */ , 67372545); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+176)/* var←c18924 */ , 67372801); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+168)/* var←c18892 */ , 67373057); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+160)/* var←c18860 */ , 67373313); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+152)/* var←c18828 */ , 67373569); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+144)/* var←c18796 */ , 67373825); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+136)/* var←c18764 */ , 67636226); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+128)/* var←c18732 */ , 67636482); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+120)/* var←c18700 */ , 67636738); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+112)/* var←c18668 */ , 67636994); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+104)/* var←c18636 */ , 67637250); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+96)/* var←c18604 */ , 67637506); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+88)/* var←c18572 */ , 67637762); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+80)/* var←c18540 */ , 67638018); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+72)/* var←c18508 */ , 67638274); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+64)/* var←c18476 */ , 67638530); (void) XR←ExportProcS(var←c23052, (word) (( (bPt) gf←c0294)+56)/* var←c18444 */ , 67638786); } static void FloatOpsImpl←P0(formal←c036, formal←c035) word formal←c036; word formal←c035; { /* FloatOpsImpl: */ } extern word XR←RealSub(r0←v5272, r1←v5300) word r0←v5272; word r1←v5300; { word var←c5344; word sMask←v8608 = 2147483648; /* SoftSub: */ SOURCE(2423, 2584) SOURCE(2560, 59) r1←v5300 = (word) XRM←BITXOR(r1←v5300, sMask←v8608); SOURCE(2621, 136) if (((word) XRM←BITOR(r0←v5272, sMask←v8608) < (word) XRM←BITOR(r1←v5300, sMask←v8608))) { SOURCE(2719, 40) { word temp←v8652; SOURCE(2721, 16) temp←v8652 = r0←v5272; SOURCE(2739, 7) r0←v5272 = r1←v5300; SOURCE(2748, 9) r1←v5300 = temp←v8652; }; }; SOURCE(2762, 2250) { word guard←v8696 = 0; word r0s←v8724; word r1s←v8752; word resExp←v8780; word dExp←v8808; SOURCE(2783, 58) r0s←v8724 = (word) XRM←BITAND(r0←v5272, sMask←v8608); SOURCE(2843, 58) r1s←v8752 = (word) XRM←BITAND(r1←v5300, sMask←v8608); SOURCE(2903, 20) resExp←v8780 = (((unsigned)r0←v5272 << 1) >> 24); SOURCE(2925, 25) dExp←v8808 = (resExp←v8780 - (((unsigned)r1←v5300 << 1) >> 24)); if ((resExp←v8780 == 255)) { SOURCE(2990, 29) return((word) RaiseFloatError←P1920(1)); } else { if ((dExp←v8808 > 24)) { SOURCE(3045, 11) return(r0←v5272); } else { SOURCE(3069, 1940) { word mnr←v8852 = 8388608; word mMask←v8880 = 8388607; word r0m←v8908; word mant←v8936; SOURCE(3137, 58) r0m←v8908 = (word) XRM←BITAND(r0←v5272, mMask←v8880); SOURCE(3197, 65) mant←v8936 = ((word) XRM←BITAND(r1←v5300, mMask←v8880) + mnr←v8852); SOURCE(3264, 238) if ((dExp←v8808 == resExp←v8780)) { SOURCE(3288, 42) if ((resExp←v8780 > 24)) { SOURCE(3319, 11) return(r0←v5272); }; SOURCE(3332, 35) mant←v8936 = (word) XRM←BITAND(mant←v8936, mMask←v8880); SOURCE(3369, 110) if ((resExp←v8780 == 0)) { SOURCE(3390, 58) if ((r0s←v8724 == r1s←v8752)) { SOURCE(3408, 23) mant←v8936 = (r0m←v8908 + mant←v8936); } else { SOURCE(3431, 17) mant←v8936 = (r0m←v8908 - mant←v8936); }; SOURCE(3450, 29) return((mant←v8936 + r0s←v8724)); }; SOURCE(3484, 18) mant←v8936 = (mant←v8936 + mant←v8936); }; SOURCE(3507, 30) r0m←v8908 = (word) XRM←BITOR(r0m←v8908, mnr←v8852); SOURCE(3539, 99) if ((dExp←v8808 != 0)) { SOURCE(3558, 41) { word var←c19244; word count←v18048; count←v18048 = (32 - dExp←v8808); var←c19244 = (word) XRM←BITLSHIFT(mant←v8936, count←v18048); guard←v8696 = var←c19244; }; SOURCE(3601, 37) mant←v8936 = (word) XRM←BITRSHIFT(mant←v8936, BCK(dExp←v8808, 32)); }; SOURCE(3643, 1013) if ((r0s←v8724 == r1s←v8752)) { SOURCE(3663, 17) mant←v8936 = (mant←v8936 + r0m←v8908); SOURCE(3682, 152) if ((mant←v8936 >= (mnr←v8852 + mnr←v8852))) { SOURCE(3708, 69) guard←v8696 = ((word) XRM←BITRSHIFT(guard←v8696, 1) + (word) XRM←BITLSHIFT(mant←v8936, 31)); SOURCE(3779, 34) mant←v8936 = (word) XRM←BITRSHIFT(mant←v8936, 1); SOURCE(3815, 19) resExp←v8780 = (resExp←v8780 + 1); }; } else { SOURCE(3848, 17) mant←v8936 = (r0m←v8908 - mant←v8936); SOURCE(3867, 53) if ((guard←v8696 != 0)) { SOURCE(3886, 15) mant←v8936 = (mant←v8936 - 1); SOURCE(3903, 17) guard←v8696 = (0 - guard←v8696); }; SOURCE(3923, 733) if ((mant←v8936 < mnr←v8852)) { SOURCE(3942, 719) { word shift←v8980 = 0; word temp←v9008 = 12; word var←c19308; word count←v17300; word var←c19372; word count←v17252; word var←c19436; word count←v17204; word var←c19500; word count←v17156; SOURCE(3979, 33) if ((mant←v8936 == 0)) { SOURCE(3996, 16) return(0); }; SOURCE(4014, 51) if (((word) XRM←BITRSHIFT(mant←v8936, 12) != 0)) { SOURCE(4055, 10) shift←v8980 = 12; }; SOURCE(4067, 61) count←v17300 = (shift←v8980 + 8); var←c19308 = (word) XRM←BITRSHIFT(mant←v8936, count←v17300); if ((var←c19308 != 0)) { SOURCE(4113, 15) shift←v8980 = (shift←v8980 + 8); }; SOURCE(4130, 61) count←v17252 = (shift←v8980 + 4); var←c19372 = (word) XRM←BITRSHIFT(mant←v8936, count←v17252); if ((var←c19372 != 0)) { SOURCE(4176, 15) shift←v8980 = (shift←v8980 + 4); }; SOURCE(4193, 61) count←v17204 = (shift←v8980 + 2); var←c19436 = (word) XRM←BITRSHIFT(mant←v8936, count←v17204); if ((var←c19436 != 0)) { SOURCE(4239, 15) shift←v8980 = (shift←v8980 + 2); }; SOURCE(4256, 61) count←v17156 = (shift←v8980 + 1); var←c19500 = (word) XRM←BITRSHIFT(mant←v8936, count←v17156); if ((var←c19500 != 0)) { SOURCE(4302, 15) shift←v8980 = (shift←v8980 + 1); }; SOURCE(4319, 16) shift←v8980 = (23 - shift←v8980); SOURCE(4337, 76) { word var←c19564; word count←v17108; count←v17108 = (32 - shift←v8980); var←c19564 = (word) XRM←BITRSHIFT(guard←v8696, count←v17108); mant←v8936 = ((word) XRM←BITLSHIFT(mant←v8936, BCK(shift←v8980, 32)) + var←c19564); }; SOURCE(4415, 40) guard←v8696 = (word) XRM←BITLSHIFT(guard←v8696, BCK(shift←v8980, 32)); SOURCE(4457, 23) resExp←v8780 = (resExp←v8780 - shift←v8980); SOURCE(4482, 174) if ((resExp←v8780 <= 0)) { SOURCE(4502, 156) { /*1*/ word shift←v9052; SOURCE(4504, 21) /*1*/ shift←v9052 = (1 - resExp←v8780); SOURCE(4527, 77) /*1*/ { /*1*/ word var←c19628; /*1*/ word count←v18000; /*1*/ count←v18000 = (32 - shift←v9052); /*1*/ var←c19628 = (word) XRM←BITLSHIFT(mant←v8936, count←v18000); /*1*/ guard←v8696 = ((word) XRM←BITRSHIFT(guard←v8696, BCK(shift←v9052, 32)) + var←c19628); /*1*/ }; SOURCE(4606, 38) /*1*/ mant←v8936 = (word) XRM←BITRSHIFT(mant←v8936, BCK(shift←v9052, 32)); SOURCE(4646, 10) /*1*/ resExp←v8780 = 0; /*1*/ }; }; }; }; }; SOURCE(4667, 195) if (( (int)guard←v8696 < (int)0)) { SOURCE(4704, 104) if (( (int)guard←v8696 == (int)2147483648)) { SOURCE(4749, 44) mant←v8936 = (mant←v8936 + (word) XRM←BITAND(mant←v8936, 1)); } else { SOURCE(4793, 15) mant←v8936 = (mant←v8936 + 1); }; SOURCE(4810, 52) resExp←v8780 = (resExp←v8780 + (word) XRM←BITRSHIFT(mant←v8936, 24)); }; SOURCE(4867, 60) if ((resExp←v8780 > 254)) { SOURCE(4893, 34) return((word) RaiseFloatError←P1920(2)); }; SOURCE(4929, 78) return((((word) XRM←BITAND(mant←v8936, mMask←v8880) + (resExp←v8780 << 23)) + r0s←v8724)); }; }; }; }; } extern word XR←RealAdd(r0←v5404, r1←v5432) word r0←v5404; word r1←v5432; { word var←c5476; word sMask←v9096 = 2147483648; /* SoftAdd: */ SOURCE(5019, 2523) SOURCE(5156, 136) if (((word) XRM←BITOR(r0←v5404, sMask←v9096) < (word) XRM←BITOR(r1←v5432, sMask←v9096))) { SOURCE(5254, 40) { word temp←v9140; SOURCE(5256, 16) temp←v9140 = r0←v5404; SOURCE(5274, 7) r0←v5404 = r1←v5432; SOURCE(5283, 9) r1←v5432 = temp←v9140; }; }; SOURCE(5297, 2250) { word guard←v9184 = 0; word r0s←v9212; word r1s←v9240; word resExp←v9268; word dExp←v9296; SOURCE(5318, 58) r0s←v9212 = (word) XRM←BITAND(r0←v5404, sMask←v9096); SOURCE(5378, 58) r1s←v9240 = (word) XRM←BITAND(r1←v5432, sMask←v9096); SOURCE(5438, 20) resExp←v9268 = (((unsigned)r0←v5404 << 1) >> 24); SOURCE(5460, 25) dExp←v9296 = (resExp←v9268 - (((unsigned)r1←v5432 << 1) >> 24)); if ((resExp←v9268 == 255)) { SOURCE(5525, 29) return((word) RaiseFloatError←P1920(1)); } else { if ((dExp←v9296 > 24)) { SOURCE(5580, 11) return(r0←v5404); } else { SOURCE(5604, 1940) { word mnr←v9340 = 8388608; word mMask←v9368 = 8388607; word r0m←v9396; word mant←v9424; SOURCE(5672, 58) r0m←v9396 = (word) XRM←BITAND(r0←v5404, mMask←v9368); SOURCE(5732, 65) mant←v9424 = ((word) XRM←BITAND(r1←v5432, mMask←v9368) + mnr←v9340); SOURCE(5799, 238) if ((dExp←v9296 == resExp←v9268)) { SOURCE(5823, 42) if ((resExp←v9268 > 24)) { SOURCE(5854, 11) return(r0←v5404); }; SOURCE(5867, 35) mant←v9424 = (word) XRM←BITAND(mant←v9424, mMask←v9368); SOURCE(5904, 110) if ((resExp←v9268 == 0)) { SOURCE(5925, 58) if ((r0s←v9212 == r1s←v9240)) { SOURCE(5943, 23) mant←v9424 = (r0m←v9396 + mant←v9424); } else { SOURCE(5966, 17) mant←v9424 = (r0m←v9396 - mant←v9424); }; SOURCE(5985, 29) return((mant←v9424 + r0s←v9212)); }; SOURCE(6019, 18) mant←v9424 = (mant←v9424 + mant←v9424); }; SOURCE(6042, 30) r0m←v9396 = (word) XRM←BITOR(r0m←v9396, mnr←v9340); SOURCE(6074, 99) if ((dExp←v9296 != 0)) { SOURCE(6093, 41) { word var←c19788; word count←v17952; count←v17952 = (32 - dExp←v9296); var←c19788 = (word) XRM←BITLSHIFT(mant←v9424, count←v17952); guard←v9184 = var←c19788; }; SOURCE(6136, 37) mant←v9424 = (word) XRM←BITRSHIFT(mant←v9424, BCK(dExp←v9296, 32)); }; SOURCE(6178, 1013) if ((r0s←v9212 == r1s←v9240)) { SOURCE(6198, 17) mant←v9424 = (mant←v9424 + r0m←v9396); SOURCE(6217, 152) if ((mant←v9424 >= (mnr←v9340 + mnr←v9340))) { SOURCE(6243, 69) guard←v9184 = ((word) XRM←BITRSHIFT(guard←v9184, 1) + (word) XRM←BITLSHIFT(mant←v9424, 31)); SOURCE(6314, 34) mant←v9424 = (word) XRM←BITRSHIFT(mant←v9424, 1); SOURCE(6350, 19) resExp←v9268 = (resExp←v9268 + 1); }; } else { SOURCE(6383, 17) mant←v9424 = (r0m←v9396 - mant←v9424); SOURCE(6402, 53) if ((guard←v9184 != 0)) { SOURCE(6421, 15) mant←v9424 = (mant←v9424 - 1); SOURCE(6438, 17) guard←v9184 = (0 - guard←v9184); }; SOURCE(6458, 733) if ((mant←v9424 < mnr←v9340)) { SOURCE(6477, 719) { word shift←v9468 = 0; word temp←v9496 = 12; word var←c19852; word count←v17060; word var←c19916; word count←v17012; word var←c19980; word count←v16964; word var←c20044; word count←v16916; SOURCE(6514, 33) if ((mant←v9424 == 0)) { SOURCE(6531, 16) return(0); }; SOURCE(6549, 51) if (((word) XRM←BITRSHIFT(mant←v9424, 12) != 0)) { SOURCE(6590, 10) shift←v9468 = 12; }; SOURCE(6602, 61) count←v17060 = (shift←v9468 + 8); var←c19852 = (word) XRM←BITRSHIFT(mant←v9424, count←v17060); if ((var←c19852 != 0)) { SOURCE(6648, 15) shift←v9468 = (shift←v9468 + 8); }; SOURCE(6665, 61) count←v17012 = (shift←v9468 + 4); var←c19916 = (word) XRM←BITRSHIFT(mant←v9424, count←v17012); if ((var←c19916 != 0)) { SOURCE(6711, 15) shift←v9468 = (shift←v9468 + 4); }; SOURCE(6728, 61) count←v16964 = (shift←v9468 + 2); var←c19980 = (word) XRM←BITRSHIFT(mant←v9424, count←v16964); if ((var←c19980 != 0)) { SOURCE(6774, 15) shift←v9468 = (shift←v9468 + 2); }; SOURCE(6791, 61) count←v16916 = (shift←v9468 + 1); var←c20044 = (word) XRM←BITRSHIFT(mant←v9424, count←v16916); if ((var←c20044 != 0)) { SOURCE(6837, 15) shift←v9468 = (shift←v9468 + 1); }; SOURCE(6854, 16) shift←v9468 = (23 - shift←v9468); SOURCE(6872, 76) { word var←c20108; word count←v16868; count←v16868 = (32 - shift←v9468); var←c20108 = (word) XRM←BITRSHIFT(guard←v9184, count←v16868); mant←v9424 = ((word) XRM←BITLSHIFT(mant←v9424, BCK(shift←v9468, 32)) + var←c20108); }; SOURCE(6950, 40) guard←v9184 = (word) XRM←BITLSHIFT(guard←v9184, BCK(shift←v9468, 32)); SOURCE(6992, 23) resExp←v9268 = (resExp←v9268 - shift←v9468); SOURCE(7017, 174) if ((resExp←v9268 <= 0)) { SOURCE(7037, 156) { /*1*/ word shift←v9540; SOURCE(7039, 21) /*1*/ shift←v9540 = (1 - resExp←v9268); SOURCE(7062, 77) /*1*/ { /*1*/ word var←c20172; /*1*/ word count←v17904; /*1*/ count←v17904 = (32 - shift←v9540); /*1*/ var←c20172 = (word) XRM←BITLSHIFT(mant←v9424, count←v17904); /*1*/ guard←v9184 = ((word) XRM←BITRSHIFT(guard←v9184, BCK(shift←v9540, 32)) + var←c20172); /*1*/ }; SOURCE(7141, 38) /*1*/ mant←v9424 = (word) XRM←BITRSHIFT(mant←v9424, BCK(shift←v9540, 32)); SOURCE(7181, 10) /*1*/ resExp←v9268 = 0; /*1*/ }; }; }; }; }; SOURCE(7202, 195) if (( (int)guard←v9184 < (int)0)) { SOURCE(7239, 104) if (( (int)guard←v9184 == (int)2147483648)) { SOURCE(7284, 44) mant←v9424 = (mant←v9424 + (word) XRM←BITAND(mant←v9424, 1)); } else { SOURCE(7328, 15) mant←v9424 = (mant←v9424 + 1); }; SOURCE(7345, 52) resExp←v9268 = (resExp←v9268 + (word) XRM←BITRSHIFT(mant←v9424, 24)); }; SOURCE(7402, 60) if ((resExp←v9268 > 254)) { SOURCE(7428, 34) return((word) RaiseFloatError←P1920(2)); }; SOURCE(7464, 78) return((((word) XRM←BITAND(mant←v9424, mMask←v9368) + (resExp←v9268 << 23)) + r0s←v9212)); }; }; }; }; } extern word XR←RealMul(r0←v5536, r1←v5564) word r0←v5536; word r1←v5564; { word var←c5608; word sign←v9584; word r0exp←v9612; word r1exp←v9640; word resExp←v9668; word mMask←v9696 = 8388607; word r0Mant←v9724; word r1Mant←v9752; word mant←v9780 = 0; word guard←v9808 = 0; /* SoftMul: */ SOURCE(7554, 2537) SOURCE(7624, 106) { word w2←v18268; w2←v18268 = (word) XRM←BITXOR(r0←v5536, r1←v5564); sign←v9584 = (word) XRM←BITAND(2147483648, w2←v18268); }; SOURCE(7732, 23) r0exp←v9612 = (((unsigned)r0←v5536 << 1) >> 24); SOURCE(7757, 23) r1exp←v9640 = (((unsigned)r1←v5564 << 1) >> 24); SOURCE(7782, 39) resExp←v9668 = ((r0exp←v9612 + r1exp←v9640) - 127); SOURCE(7858, 61) r0Mant←v9724 = (word) XRM←BITAND(mMask←v9696, r0←v5536); SOURCE(7921, 61) r1Mant←v9752 = (word) XRM←BITAND(mMask←v9696, r1←v5564); SOURCE(8022, 54) if (( (int)r0exp←v9612 == (int)255)) { SOURCE(8047, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(8078, 54) if (( (int)r1exp←v9640 == (int)255)) { SOURCE(8103, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(8134, 152) if (( (int)r0exp←v9612 == (int)0)) { SOURCE(8154, 42) if ((r0Mant←v9724 == 0)) { SOURCE(8173, 23) return(sign←v9584); }; SOURCE(8198, 88) lab←L100017: ; SOURCE(8201, 24) r0Mant←v9724 = (r0Mant←v9724 + r0Mant←v9724); SOURCE(8227, 34) if ((r0Mant←v9724 >= 8388608)) { SOURCE(8261, 4) goto lab←L100016; }; SOURCE(8267, 19) resExp←v9668 = (resExp←v9668 - 1); goto lab←L100017; lab←L100016: ; }; SOURCE(8300, 152) if (( (int)r1exp←v9640 == (int)0)) { SOURCE(8320, 42) if ((r1Mant←v9752 == 0)) { SOURCE(8339, 23) return(sign←v9584); }; SOURCE(8364, 88) lab←L100020: ; SOURCE(8367, 24) r1Mant←v9752 = (r1Mant←v9752 + r1Mant←v9752); SOURCE(8393, 34) if ((r1Mant←v9752 >= 8388608)) { SOURCE(8427, 4) goto lab←L100019; }; SOURCE(8433, 19) resExp←v9668 = (resExp←v9668 - 1); goto lab←L100020; lab←L100019: ; }; SOURCE(8466, 48) r0Mant←v9724 = (word) XRM←BITOR(r0Mant←v9724, 8388608); SOURCE(8516, 48) r1Mant←v9752 = (word) XRM←BITOR(r1Mant←v9752, 8388608); SOURCE(8566, 845) { word pLo←v9880; word pMid←v9908; word pHi←v9936; word sumLo←v9964; SOURCE(8660, 48) { word x←v16264; x←v16264 = (word) XRM←BITAND(r0Mant←v9724, 255); SOURCE(8617, 38) if ((x←v16264 == 0)) { pLo←v9880 = 0; } else { pLo←v9880 = (x←v16264 * r1Mant←v9752); }; }; SOURCE(8710, 72) { word x←v16216; { word w1←v18220; w1←v18220 = (word) XRM←BITRSHIFT(r0Mant←v9724, 8); x←v16216 = (word) XRM←BITAND(w1←v18220, 255); }; SOURCE(8617, 38) if ((x←v16216 == 0)) { pMid←v9908 = 0; } else { pMid←v9908 = (x←v16216 * r1Mant←v9752); }; }; SOURCE(8784, 53) pHi←v9936 = ((word) XRM←BITRSHIFT(r0Mant←v9724, 16) * r1Mant←v9752); SOURCE(8839, 156) { word var←c20556; word value←v17856; word var←c20620; word value←v17808; word var←c0299; value←v17856 = (word) XRM←BITAND(255, pHi←v9936); var←c20556 = (word) XRM←BITLSHIFT(value←v17856, 16); value←v17808 = (word) XRM←BITAND(65535, pMid←v9908); var←c20620 = (word) XRM←BITLSHIFT(value←v17808, 8); var←c0299 = (var←c20556 + var←c20620); sumLo←v9964 = (var←c0299 + (word) XRM←BITAND(16777215, pLo←v9880)); }; SOURCE(8997, 126) mant←v9780 = ((((word) XRM←BITRSHIFT(pHi←v9936, 8) + (word) XRM←BITRSHIFT(pMid←v9908, 16)) + (word) XRM←BITRSHIFT(pLo←v9880, 24) ) + (word) XRM←BITRSHIFT(sumLo←v9964, 24)); SOURCE(9125, 36) guard←v9808 = (word) XRM←BITLSHIFT(sumLo←v9964, 8); SOURCE(9163, 238) if ((mant←v9780 < 8388608)) { SOURCE(9196, 52) mant←v9780 = ((mant←v9780 + mant←v9780) + (word) XRM←BITRSHIFT(guard←v9808, 31)); SOURCE(9250, 21) guard←v9808 = (guard←v9808 + guard←v9808); } else { SOURCE(9333, 19) resExp←v9668 = (resExp←v9668 + 1); }; }; SOURCE(9414, 335) if (( (int)resExp←v9668 <= (int)0)) { SOURCE(9434, 320) { word shift←v10112; SOURCE(9436, 21) shift←v10112 = (1 - resExp←v9668); SOURCE(9459, 290) if ((shift←v10112 > 24)) { SOURCE(9478, 29) return(sign←v9584); } else { SOURCE(9507, 244) { word guardOut←v10156; SOURCE(9509, 54) { word count←v17760; count←v17760 = (32 - shift←v10112); guardOut←v10156 = (word) XRM←BITLSHIFT(guard←v9808, count←v17760); }; SOURCE(9565, 77) { word var←c20748; word count←v17712; count←v17712 = (32 - shift←v10112); var←c20748 = (word) XRM←BITLSHIFT(mant←v9780, count←v17712); guard←v9808 = ((word) XRM←BITRSHIFT(guard←v9808, BCK(shift←v10112, 32)) + var←c20748); }; SOURCE(9644, 53) if ((guardOut←v10156 != 0)) { SOURCE(9665, 32) guard←v9808 = (word) XRM←BITOR(guard←v9808, 1); }; SOURCE(9699, 38) mant←v9780 = (word) XRM←BITRSHIFT(mant←v9780, BCK(shift←v10112, 32)); SOURCE(9739, 10) resExp←v9668 = 0; }; }; }; }; SOURCE(9757, 180) if (( (int)guard←v9808 < (int)0)) { SOURCE(9794, 89) if ((guard←v9808 == 2147483648)) { SOURCE(9824, 44) mant←v9780 = (mant←v9780 + (word) XRM←BITAND(mant←v9780, 1)); } else { SOURCE(9868, 15) mant←v9780 = (mant←v9780 + 1); }; SOURCE(9885, 52) resExp←v9668 = (resExp←v9668 + (word) XRM←BITRSHIFT(mant←v9780, 24)); }; SOURCE(9942, 60) if (( (int)resExp←v9668 > (int)254)) { SOURCE(9968, 34) return((word) RaiseFloatError←P1920(2)); }; SOURCE(10004, 87) { word var←c0301; { word var←c20876; word value←v17664; word var←c0300; value←v17664 = resExp←v9668; var←c20876 = (word) XRM←BITLSHIFT(value←v17664, 23); var←c0300 = ((word) XRM←BITAND(mant←v9780, mMask←v9696) + var←c20876); var←c0301 = (var←c0300 + sign←v9584); }; return(var←c0301); }; } extern word XR←RealDiv(r0←v5668, r1←v5696) word r0←v5668; word r1←v5696; { word var←c5740; word guard←v10200 = 0; word sign←v10228; word r0exp←v10256; word r1exp←v10284; word resExp←v10312; word mMask←v10340 = 8388607; word r0Mant←v10368; word r1Mant←v10396; word mant←v10424 = 0; /* SoftDiv: */ SOURCE(10097, 2232) SOURCE(10186, 106) { word w2←v18172; w2←v18172 = (word) XRM←BITXOR(r0←v5668, r1←v5696); sign←v10228 = (word) XRM←BITAND(2147483648, w2←v18172); }; SOURCE(10294, 19) r0exp←v10256 = (((unsigned)r0←v5668 << 1) >> 24); SOURCE(10315, 19) r1exp←v10284 = (((unsigned)r1←v5696 << 1) >> 24); SOURCE(10336, 43) resExp←v10312 = ((r0exp←v10256 - r1exp←v10284) + 127); SOURCE(10416, 61) r0Mant←v10368 = (word) XRM←BITAND(mMask←v10340, r0←v5668); SOURCE(10479, 61) r1Mant←v10396 = (word) XRM←BITAND(mMask←v10340, r1←v5696); SOURCE(10561, 54) if ((r0exp←v10256 == 255)) { SOURCE(10586, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(10617, 54) if ((r1exp←v10284 == 255)) { SOURCE(10642, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(10673, 164) if ((r1exp←v10284 == 0)) { SOURCE(10693, 54) if ((r1Mant←v10396 == 0)) { SOURCE(10712, 35) return((word) RaiseFloatError←P1920(4)); }; SOURCE(10749, 88) lab←L100032: ; SOURCE(10752, 24) r1Mant←v10396 = (r1Mant←v10396 + r1Mant←v10396); SOURCE(10778, 34) if ((r1Mant←v10396 >= 8388608)) { SOURCE(10812, 4) goto lab←L100031; }; SOURCE(10818, 19) resExp←v10312 = (resExp←v10312 - 1); goto lab←L100032; lab←L100031: ; }; SOURCE(10851, 152) if ((r0exp←v10256 == 0)) { SOURCE(10871, 42) if ((r0Mant←v10368 == 0)) { SOURCE(10890, 23) return(sign←v10228); }; SOURCE(10915, 88) lab←L100035: ; SOURCE(10918, 24) r0Mant←v10368 = (r0Mant←v10368 + r0Mant←v10368); SOURCE(10944, 34) if ((r0Mant←v10368 >= 8388608)) { SOURCE(10978, 4) goto lab←L100034; }; SOURCE(10984, 19) resExp←v10312 = (resExp←v10312 - 1); goto lab←L100035; lab←L100034: ; }; SOURCE(11017, 48) r0Mant←v10368 = (word) XRM←BITOR(r0Mant←v10368, 8388608); SOURCE(11067, 48) r1Mant←v10396 = (word) XRM←BITOR(r1Mant←v10396, 8388608); SOURCE(11118, 640) SOURCE(11120, 29) { word bit←v10468 = 8388608; SOURCE(11151, 22) mant←v10424 = 8388608; SOURCE(11175, 71) if ((r0Mant←v10368 < r1Mant←v10396)) { SOURCE(11201, 24) r0Mant←v10368 = (r0Mant←v10368 + r0Mant←v10368); SOURCE(11227, 19) resExp←v10312 = (resExp←v10312 - 1); }; SOURCE(11251, 24) r0Mant←v10368 = (r0Mant←v10368 - r1Mant←v10396); SOURCE(11277, 19) if ((r0Mant←v10368 == 0)) { SOURCE(11296, 15) goto lab←L100036; }; SOURCE(11313, 393) lab←L100039: ; SOURCE(11316, 24) r0Mant←v10368 = (r0Mant←v10368 + r0Mant←v10368); SOURCE(11342, 222) if ((bit←v10468 == 1)) { SOURCE(11360, 204) if ((r0Mant←v10368 >= r1Mant←v10396)) { SOURCE(11387, 83) if ((r0Mant←v10368 == r1Mant←v10396)) { SOURCE(11411, 44) mant←v10424 = (mant←v10424 + (word) XRM←BITAND(mant←v10424, 1)); } else { SOURCE(11455, 15) mant←v10424 = (mant←v10424 + 1); }; SOURCE(11472, 92) if ((mant←v10424 == 16777216)) { SOURCE(11521, 22) mant←v10424 = 8388608; SOURCE(11545, 19) resExp←v10312 = (resExp←v10312 + 1); }; }; SOURCE(11572, 4) goto lab←L100038; }; SOURCE(11581, 32) bit←v10468 = (word) XRM←BITRSHIFT(bit←v10468, 1); SOURCE(11615, 91) if ((r0Mant←v10368 >= r1Mant←v10396)) { SOURCE(11642, 17) mant←v10424 = (mant←v10424 + bit←v10468); SOURCE(11661, 24) r0Mant←v10368 = (r0Mant←v10368 - r1Mant←v10396); SOURCE(11687, 19) if ((r0Mant←v10368 == 0)) { SOURCE(11706, 15) goto lab←L100036; }; }; goto lab←L100039; lab←L100038: ; }; goto lab←L100040; lab←L100036: ; lab←L100040: ; SOURCE(11761, 220) if (( (int)resExp←v10312 <= (int)0)) { SOURCE(11783, 198) lab←L100043: ; SOURCE(11786, 113) { word var←c21100; word w1←v18096; word w2←v18124; w1←v18096 = (word) XRM←BITAND(guard←v10200, 1); w2←v18124 = ((word) XRM←BITRSHIFT(guard←v10200, 1) + (word) XRM←BITLSHIFT(mant←v10424, 31)); var←c21100 = (word) XRM←BITOR(w1←v18096, w2←v18124); guard←v10200 = var←c21100; }; SOURCE(11901, 34) mant←v10424 = (word) XRM←BITRSHIFT(mant←v10424, 1); SOURCE(11937, 19) if (( (int)resExp←v10312 == (int)0)) { SOURCE(11956, 4) goto lab←L100042; }; SOURCE(11962, 19) resExp←v10312 = (resExp←v10312 + 1); goto lab←L100043; lab←L100042: ; }; SOURCE(11995, 180) if (( (int)guard←v10200 < (int)0)) { SOURCE(12032, 89) if ((guard←v10200 == 2147483648)) { SOURCE(12062, 44) mant←v10424 = (mant←v10424 + (word) XRM←BITAND(mant←v10424, 1)); } else { SOURCE(12106, 15) mant←v10424 = (mant←v10424 + 1); }; SOURCE(12123, 52) resExp←v10312 = (resExp←v10312 + (word) XRM←BITRSHIFT(mant←v10424, 24)); }; SOURCE(12180, 60) if (( (int)resExp←v10312 > (int)254)) { SOURCE(12206, 34) return((word) RaiseFloatError←P1920(2)); }; SOURCE(12242, 87) { word var←c0303; { word var←c21228; word value←v17616; word var←c0302; value←v17616 = resExp←v10312; var←c21228 = (word) XRM←BITLSHIFT(value←v17616, 23); var←c0302 = ((word) XRM←BITAND(mant←v10424, mMask←v10340) + var←c21228); var←c0303 = (var←c0302 + sign←v10228); }; return(var←c0303); }; } extern word XR←FloatInt(i←v5800) word i←v5800; { word var←c5844; word sign←v10512 = 0; word c←v10540; word shift←v10568 = 0; word temp←v10596 = 0; word guard←v10624; word exp←v10652; word mMask←v10680 = 8388607; word var←c21292; word count←v16820; word var←c21356; word count←v16772; word var←c21420; word count←v16724; word var←c21484; word count←v16676; /* FloatInt: */ SOURCE(12335, 1026) SOURCE(12419, 23) c←v10540 = i←v5800; SOURCE(12538, 39) if (( (int)i←v5800 == (int)0)) { SOURCE(12552, 25) return(0); }; SOURCE(12579, 43) if (( (int)i←v5800 < (int)0)) { SOURCE(12594, 6) c←v10540 = INEG(i←v5800); SOURCE(12602, 20) sign←v10512 = 2147483648; }; SOURCE(12625, 48) if (((word) XRM←BITRSHIFT(c←v10540, 16) != 0)) { SOURCE(12663, 10) shift←v10568 = 16; }; SOURCE(12675, 58) count←v16820 = (shift←v10568 + 8); var←c21292 = (word) XRM←BITRSHIFT(c←v10540, count←v16820); if ((var←c21292 != 0)) { SOURCE(12718, 15) shift←v10568 = (shift←v10568 + 8); }; SOURCE(12735, 58) count←v16772 = (shift←v10568 + 4); var←c21356 = (word) XRM←BITRSHIFT(c←v10540, count←v16772); if ((var←c21356 != 0)) { SOURCE(12778, 15) shift←v10568 = (shift←v10568 + 4); }; SOURCE(12795, 58) count←v16724 = (shift←v10568 + 2); var←c21420 = (word) XRM←BITRSHIFT(c←v10540, count←v16724); if ((var←c21420 != 0)) { SOURCE(12838, 15) shift←v10568 = (shift←v10568 + 2); }; SOURCE(12855, 58) count←v16676 = (shift←v10568 + 1); var←c21484 = (word) XRM←BITRSHIFT(c←v10540, count←v16676); if ((var←c21484 != 0)) { SOURCE(12898, 15) shift←v10568 = (shift←v10568 + 1); }; SOURCE(12915, 19) exp←v10652 = (shift←v10568 + 127); SOURCE(12936, 341) if ((shift←v10568 <= 23)) { SOURCE(12958, 38) { word var←c21548; word count←v17568; count←v17568 = (23 - shift←v10568); var←c21548 = (word) XRM←BITLSHIFT(c←v10540, count←v17568); temp←v10596 = var←c21548; }; } else { SOURCE(13007, 38) { word var←c21612; word count←v16628; count←v16628 = (shift←v10568 - 23); var←c21612 = (word) XRM←BITRSHIFT(c←v10540, count←v16628); temp←v10596 = var←c21612; }; SOURCE(13047, 39) { word var←c21676; word count←v17520; count←v17520 = (32 - shift←v10568); var←c21676 = (word) XRM←BITLSHIFT(c←v10540, count←v17520); guard←v10624 = var←c21676; }; SOURCE(13088, 189) if (( (int)guard←v10624 < (int)0)) { SOURCE(13125, 104) if (( (int)guard←v10624 == (int)2147483648)) { SOURCE(13170, 44) temp←v10596 = (temp←v10596 + (word) XRM←BITAND(temp←v10596, 1)); } else { SOURCE(13214, 15) temp←v10596 = (temp←v10596 + 1); }; SOURCE(13231, 46) exp←v10652 = (exp←v10652 + (word) XRM←BITRSHIFT(temp←v10596, 24)); }; }; SOURCE(13287, 74) return((((word) XRM←BITAND(temp←v10596, mMask←v10680) + (exp←v10652 << 23)) + sign←v10512)); } extern word XR←FloatCard(c←v5904) word c←v5904; { word var←c5948; word shift←v10724 = 0; word temp←v10752 = 0; word exp←v10780; word guard←v10808; word mMask←v10836 = 8388607; word var←c21772; word count←v16580; word var←c21836; word count←v16532; word var←c21900; word count←v16484; word var←c21964; word count←v16436; /* FloatCard: */ SOURCE(13367, 933) SOURCE(13530, 39) if ((c←v5904 == 0)) { SOURCE(13544, 25) return(0); }; SOURCE(13571, 48) if (((word) XRM←BITRSHIFT(c←v5904, 16) != 0)) { SOURCE(13609, 10) shift←v10724 = 16; }; SOURCE(13621, 58) count←v16580 = (shift←v10724 + 8); var←c21772 = (word) XRM←BITRSHIFT(c←v5904, count←v16580); if ((var←c21772 != 0)) { SOURCE(13664, 15) shift←v10724 = (shift←v10724 + 8); }; SOURCE(13681, 58) count←v16532 = (shift←v10724 + 4); var←c21836 = (word) XRM←BITRSHIFT(c←v5904, count←v16532); if ((var←c21836 != 0)) { SOURCE(13724, 15) shift←v10724 = (shift←v10724 + 4); }; SOURCE(13741, 58) count←v16484 = (shift←v10724 + 2); var←c21900 = (word) XRM←BITRSHIFT(c←v5904, count←v16484); if ((var←c21900 != 0)) { SOURCE(13784, 15) shift←v10724 = (shift←v10724 + 2); }; SOURCE(13801, 58) count←v16436 = (shift←v10724 + 1); var←c21964 = (word) XRM←BITRSHIFT(c←v5904, count←v16436); if ((var←c21964 != 0)) { SOURCE(13844, 15) shift←v10724 = (shift←v10724 + 1); }; SOURCE(13861, 19) exp←v10780 = (shift←v10724 + 127); SOURCE(13882, 341) if ((shift←v10724 <= 23)) { SOURCE(13904, 38) { word var←c22028; word count←v17472; count←v17472 = (23 - shift←v10724); var←c22028 = (word) XRM←BITLSHIFT(c←v5904, count←v17472); temp←v10752 = var←c22028; }; } else { SOURCE(13953, 38) { word var←c22092; word count←v16388; count←v16388 = (shift←v10724 - 23); var←c22092 = (word) XRM←BITRSHIFT(c←v5904, count←v16388); temp←v10752 = var←c22092; }; SOURCE(13993, 39) { word var←c22156; word count←v17424; count←v17424 = (32 - shift←v10724); var←c22156 = (word) XRM←BITLSHIFT(c←v5904, count←v17424); guard←v10808 = var←c22156; }; SOURCE(14034, 189) if (( (int)guard←v10808 < (int)0)) { SOURCE(14071, 104) if (( (int)guard←v10808 == (int)2147483648)) { SOURCE(14116, 44) temp←v10752 = (temp←v10752 + (word) XRM←BITAND(temp←v10752, 1)); } else { SOURCE(14160, 15) temp←v10752 = (temp←v10752 + 1); }; SOURCE(14177, 46) exp←v10780 = (exp←v10780 + (word) XRM←BITRSHIFT(temp←v10752, 24)); }; }; SOURCE(14231, 69) return(((word) XRM←BITAND(temp←v10752, mMask←v10836) + (exp←v10780 << 23))); } extern word XR←REAL32←Fix(c←v6008) word c←v6008; { word var←c6052; word exponent←v10880; word newInt←v10908; word neg0←v10936 = 2147483648; /* SoftFix: */ SOURCE(14307, 630) SOURCE(14372, 21) exponent←v10880 = (((unsigned)c←v6008 << 1) >> 24); SOURCE(14433, 41) if ((c←v6008 == neg0←v10936) || (c←v6008 == 0)) { SOURCE(14465, 9) return(0); }; SOURCE(14476, 66) if ((exponent←v10880 == 255)) { SOURCE(14504, 38) return((word) RaiseFloatError←P1920(1)); }; SOURCE(14544, 73) if ((exponent←v10880 > 158)) { SOURCE(14574, 43) return((word) RaiseFloatError←P1920(2)); }; SOURCE(14619, 36) if ((exponent←v10880 < 127)) { SOURCE(14646, 9) return(0); }; SOURCE(14657, 62) newInt←v10908 = ((( (((unsigned)c←v6008 << 16) >> 16) ) + (word) XRM←BITLSHIFT((((unsigned)c←v6008 << 9) >> 25), 16)) + 8388608); SOURCE(14721, 155) if ((exponent←v10880 >= 151)) { { word var←c22316; word value←v17348; word count←v17376; value←v17348 = newInt←v10908; count←v17376 = ((exponent←v10880 - 127) - 23); var←c22316 = (word) XRM←BITLSHIFT(value←v17348, count←v17376); newInt←v10908 = var←c22316; }; } else { { word var←c22380; word value←v16312; word count←v16340; value←v16312 = newInt←v10908; count←v16340 = (23 - (exponent←v10880 - 127)); var←c22380 = (word) XRM←BITRSHIFT(value←v16312, count←v16340); newInt←v10908 = var←c22380; }; }; SOURCE(14878, 59) if (( (int)c←v6008 < (int)0)) { return(INEG(newInt←v10908)); } else { return(newInt←v10908); }; } extern word XR←REAL32←Round(c←v6112) word c←v6112; { word var←c6156; word half←v10980 = 1056964608; word abs←v11008; word fix←v11036; word flt←v11064; word delta←v11092; /* SoftRnd: */ SOURCE(14943, 430) SOURCE(15072, 24) abs←v11008 = ((c←v6112 << 1) >> 1); SOURCE(15098, 25) fix←v11036 = (word) XR←REAL32←Fix(abs←v11008); SOURCE(15125, 26) flt←v11064 = (word) XR←FloatInt(fix←v11036); SOURCE(15153, 32) delta←v11092 = (word) XR←RealSub(abs←v11008, flt←v11064); if (( (int)delta←v11092 <= (int)half←v10980)) { } else { if (( (int)delta←v11092 > (int)half←v10980)) { SOURCE(15256, 13) fix←v11036 = (fix←v11036 + 1); } else { if (((fix←v11036 & 1) == 1)) { SOURCE(15308, 13) fix←v11036 = (fix←v11036 + 1); }; }; }; SOURCE(15332, 27) if ((abs←v11008 != c←v6112)) { SOURCE(15348, 11) fix←v11036 = INEG(fix←v11036); }; SOURCE(15361, 12) return(fix←v11036); } extern word XR←REAL32←Floor(c←v6216) word c←v6216; { word var←c6260; word temp←v11136; /* SoftFloor: */ SOURCE(15379, 190) SOURCE(15445, 41) temp←v11136 = (word) XR←REAL32←Fix(c←v6216); SOURCE(15488, 28) { word x5; word x7; if ((( x5 = c←v6216, *(float*)&x5 ) >= ( x7 = (* (ptr) &fc6 ), *(float*)&x7 ))) { SOURCE(15503, 13) return(temp←v11136); }; }; SOURCE(15518, 51) { word x8; if ((( x8 = c←v6216, *(float*)&x8 ) == (float)(int)temp←v11136)) { SOURCE(15535, 19) return(temp←v11136); } else { SOURCE(15554, 15) return((temp←v11136 - 1)); }; }; } extern word XR←REAL32←Ceiling(c←v6320) word c←v6320; { word var←c6364; word temp←v11180; /* SoftCeiling: */ SOURCE(15575, 192) SOURCE(15643, 41) temp←v11180 = (word) XR←REAL32←Fix(c←v6320); SOURCE(15686, 28) { word x9; word x10; if ((( x9 = c←v6320, *(float*)&x9 ) <= ( x10 = (* (ptr) &fc6 ), *(float*)&x10 ))) { SOURCE(15701, 13) return(temp←v11180); }; }; SOURCE(15716, 51) { word x11; if ((( x11 = c←v6320, *(float*)&x11 ) == (float)(int)temp←v11180)) { SOURCE(15733, 19) return(temp←v11180); } else { SOURCE(15752, 15) return((temp←v11180 + 1)); }; }; } extern word XR←RealNeg(a←v6424) word a←v6424; { word var←c6468; /* SoftNeg: */ SOURCE(15773, 198) SOURCE(15838, 54) if (((((unsigned)a←v6424 << 1) >> 24) == 255)) { SOURCE(15863, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(15894, 77) return((word) XRM←BITXOR(a←v6424, 2147483648)); } extern word XR←RealAbs(a←v6528) word a←v6528; { word var←c6572; word c←v11252; /* SoftAbs: */ SOURCE(15977, 249) SOURCE(16117, 37) c←v11252 = ((a←v6528 << 1) >> 1); SOURCE(16156, 48) if ((c←v11252 >= 2139095040)) { SOURCE(16175, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(16206, 20) return(c←v11252); } extern word XR←RealMin(a←v6632, b←v6660) word a←v6632; word b←v6660; { word var←c6704; word neg0←v11296 = 2147483648; word nanLow←v11324 = 2139095040; /* RealMin: */ SOURCE(16232, 501) SOURCE(16388, 28) if ((a←v6632 == neg0←v11296)) { SOURCE(16405, 11) a←v6632 = 0; }; SOURCE(16418, 28) if ((b←v6660 == neg0←v11296)) { SOURCE(16435, 11) b←v6660 = 0; }; SOURCE(16448, 98) if (((word) XRM←BITAND(a←v6632, nanLow←v11324) == nanLow←v11324) || ((word) XRM←BITAND(b←v6660, nanLow←v11324) == nanLow←v11324)) { SOURCE(16517, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(16548, 111) if (( (int)(word) XRM←BITAND(a←v6632, b←v6660) < (int)0)) { SOURCE(16592, 67) if (( (int)a←v6632 > (int)b←v6660)) { return(a←v6632); } else { return(b←v6660); }; }; SOURCE(16661, 72) if (( (int)a←v6632 > (int)b←v6660)) { SOURCE(16709, 15) return(b←v6660); } else { SOURCE(16724, 9) return(a←v6632); }; } extern word XR←RealMax(a←v6764, b←v6792) word a←v6764; word b←v6792; { word var←c6836; word neg0←v11368 = 2147483648; word nanLow←v11396 = 2139095040; /* RealMax: */ SOURCE(16739, 503) SOURCE(16895, 28) if ((a←v6764 == neg0←v11368)) { SOURCE(16912, 11) a←v6764 = 0; }; SOURCE(16925, 28) if ((b←v6792 == neg0←v11368)) { SOURCE(16942, 11) b←v6792 = 0; }; SOURCE(16955, 98) if (((word) XRM←BITAND(a←v6764, nanLow←v11396) == nanLow←v11396) || ((word) XRM←BITAND(b←v6792, nanLow←v11396) == nanLow←v11396)) { SOURCE(17024, 29) return((word) RaiseFloatError←P1920(1)); }; SOURCE(17055, 111) if (( (int)(word) XRM←BITAND(a←v6764, b←v6792) < (int)0)) { SOURCE(17099, 67) if (( (int)a←v6764 > (int)b←v6792)) { return(b←v6792); } else { return(a←v6764); }; }; SOURCE(17168, 74) if (( (int)a←v6764 > (int)b←v6792)) { SOURCE(17216, 16) return(a←v6764); } else { SOURCE(17232, 10) return(b←v6792); }; } extern word XR←RealGt(r0←v6896, r1←v6924) word r0←v6896; word r1←v6924; { word var←c6968; word neg0←v11440 = 2147483648; word nanLow←v11468 = 2139095040; /* SoftGt: */ SOURCE(17248, 486) SOURCE(17404, 30) if ((r0←v6896 == neg0←v11440)) { SOURCE(17422, 12) r0←v6896 = 0; }; SOURCE(17436, 30) if ((r1←v6924 == neg0←v11440)) { SOURCE(17454, 12) r1←v6924 = 0; }; SOURCE(17468, 114) if (((word) XRM←BITAND(r0←v6896, nanLow←v11468) == nanLow←v11468) || ((word) XRM←BITAND(r1←v6924, nanLow←v11468) == nanLow←v11468)) { SOURCE(17541, 25) { word var←c22604; var←c22604 = (word) RaiseFloatError←P1920(1); }; SOURCE(17568, 14) return(0); }; SOURCE(17587, 95) if (( (int)(word) XRM←BITAND(r0←v6896, r1←v6924) < (int)0)) { SOURCE(17633, 49) return(( (int)r0←v6896 < (int)r1←v6924)); }; SOURCE(17684, 50) return(( (int)r0←v6896 > (int)r1←v6924)); } extern word XR←RealGe(r0←v7028, r1←v7056) word r0←v7028; word r1←v7056; { word var←c7100; word neg0←v11512 = 2147483648; word nanLow←v11540 = 2139095040; /* SoftGe: */ SOURCE(17740, 488) SOURCE(17896, 30) if ((r0←v7028 == neg0←v11512)) { SOURCE(17914, 12) r0←v7028 = 0; }; SOURCE(17928, 30) if ((r1←v7056 == neg0←v11512)) { SOURCE(17946, 12) r1←v7056 = 0; }; SOURCE(17960, 114) if (((word) XRM←BITAND(r0←v7028, nanLow←v11540) == nanLow←v11540) || ((word) XRM←BITAND(r1←v7056, nanLow←v11540) == nanLow←v11540)) { SOURCE(18033, 25) { word var←c22636; var←c22636 = (word) RaiseFloatError←P1920(1); }; SOURCE(18060, 14) return(0); }; SOURCE(18079, 96) if (( (int)(word) XRM←BITAND(r0←v7028, r1←v7056) < (int)0)) { SOURCE(18125, 50) return(( (int)r0←v7028 <= (int)r1←v7056)); }; SOURCE(18177, 51) return(( (int)r0←v7028 >= (int)r1←v7056)); } extern word XR←RealEq(r0←v7160, r1←v7188) word r0←v7160; word r1←v7188; { word var←c7232; word neg0←v11584 = 2147483648; word nanLow←v11612 = 2139095040; /* SoftEq: */ SOURCE(18234, 389) SOURCE(18390, 30) if ((r0←v7160 == neg0←v11584)) { SOURCE(18408, 12) r0←v7160 = 0; }; SOURCE(18422, 30) if ((r1←v7188 == neg0←v11584)) { SOURCE(18440, 12) r1←v7188 = 0; }; SOURCE(18454, 114) if (((word) XRM←BITAND(r0←v7160, nanLow←v11612) == nanLow←v11612) || ((word) XRM←BITAND(r1←v7188, nanLow←v11612) == nanLow←v11612)) { SOURCE(18527, 25) { word var←c22668; var←c22668 = (word) RaiseFloatError←P1920(1); }; SOURCE(18554, 14) return(0); }; SOURCE(18573, 50) return(( (int)r0←v7160 == (int)r1←v7188)); } static word SoftCmp←P1500(r0←v7292, r1←v7320) word r0←v7292; word r1←v7320; { word var←c7364; word neg0←v11656 = 2147483648; word nanLow←v11684 = 2139095040; /* SoftCmp: */ SOURCE(18629, 682) SOURCE(18806, 30) if ((r0←v7292 == neg0←v11656)) { SOURCE(18824, 12) r0←v7292 = 0; }; SOURCE(18838, 30) if ((r1←v7320 == neg0←v11656)) { SOURCE(18856, 12) r1←v7320 = 0; }; SOURCE(18870, 92) if (((word) XRM←BITAND(r0←v7292, nanLow←v11684) == nanLow←v11684) || ((word) XRM←BITAND(r0←v7292, nanLow←v11684) == nanLow←v11684)) { SOURCE(18941, 21) return(3); }; SOURCE(18964, 195) if (( (int)(word) XRM←BITAND(r0←v7292, r1←v7320) < (int)0)) { SOURCE(19012, 66) if (( (int)r0←v7292 < (int)r1←v7320)) { SOURCE(19062, 16) return(2); }; SOURCE(19080, 63) if (( (int)r1←v7320 < (int)r0←v7292)) { SOURCE(19130, 13) return(0); }; SOURCE(19145, 14) return(1); }; SOURCE(19164, 63) if (( (int)r0←v7292 < (int)r1←v7320)) { SOURCE(19214, 13) return(0); }; SOURCE(19229, 66) if (( (int)r1←v7320 < (int)r0←v7292)) { SOURCE(19279, 16) return(2); }; SOURCE(19297, 14) return(1); } extern word XR←RealLt(r0←v7424, r1←v7452) word r0←v7424; word r1←v7452; { word var←c7496; word neg0←v11728 = 2147483648; word nanLow←v11756 = 2139095040; /* SoftLt: */ SOURCE(19317, 486) SOURCE(19473, 30) if ((r0←v7424 == neg0←v11728)) { SOURCE(19491, 12) r0←v7424 = 0; }; SOURCE(19505, 30) if ((r1←v7452 == neg0←v11728)) { SOURCE(19523, 12) r1←v7452 = 0; }; SOURCE(19537, 114) if (((word) XRM←BITAND(r0←v7424, nanLow←v11756) == nanLow←v11756) || ((word) XRM←BITAND(r1←v7452, nanLow←v11756) == nanLow←v11756)) { SOURCE(19610, 25) { word var←c22700; var←c22700 = (word) RaiseFloatError←P1920(1); }; SOURCE(19637, 14) return(0); }; SOURCE(19656, 95) if (( (int)(word) XRM←BITAND(r0←v7424, r1←v7452) < (int)0)) { SOURCE(19702, 49) return(( (int)r0←v7424 > (int)r1←v7452)); }; SOURCE(19753, 50) return(( (int)r0←v7424 < (int)r1←v7452)); } extern word XR←RealLe(r0←v7556, r1←v7584) word r0←v7556; word r1←v7584; { word var←c7628; word neg0←v11800 = 2147483648; word nanLow←v11828 = 2139095040; /* SoftLe: */ SOURCE(19809, 488) SOURCE(19965, 30) if ((r0←v7556 == neg0←v11800)) { SOURCE(19983, 12) r0←v7556 = 0; }; SOURCE(19997, 30) if ((r1←v7584 == neg0←v11800)) { SOURCE(20015, 12) r1←v7584 = 0; }; SOURCE(20029, 114) if (((word) XRM←BITAND(r0←v7556, nanLow←v11828) == nanLow←v11828) || ((word) XRM←BITAND(r1←v7584, nanLow←v11828) == nanLow←v11828)) { SOURCE(20102, 25) { word var←c22732; var←c22732 = (word) RaiseFloatError←P1920(1); }; SOURCE(20129, 14) return(0); }; SOURCE(20148, 96) if (( (int)(word) XRM←BITAND(r0←v7556, r1←v7584) < (int)0)) { SOURCE(20194, 50) return(( (int)r0←v7556 >= (int)r1←v7584)); }; SOURCE(20246, 51) return(( (int)r0←v7556 <= (int)r1←v7584)); } extern word XR←SignedPwr(base←v7688, exp←v7716) word base←v7688; word exp←v7716; { word var←c7760; word p←v11872 = 1; word b←v11900; word e←v11928; /* SignedPwr: */ SOURCE(20303, 528) SOURCE(20392, 15) b←v11900 = base←v7688; SOURCE(20409, 14) e←v11928 = exp←v7716; SOURCE(20425, 163) { word var←c22764; var←c22764 = b←v11900; switch (var←c22764) { case 0: SOURCE(20445, 55) if (( (int)e←v11928 <= (int)0)) { SOURCE(20460, 40) return((word) RaiseFloatError←P1920(5)); }; SOURCE(20503, 9) return(0); case 1: SOURCE(20521, 9) return(1); case 4294967295: SOURCE(20538, 50) if ((0 != (e←v11928 & 1))) { SOURCE(20563, 16) return( (word) -1); } else { SOURCE(20579, 9) return(1); }; default: break; }; }; SOURCE(20607, 23) if (( (int)e←v11928 < (int)0)) { SOURCE(20621, 9) return(0); }; SOURCE(20632, 176) lab←L100064: ; SOURCE(20646, 44) if ((0 != (e←v11928 & 1))) { SOURCE(20673, 7) p←v11872 = IOP2( * , (int)p←v11872, (int)b←v11900); SOURCE(20683, 7) e←v11928 = (e←v11928 - 1); }; SOURCE(20694, 114) if (( (int)e←v11928 != (int)0)) { SOURCE(20711, 7) b←v11900 = IOP2( * , (int)b←v11900, (int)b←v11900); SOURCE(20721, 7) e←v11928 = IOP2( / , (int)e←v11928, (int)2); } else { SOURCE(20739, 27) if (( (int)base←v7688 != (int)0)) { SOURCE(20757, 9) return(p←v11872); }; SOURCE(20768, 40) return((word) RaiseFloatError←P1920(5)); }; goto lab←L100064; /* c2c skipped dead code */ } extern word XR←UnsignedPwr(base←v7820, exp←v7848) word base←v7820; word exp←v7848; { word var←c7892; word p←v11972 = 1; word b←v12000; word e←v12028; /* UnsignedPwr: */ SOURCE(20860, 331) SOURCE(20955, 17) b←v12000 = base←v7820; SOURCE(20974, 15) e←v12028 = exp←v7848; SOURCE(20991, 177) lab←L100067: ; SOURCE(21005, 45) if ((0 != (e←v12028 & 1))) { SOURCE(21033, 7) p←v11972 = (p←v11972 * b←v12000); SOURCE(21043, 7) e←v12028 = (e←v12028 - 1); }; SOURCE(21054, 114) if ((e←v12028 != 0)) { SOURCE(21071, 7) b←v12000 = (b←v12000 * b←v12000); SOURCE(21081, 7) e←v12028 = (e←v12028 >> 1); } else { SOURCE(21099, 27) if ((base←v7820 != 0)) { SOURCE(21117, 9) return(p←v11972); }; SOURCE(21128, 40) return((word) RaiseFloatError←P1920(5)); }; goto lab←L100067; /* c2c skipped dead code */ } extern word XR←RealPwr(base←v7952, exp←v7980) word base←v7952; word exp←v7980; { register ptr gf←c23116 = (ptr) &globalframe; word var←c8024; /* RealPwr: */ SOURCE(21221, 107) SOURCE(21296, 32) { word pd12; pd12 = (* (( (ptr) (* (( (ptr) gf←c23116)+62)/* var←c22924 */ ))+7) ); return((word) ( *( (fPt) ((* (ptr) pd12 ))))(base←v7952, exp←v7980, pd12)); }; } static word SetExceptionFlag←P1860(which←v8268) word which←v8268; { word fault←v8312; /* SetExceptionFlag: */ SOURCE(21476, 335) SOURCE(21476, 335) fault←v8312 = 0; SOURCE(21584, 227) { word var←c22956; var←c22956 = which←v8268; switch (var←c22956) { case 0: break; case 1: SOURCE(21623, 30) fault←v8312 = (fault←v8312 & 4294967287) | (((1)) << 3); break; case 2: SOURCE(21667, 22) fault←v8312 = (fault←v8312 & 4294967293) | (((1)) << 1); break; case 3: SOURCE(21704, 23) fault←v8312 = (fault←v8312 & 4294967294) | ((1)); break; case 4: SOURCE(21742, 28) fault←v8312 = (fault←v8312 & 4294967291) | (((1)) << 2); break; case 5: SOURCE(21781, 30) fault←v8312 = (fault←v8312 & 4294967287) | (((1)) << 3); break; default: SOURCE(21824, 5) (void) XR←RaiseUnnamedError(); break; }; }; SOURCE(21476, 335) return(fault←v8312); } static word RaiseFloatError←P1920(kind←v8372) word kind←v8372; { register ptr gf←c23148 = (ptr) &globalframe; word var←c8416; word var←c23020; W2 var←c0289; word var←c0290; /* RaiseFloatError: */ SOURCE(21835, 190) SOURCE(21900, 37) (* (( (ptr) gf←c23148)+4)/* floatErrorCount←v4120 */ ) = ((* (( (ptr) gf←c23148)+4)/* floatErrorCount←v4120 */ ) + 1); SOURCE(21939, 63) var←c23020 = (word) SetExceptionFlag←P1860(kind←v8372); (* (ptr) (word) &var←c0289 ) = var←c23020; (* (( (ptr) (word) &var←c0289) + 1) ) = 0; (void) (XR←RaiseSignal((* (( (ptr) (* (( (ptr) gf←c23148)+63)/* var←c22988 */ ))+11) ), (word) &var←c0290, (word) &var←c0289) ); if ((0 != var←c0290)) { SOURCE(22002, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(22009, 16) return(0); } static word GetStickyFlags←P1980() { register ptr gf←c23180 = (ptr) &globalframe; word var←c8476; /* GetStickyFlags: */ SOURCE(22031, 79) SOURCE(22086, 24) return((* (( (ptr) gf←c23180)+5)/* floatErrorFlags←v4148 */ )); } static word SetStickyFlags←P2040(new←v8536) word new←v8536; { register ptr gf←c23212 = (ptr) &globalframe; word old←v8580; /* SetStickyFlags: */ SOURCE(22116, 151) SOURCE(22116, 151) old←v8580 = 0; SOURCE(22223, 21) old←v8580 = (* (( (ptr) gf←c23212)+5)/* floatErrorFlags←v4148 */ ); SOURCE(22246, 21) (* (( (ptr) gf←c23212)+5)/* floatErrorFlags←v4148 */ ) = new←v8536; SOURCE(22116, 151) return(old←v8580); } /* file: FloatOpsImpl, module: FloatOpsImpl, compiled at: February 21, 1992 11:53:27 pm PST */ extern void XR←install←FloatOpsImpl() { NoName←Q5268(); } extern void XR←run←FloatOpsImpl() { XR←Start(&globalframe); }