/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 9:05:08 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: DRealImpl, module: DRealImpl */ /* switches: bcfhklnouw */ #include #include static char versionStamp[] = "@(#)mob_version [1187355559,2157231177] DRealImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef struct {word f0, f1, f2, f3;} W4; typedef struct {word f0, f1;} W2; typedef W2 *W2Pt; typedef W4 *W4Pt; typedef word (*fPt)(); #define SOURCE(p, l) /* source p, l */ static double fc4 = 1.0; static double fc5 = 10.0; static double fc6 = 9.0; static double fc8 = 0.0; #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR_RaiseBoundsFault()) : (idx) ) #define SGNCK(i) ((int) (word) (i) < 0 ? XR_RaiseArithmeticFault(): i ) static void NoName_Q2184(); static void DRealImpl_P0(); static void ComputeMagic_P60(); static void FScale_P120(); static void Round_P180(); static void Fix_P240(); static void Ceiling_P300(); static void Floor_P360(); static void XRound_P420(); static void TenToThe_P480(); static void RealToPair_P540(); static void DebugPrint_P600(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\106\305\233\247\300\200\224\274\111\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\233\213\041\256\300\330\147\331\041\100\150\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\325\357\120\064\300\204\001\046\072\100\150\000\000"}; static struct { word f0[16]; 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[3]; } globalframe = { {0}, (word) DebugPrint_P600, 0, (word) RealToPair_P540, 0, (word) TenToThe_P480, 0, (word) XRound_P420, 0, (word) Floor_P360, 0, (word) Ceiling_P300, 0, (word) Fix_P240, 0, (word) Round_P180, 0, (word) FScale_P120, 0, (word) ComputeMagic_P60, 0, (word) DRealImpl_P0, {0} }; static void NoName_Q2184() { register ptr gf_c0146 = (ptr) &globalframe; word var_c12500; (void) XR_DeclareGlobalFrame((word) "DRealImpl", &globalframe, (word) XR_GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf_c0146)+144) /* var_c11092 */ ); var_c12500 = (word) XR_ImportInterface((word) "DRealSupport", (word) XR_GetTypeIndexS((word) (&string2)), 26); (* (( (ptr) gf_c0146)+38)/* var_c11380 */ ) = var_c12500; (void) XR_ImportProcS(var_c12500, 67633153); (void) XR_ImportProcS(var_c12500, 135006210); var_c12500 = (word) XR_ExportInterface((word) "DReal", (word) XR_GetTypeIndexS((word) (&string3)), 7); (* (( (ptr) gf_c0146)+39)/* var_c12532 */ ) = var_c12500; (void) XR_ExportProcS(var_c12500, (word) (( (bPt) gf_c0146)+128)/* var_c11028 */ , 135004162); (void) XR_ExportProcS(var_c12500, (word) (( (bPt) gf_c0146)+112)/* var_c10964 */ , 134742273); (void) XR_ExportProcS(var_c12500, (word) (( (bPt) gf_c0146)+120)/* var_c10996 */ , 134742529); (void) XR_ExportProcS(var_c12500, (word) (( (bPt) gf_c0146)+104)/* var_c10932 */ , 134742785); (void) XR_ExportProcS(var_c12500, (word) (( (bPt) gf_c0146)+96)/* var_c10900 */ , 134743041); (void) XR_ExportProcS(var_c12500, (word) (( (bPt) gf_c0146)+72)/* var_c10804 */ , 269223426); } static void DRealImpl_P0(formal_c026, formal_c018) word formal_c026; word formal_c018; { register ptr gf_c12564 = (ptr) &globalframe; /* DRealImpl: */ SOURCE(61, 2899) SOURCE(348, 35) (void) ComputeMagic_P60((word) ((( (bPt) gf_c12564)+16)/* magic_v2580 */ )); SOURCE(1809, 38) { W4 var_c11124; W4 result_v10692; W2 a_v10724; a_v10724 = (* (W2Pt) &fc4 ); (void) XR_ExtendedFromDReal((word) &a_v10724, (word) &result_v10692); var_c11124 = result_v10692; (* (W4Pt) (( (ptr) gf_c12564)+8)/* one_v2804 */ ) = var_c11124; }; SOURCE(1849, 39) { W4 var_c11156; W4 result_v10612; W2 a_v10644; a_v10644 = (* (W2Pt) &fc5 ); (void) XR_ExtendedFromDReal((word) &a_v10644, (word) &result_v10612); var_c11156 = result_v10612; (* (W4Pt) (( (ptr) gf_c12564)+12)/* ten_v2832 */ ) = var_c11156; }; } static void ComputeMagic_P60(formal_c041) word formal_c041; { W4 var_c3524; W4 one_v4584; W4 m_v4612; /* ComputeMagic: */ SOURCE(385, 231) SOURCE(430, 38) { W4 result_v10532; W2 a_v10564; a_v10564 = (* (W2Pt) &fc4 ); (void) XR_ExtendedFromDReal((word) &a_v10564, (word) &result_v10532); one_v4584 = result_v10532; }; SOURCE(470, 48) { W4 result_v10452; W2 a_v10484; a_v10484 = (* (W2Pt) &fc6 ); (void) XR_ExtendedFromDReal((word) &a_v10484, (word) &result_v10452); m_v4612 = result_v10452; }; SOURCE(520, 64) lab_L100007: ; if ((m_v4612.f3 != 1)) { } else { goto lab_L100005; }; SOURCE(538, 46) { W4 var_c11284; W4 result_v10104; W4 a_v10136; W4 b_v10164; { W4 result_v9996; W4 a_v10028; W4 b_v10056; a_v10028 = m_v4612; b_v10056 = m_v4612; (void) XR_ExtendedFloatAdd((word) &a_v10028, (word) &b_v10056, (word) &result_v9996); a_v10136 = result_v9996; }; b_v10164 = one_v4584; (void) XR_ExtendedFloatSubtract((word) &a_v10136, (word) &b_v10164, (word) &result_v10104); var_c11284 = result_v10104; m_v4612 = var_c11284; }; goto lab_L100007; lab_L100005: ; SOURCE(595, 8) m_v4612.f3 = 0; SOURCE(605, 11) var_c3524 = m_v4612; /* removed tail goto */ (* (W4Pt) formal_c041 ) = var_c3524; return; } static void FScale_P120(formal_c047, a_v3584, scale_v3612) word formal_c047; W2 a_v3584; word scale_v3612; { register ptr gf_c12596 = (ptr) &globalframe; W2 var_c3656; /* FScale: */ SOURCE(620, 106) SOURCE(687, 39) { W2 var_c11412; { word pd7; pd7 = (* (( (ptr) (* (( (ptr) gf_c12596)+38)/* var_c11380 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd7 ))))((word) &var_c11412, a_v3584, scale_v3612, pd7); }; var_c3656 = var_c11412; /* removed tail goto */ }; (* (W2Pt) formal_c047 ) = var_c3656; return; } static void Round_P180(formal_c058, dreal_v3716) word formal_c058; W2 dreal_v3716; { register ptr gf_c12628 = (ptr) &globalframe; W2 var_c3760; word neg_v4656; W4 m_v4684; word chk_v4712; /* Round: */ SOURCE(730, 304) SOURCE(783, 21) neg_v4656 = XR_DRealGtI(&fc8, &dreal_v3716); SOURCE(806, 73) { W4 result_v9888; W4 a_v9920; W4 b_v9948; { W4 result_v10372; W2 a_v10404; XR_DRealAbsI(&a_v10404, &dreal_v3716); (void) XR_ExtendedFromDReal((word) &a_v10404, (word) &result_v10372); a_v9920 = result_v10372; }; b_v9948 = (* (W4Pt) (( (ptr) gf_c12628)+4)/* magic_v2580 */ ); (void) XR_ExtendedFloatAdd((word) &a_v9920, (word) &b_v9948, (word) &result_v9888); m_v4684 = result_v9888; }; SOURCE(881, 82) { word tc9; W2 D10; W2 D11; W2 D12; W2 D13; W2 D14; word idx15; if ( ! XR_EqualWords(&m_v4684, (( (ptr) gf_c12628)+4), 2)) { tc9 = (word) 1; } else { XR_DCardCard(&D12, 2); XR_DCardCard(&D13, 63); XR_DCardPwrI(&D11, &D12, &D13); XR_DCardCard(&D14, (0 == neg_v4656)); XR_DCardSubI(&D10, &D11, &D14); tc9 = (word) XR_DCardGtI((( (ptr) gf_c12628)+6), &D10); }; chk_v4712 = ( idx15 = (word) tc9, BCK(idx15, 1) ); }; SOURCE(965, 69) { W2 D16; if ((0 != neg_v4656)) { XR_DIntNegI(&D16, (( (ptr) &m_v4684)+2)); var_c3760 = D16; } else { var_c3760 = (* (W2Pt) (( (ptr) &m_v4684)+2) ); }; }; /* removed tail goto */ (* (W2Pt) formal_c058 ) = var_c3760; return; } static void Fix_P240(formal_c069, dreal_v3820) word formal_c069; W2 dreal_v3820; { register ptr gf_c12660 = (ptr) &globalframe; W2 var_c3864; word neg_v4776; W4 m_v4804; word chk_v4832; /* Fix: */ SOURCE(1038, 346) SOURCE(1089, 21) neg_v4776 = XR_DRealGtI(&fc8, &dreal_v3820); SOURCE(1112, 73) { W4 result_v9780; W4 a_v9812; W4 b_v9840; { W4 result_v10292; W2 a_v10324; XR_DRealAbsI(&a_v10324, &dreal_v3820); (void) XR_ExtendedFromDReal((word) &a_v10324, (word) &result_v10292); a_v9812 = result_v10292; }; b_v9840 = (* (W4Pt) (( (ptr) gf_c12660)+4)/* magic_v2580 */ ); (void) XR_ExtendedFloatAdd((word) &a_v9812, (word) &b_v9840, (word) &result_v9780); m_v4804 = result_v9780; }; SOURCE(1187, 83) { word tc17; W2 D18; W2 D19; W2 D20; W2 D21; W2 D22; word idx23; if ( ! XR_EqualWords(&m_v4804, (( (ptr) gf_c12660)+4), 2)) { tc17 = (word) 1; } else { XR_DCardCard(&D20, 2); XR_DCardCard(&D21, 63); XR_DCardPwrI(&D19, &D20, &D21); XR_DCardCard(&D22, (0 == neg_v4776)); XR_DCardSubI(&D18, &D19, &D22); tc17 = (word) XR_DCardGtI((( (ptr) gf_c12660)+6), &D18); }; chk_v4832 = ( idx23 = (word) tc17, BCK(idx23, 1) ); }; SOURCE(1272, 41) { W2 D24; W2 x25; XR_DFloatDCardI(&D24, ((( (ptr) &m_v4804)+2))); XR_DRealAbsI(&x25, &dreal_v3820); if (XR_DRealGtI(&D24, &x25)) { SOURCE(1298, 15) { W2 D26; W2 D27; XR_DCardCard(&D27, 1); XR_DCardSubI(&D26, (( (ptr) &m_v4804)+2), &D27); (* (W2Pt) (( (ptr) &m_v4804)+2) ) = D26; }; }; }; SOURCE(1315, 69) { W2 D28; if ((0 != neg_v4776)) { XR_DIntNegI(&D28, (( (ptr) &m_v4804)+2)); var_c3864 = D28; } else { var_c3864 = (* (W2Pt) (( (ptr) &m_v4804)+2) ); }; }; /* removed tail goto */ (* (W2Pt) formal_c069 ) = var_c3864; return; } static void Ceiling_P300(formal_c073, dreal_v3924) word formal_c073; W2 dreal_v3924; { W2 ans_v3968; /* Ceiling: */ SOURCE(1388, 113) SOURCE(1448, 18) (void) Round_P180((word) &ans_v3968, dreal_v3924); SOURCE(1468, 33) { W2 D29; XR_DFloatDIntI(&D29, (&ans_v3968)); if (XR_DRealGtI(&dreal_v3924, &D29)) { SOURCE(1488, 13) { W2 D30; W2 D31; XR_DCardCard(&D31, 1); XR_DCardAddI(&D30, &ans_v3968, &D31); ans_v3968 = D30; }; }; }; /* removed tail goto */ (* (W2Pt) formal_c073 ) = ans_v3968; return; } static void Floor_P360(formal_c077, dreal_v4028) word formal_c077; W2 dreal_v4028; { W2 ans_v4072; /* Floor: */ SOURCE(1507, 111) SOURCE(1565, 18) (void) Round_P180((word) &ans_v4072, dreal_v4028); SOURCE(1585, 33) { W2 D32; XR_DFloatDIntI(&D32, (&ans_v4072)); if (XR_DRealGtI(&D32, &dreal_v4028)) { SOURCE(1605, 13) { W2 D33; W2 D34; XR_DCardCard(&D34, 1); XR_DCardSubI(&D33, &ans_v4072, &D34); ans_v4072 = D33; }; }; }; /* removed tail goto */ (* (W2Pt) formal_c077 ) = ans_v4072; return; } static void XRound_P420(formal_c085, xreal_v4132, neg_v4160) word formal_c085; W4 xreal_v4132; word neg_v4160; { register ptr gf_c12692 = (ptr) &globalframe; W2 var_c4204; W4 m_v4896; /* XRound: */ SOURCE(1624, 181) SOURCE(1685, 49) { W4 result_v9672; W4 a_v9704; W4 b_v9732; a_v9704 = xreal_v4132; b_v9732 = (* (W4Pt) (( (ptr) gf_c12692)+4)/* magic_v2580 */ ); (void) XR_ExtendedFloatAdd((word) &a_v9704, (word) &b_v9732, (word) &result_v9672); m_v4896 = result_v9672; }; SOURCE(1736, 69) { W2 D35; if ((0 != neg_v4160)) { XR_DIntNegI(&D35, (( (ptr) &m_v4896)+2)); var_c4204 = D35; } else { var_c4204 = (* (W2Pt) (( (ptr) &m_v4896)+2) ); }; }; /* removed tail goto */ (* (W2Pt) formal_c085 ) = var_c4204; return; } static void TenToThe_P480(formal_c0109, i_v4264) word formal_c0109; word i_v4264; { register ptr gf_c12724 = (ptr) &globalframe; W4 var_c4308; /* TenToThe: */ SOURCE(1891, 286) if ((i_v4264 == 0)) { SOURCE(2043, 12) var_c4308 = (* (W4Pt) (( (ptr) gf_c12724)+8)/* one_v2804 */ ); /* removed tail goto */ } else { if ((i_v4264 == 1)) { SOURCE(2066, 12) var_c4308 = (* (W4Pt) (( (ptr) gf_c12724)+12)/* ten_v2832 */ ); /* removed tail goto */ } else { if (((i_v4264 & 1) == 0)) { SOURCE(2095, 27) { W4 var_c11892; { W4 var_c11796; W4 d_v8824; (void) TenToThe_P480((word) &d_v8824, (i_v4264 >> 1)); SOURCE(1991, 23) { W4 var_c11860; W4 result_v9348; W4 a_v9380; W4 b_v9408; a_v9380 = d_v8824; b_v9408 = d_v8824; (void) XR_ExtendedFloatMultiply((word) &a_v9380, (word) &b_v9408, (word) &result_v9348); var_c11860 = result_v9348; var_c11796 = var_c11860; }; var_c11892 = var_c11796; }; var_c4308 = var_c11892; /* removed tail goto */ }; } else { SOURCE(2135, 42) { W4 var_c12084; { W4 var_c11956; W4 result_v9456; W4 a_v9488; W4 b_v9516; a_v9488 = (* (W4Pt) (( (ptr) gf_c12724)+12)/* ten_v2832 */ ); { W4 d_v8776; (void) TenToThe_P480((word) &d_v8776, (i_v4264 >> 1)); SOURCE(1991, 23) { W4 var_c12052; W4 result_v9564; W4 a_v9596; W4 b_v9624; a_v9596 = d_v8776; b_v9624 = d_v8776; (void) XR_ExtendedFloatMultiply((word) &a_v9596, (word) &b_v9624, (word) &result_v9564); var_c12052 = result_v9564; b_v9516 = var_c12052; }; }; (void) XR_ExtendedFloatMultiply((word) &a_v9488, (word) &b_v9516, (word) &result_v9456); var_c11956 = result_v9456; var_c12084 = var_c11956; }; var_c4308 = var_c12084; /* removed tail goto */ }; }; }; }; (* (W4Pt) formal_c0109 ) = var_c4308; return; } static void RealToPair_P540(formal_c0144, r_v4368, precision_v4396) word formal_c0144; W2 r_v4368; word precision_v4396; { register ptr gf_c12756 = (ptr) &globalframe; word type_v4440; W2 fr_v4468; word exp10_v4496; /* RealToPair: */ SOURCE(2183, 777) SOURCE(2297, 663) { word var_c12116; { word pd36; pd36 = (* (( (ptr) (* (( (ptr) gf_c12756)+38)/* var_c11380 */ ))+4) ); var_c12116 = (word) ( *( (fPt) ((* (ptr) pd36 ))))(r_v4368, pd36); }; switch (var_c12116) { case 0: SOURCE(2344, 20) type_v4440 = 1; { W2 D37; XR_DCardCard(&D37, 0); fr_v4468 = D37; }; exp10_v4496 = 0; /* removed tail goto */ break; case 3: SOURCE(2381, 73) if (XR_DRealGtI(&fc8, &r_v4368)) { fr_v4468.f0 = 2147483648; fr_v4468.f1 = 0; } else { fr_v4468.f0 = 0; fr_v4468.f1 = 0; }; type_v4440 = 2; exp10_v4496 = 2147483647; /* removed tail goto */ break; case 4: case 5: case 6: SOURCE(2486, 29) type_v4440 = 3; fr_v4468 = r_v4368; exp10_v4496 = 0; /* removed tail goto */ break; default: SOURCE(2529, 433) { W4 vMin_v5088; W4 vMax_v5116; word negative_v5144; W4 v_v5172; word exponent_v5200 = 0; word var_c12244; W4 a_v9056; W4 b_v9084; word var_c12340; W4 a_v8980; W4 b_v9008; SOURCE(2531, 38) (void) TenToThe_P480((word) &vMin_v5088, SGNCK((precision_v4396 - 1))); SOURCE(2571, 36) { W4 result_v9240; W4 a_v9272; W4 b_v9300; a_v9272 = vMin_v5088; b_v9300 = (* (W4Pt) (( (ptr) gf_c12756)+12)/* ten_v2832 */ ); (void) XR_ExtendedFloatMultiply((word) &a_v9272, (word) &b_v9300, (word) &result_v9240); vMax_v5116 = result_v9240; }; SOURCE(2609, 22) negative_v5144 = XR_DRealGtI(&fc8, &r_v4368); SOURCE(2633, 59) { W4 result_v10212; W2 a_v10244; if ((0 != negative_v5144)) { XR_DRealNegI(&a_v10244, &r_v4368); } else { a_v10244 = r_v4368; }; (void) XR_ExtendedFromDReal((word) &a_v10244, (word) &result_v10212); v_v5172 = result_v10212; }; SOURCE(2713, 13) (void) DebugPrint_P600(v_v5172); SOURCE(2728, 81) lab_L100032: ; a_v9056 = v_v5172; b_v9084 = vMax_v5116; var_c12244 = (word) XR_ExtendedFloatLess((word) &a_v9056, (word) &b_v9084); if (((0 == var_c12244) )) { } else { goto lab_L100030; }; SOURCE(2751, 18) { W4 var_c12308; W4 result_v8872; W4 a_v8904; W4 b_v8932; a_v8904 = v_v5172; b_v8932 = (* (W4Pt) (( (ptr) gf_c12756)+12)/* ten_v2832 */ ); (void) XR_ExtendedFloatDivide((word) &a_v8904, (word) &b_v8932, (word) &result_v8872); var_c12308 = result_v8872; v_v5172 = var_c12308; }; SOURCE(2771, 23) exponent_v5200 = (exponent_v5200 + 1); SOURCE(2796, 13) (void) DebugPrint_P600(v_v5172); goto lab_L100032; lab_L100030: ; SOURCE(2820, 83) lab_L100037: ; a_v8980 = v_v5172; b_v9008 = vMin_v5088; var_c12340 = (word) XR_ExtendedFloatLess((word) &a_v8980, (word) &b_v9008); if ((var_c12340 )) { } else { goto lab_L100035; }; SOURCE(2843, 20) { W4 var_c12404; W4 result_v9132; W4 a_v9164; W4 b_v9192; a_v9164 = v_v5172; b_v9192 = (* (W4Pt) (( (ptr) gf_c12756)+12)/* ten_v2832 */ ); (void) XR_ExtendedFloatMultiply((word) &a_v9164, (word) &b_v9192, (word) &result_v9132); var_c12404 = result_v9132; v_v5172 = var_c12404; }; SOURCE(2865, 23) exponent_v5200 = (exponent_v5200 - 1); SOURCE(2890, 13) (void) DebugPrint_P600(v_v5172); goto lab_L100037; lab_L100035: ; SOURCE(2914, 46) { W2 var_c12468; (void) XRound_P420((word) &var_c12468, v_v5172, negative_v5144); type_v4440 = 0; fr_v4468 = var_c12468; exp10_v4496 = exponent_v5200; /* removed tail goto */ }; }; break; }; }; (* (ptr) formal_c0144 ) = type_v4440; (* (W2Pt) (( (ptr) formal_c0144)+1) ) = fr_v4468; (* (( (ptr) formal_c0144)+3) ) = exp10_v4496; return; } static void DebugPrint_P600(x_v4556) W4 x_v4556; { /* DebugPrint: */ } /* file: DRealImpl, module: DRealImpl, compiled at: February 21, 1992 9:05:07 pm PST */ extern void XR_install_DRealImpl() { NoName_Q2184(); } extern void XR_run_DRealImpl() { XR_Start(&globalframe); }