/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */ /* time: May 6, 1993 5:09:58 pm PDT */ /* C2C version: April 20, 1993 (sun4) */ /* ref-counting: off */ /* file: DRealFnsImpl, module: DRealFnsImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> #include <math.h> static char versionStamp[] = "@(#)mob←version [1540242556,385679509] DRealFnsImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef struct {word f0, f1;} W2; typedef W2 *W2Pt; typedef word (*fPt)(); #define SOURCE(p, l) /* source p, l */ static double fc7 = 3.14159265358979323846264338327950288419716939937510; static double fc8 = 180.0; static double fc14 = 1.0; #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) static double fc19 = 0.0; #define IOP2(op, x, y) ( (word) ((x) op (y)) ) static void NoName←Q2136(); static void DRealFnsImpl←P0(); static void Exp←P60(); static void Ln←P120(); static void Log←P180(); static void Power←P240(); static void Root←P300(); static void SqRt←P360(); static void Sin←P420(); static void SinDeg←P480(); static void Cos←P540(); static void CosDeg←P600(); static void Tan←P660(); static void TanDeg←P720(); static void ArcTan←P780(); static void ArcTanDeg←P840(); static void SinH←P900(); static void CosH←P960(); static void TanH←P1020(); static void CotH←P1080(); static void InvSinH←P1140(); static void InvCosH←P1200(); static void InvTanH←P1260(); static void InvCotH←P1320(); static void LnGamma←P1380(); static void Gamma←P1440(); static void J0←P1500(); static void J1←P1560(); static void Jn←P1620(); static void Y0←P1680(); static void Y1←P1740(); static void Yn←P1800(); static void RationalFromDReal←P1860(); static word AlmostZero←P1920(); static word AlmostEqual←P1980(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\133\316\074\174\300\026\375\000\225\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\150\261\123\070\300\276\161\220\062\100\150\000\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\224\176\272\123\300\120\106\320\206\100\150\000\000"}; static struct { word f0[4]; word f4; word f5; 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; word f62; word f63; word f64; word f65; word f66; word f67; word f68; word f69; word f70; word f71[4]; } globalframe = { {0}, (word) AlmostEqual←P1980, 0, (word) AlmostZero←P1920, 0, (word) RationalFromDReal←P1860, 0, (word) Yn←P1800, 0, (word) Y1←P1740, 0, (word) Y0←P1680, 0, (word) Jn←P1620, 0, (word) J1←P1560, 0, (word) J0←P1500, 0, (word) Gamma←P1440, 0, (word) LnGamma←P1380, 0, (word) InvCotH←P1320, 0, (word) InvTanH←P1260, 0, (word) InvCosH←P1200, 0, (word) InvSinH←P1140, 0, (word) CotH←P1080, 0, (word) TanH←P1020, 0, (word) CosH←P960, 0, (word) SinH←P900, 0, (word) ArcTanDeg←P840, 0, (word) ArcTan←P780, 0, (word) TanDeg←P720, 0, (word) Tan←P660, 0, (word) CosDeg←P600, 0, (word) Cos←P540, 0, (word) SinDeg←P480, 0, (word) Sin←P420, 0, (word) SqRt←P360, 0, (word) Root←P300, 0, (word) Power←P240, 0, (word) Log←P180, 0, (word) Ln←P120, 0, (word) Exp←P60, 0, (word) DRealFnsImpl←P0, {0} }; #define DRealPtr(x) (*((double *) (x))) extern void XR←DRealExpI (ret, x) W2 *ret, *x; { DRealPtr(ret) = exp(DRealPtr(x)); } extern void XR←DRealLogI (ret, x) W2 *ret, *x; { DRealPtr(ret) = log(DRealPtr(x)); } extern void XR←DRealSqrtI (ret, x) W2 *ret, *x; { DRealPtr(ret) = sqrt(DRealPtr(x)); } extern void XR←DRealSinI (ret, x) W2 *ret, *x; { DRealPtr(ret) = sin(DRealPtr(x)); } extern void XR←DRealCosI (ret, x) W2 *ret, *x; { DRealPtr(ret) = cos(DRealPtr(x)); } extern void XR←DRealTanI (ret, x) W2 *ret, *x; { DRealPtr(ret) = tan(DRealPtr(x)); } extern void XR←DRealArcTanI (ret, y, x) W2 *ret, *x; { DRealPtr(ret) = atan2(DRealPtr(y), DRealPtr(x)); } extern void XR←DRealSinHI (ret, x) W2 *ret, *x; { DRealPtr(ret) = sinh(DRealPtr(x)); } extern void XR←DRealCosHI (ret, x) W2 *ret, *x; { DRealPtr(ret) = cosh(DRealPtr(x)); } extern void XR←DRealTanHI (ret, x) W2 *ret, *x; { DRealPtr(ret) = tanh(DRealPtr(x)); } extern void XR←DRealInvSinHI (ret, x) W2 *ret, *x; { DRealPtr(ret) = asinh(DRealPtr(x)); } extern void XR←DRealInvCosHI (ret, x) W2 *ret, *x; { DRealPtr(ret) = acosh(DRealPtr(x)); } extern void XR←DRealInvTanHI (ret, x) W2 *ret, *x; { DRealPtr(ret) = atanh(DRealPtr(x)); } extern void XR←DRealLnGammaI (ret, x) W2 *ret, *x; { DRealPtr(ret) = lgamma(DRealPtr(x)); } extern void XR←DRealJ0I (ret, x) W2 *ret, *x; { DRealPtr(ret) = j0(DRealPtr(x)); } extern void XR←DRealJ1I (ret, x) W2 *ret, *x; { DRealPtr(ret) = j1(DRealPtr(x)); } extern void XR←DRealJnI (ret, n, x) W2 *ret; word n; W2 *x; { DRealPtr(ret) = jn(((int) n), DRealPtr(x)); } extern void XR←DRealY0I (ret, x) W2 *ret, *x; { DRealPtr(ret) = y0(DRealPtr(x)); } extern void XR←DRealY1I (ret, x) W2 *ret, *x; { DRealPtr(ret) = y1(DRealPtr(x)); } extern void XR←DRealYnI (ret, n, x) W2 *ret; word n; W2 *x; { DRealPtr(ret) = yn(((int) n), DRealPtr(x)); } static void NoName←Q2136() { register ptr gf←c0193 = (ptr) &globalframe; word var←c13612; (void) XR←DeclareGlobalFrame((word) "DRealFnsImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c0193)+280) /* var←c12620 */ ); var←c13612 = (word) XR←ImportInterface((word) "DRealSupport", (word) XR←GetTypeIndexS((word) (&string2)), 26); (* (( (ptr) gf←c0193)+73)/* var←c13452 */ ) = var←c13612; (void) XR←ImportProcS(var←c13612, 67633153); (void) XR←ImportProcS(var←c13612, 135006210); (void) XR←ImportProcS(var←c13612, 67634689); var←c13612 = (word) XR←ImportInterface((word) "FloatingPointCommon", (word) XR←GetTypeIndexS((word) (&string3)), 5); (* (( (ptr) gf←c0193)+72)/* var←c13324 */ ) = var←c13612; var←c13612 = (word) XR←ExportInterface((word) "DRealFns", (word) XR←GetTypeIndexS((word) (&string4)), 33); (* (( (ptr) gf←c0193)+74)/* var←c13644 */ ) = var←c13612; (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+272)/* var←c12588 */ , 134742017); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+264)/* var←c12556 */ , 134742273); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+256)/* var←c12524 */ , 135266818); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+248)/* var←c12492 */ , 135267074); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+240)/* var←c12460 */ , 135267330); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+232)/* var←c12428 */ , 134743297); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+224)/* var←c12396 */ , 134743553); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+216)/* var←c12364 */ , 134743809); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+208)/* var←c12332 */ , 134744065); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+200)/* var←c12300 */ , 134744321); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+192)/* var←c12268 */ , 134744577); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+184)/* var←c12236 */ , 134744833); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+176)/* var←c12204 */ , 135269378); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+168)/* var←c12172 */ , 135269634); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+160)/* var←c12140 */ , 134745601); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+152)/* var←c12108 */ , 134745857); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+144)/* var←c12076 */ , 134746113); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+136)/* var←c12044 */ , 134746369); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+128)/* var←c12012 */ , 134746625); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+120)/* var←c11980 */ , 134746881); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+112)/* var←c11948 */ , 134747137); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+104)/* var←c11916 */ , 134747393); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+96)/* var←c11884 */ , 134747649); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+88)/* var←c11852 */ , 134747905); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+80)/* var←c11820 */ , 134748161); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+72)/* var←c11788 */ , 134748417); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+64)/* var←c11756 */ , 135010818); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+56)/* var←c11724 */ , 134748929); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+48)/* var←c11692 */ , 134749185); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+40)/* var←c11660 */ , 135011586); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+32)/* var←c11628 */ , 135011842); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+24)/* var←c11596 */ , 67903234); (void) XR←ExportProcS(var←c13612, (word) (( (bPt) gf←c0193)+16)/* var←c11564 */ , 68427779); } static void DRealFnsImpl←P0(formal←c040, formal←c039) word formal←c040; word formal←c039; { /* DRealFnsImpl: */ } static void Exp←P60(formal←c043, x←v3724) word formal←c043; W2 x←v3724; { W2 ret←v3768; /* Exp: */ SOURCE(208, 276) SOURCE(465, 19) (void) XR←DRealExpI((word) &ret←v3768, (word) &x←v3724); /* removed tail goto */ (* (W2Pt) formal←c043 ) = ret←v3768; return; } static void Ln←P120(formal←c046, x←v3828) word formal←c046; W2 x←v3828; { W2 ret←v3872; /* Ln: */ SOURCE(489, 275) SOURCE(745, 19) (void) XR←DRealLogI((word) &ret←v3872, (word) &x←v3828); /* removed tail goto */ (* (W2Pt) formal←c046 ) = ret←v3872; return; } static void Log←P180(formal←c053, base←v3932, arg←v3960) word formal←c053; W2 base←v3932; W2 arg←v3960; { W2 var←c4004; /* Log: */ SOURCE(769, 81) SOURCE(825, 25) { W2 var←c12684; { W2 var←c051; W2 var←c052; (void) Ln←P120((word) &var←c051, arg←v3960); (void) Ln←P120((word) &var←c052, base←v3932); XR←DRealDivI(&var←c12684, &var←c051, &var←c052); }; var←c4004 = var←c12684; /* removed tail goto */ }; (* (W2Pt) formal←c053 ) = var←c4004; return; } static void Power←P240(formal←c061, base←v4064, exponent←v4092) word formal←c061; W2 base←v4064; W2 exponent←v4092; { W2 var←c4136; /* Power: */ SOURCE(855, 94) SOURCE(918, 31) { W2 var←c12780; { W2 var←c12748; { W2 var←c059; (void) Ln←P120((word) &var←c059, base←v4064); XR←DRealMulI(&var←c12748, &exponent←v4092, &var←c059); }; { W2 var←c060; (void) Exp←P60((word) &var←c060, var←c12748); var←c12780 = var←c060; }; }; var←c4136 = var←c12780; /* removed tail goto */ }; (* (W2Pt) formal←c061 ) = var←c4136; return; } static void Root←P300(formal←c069, index←v4196, arg←v4224) word formal←c069; W2 index←v4196; W2 arg←v4224; { W2 var←c4268; /* Root: */ SOURCE(954, 85) SOURCE(1012, 27) { W2 var←c12876; { W2 var←c12844; { W2 var←c067; (void) Ln←P120((word) &var←c067, arg←v4224); XR←DRealDivI(&var←c12844, &var←c067, &index←v4196); }; { W2 var←c068; (void) Exp←P60((word) &var←c068, var←c12844); var←c12876 = var←c068; }; }; var←c4268 = var←c12876; /* removed tail goto */ }; (* (W2Pt) formal←c069 ) = var←c4268; return; } static void SqRt←P360(formal←c072, x←v4328) word formal←c072; W2 x←v4328; { W2 ret←v4372; /* SqRt: */ SOURCE(1044, 282) SOURCE(1306, 20) (void) XR←DRealSqrtI((word) &ret←v4372, (word) &x←v4328); /* removed tail goto */ (* (W2Pt) formal←c072 ) = ret←v4372; return; } static void Sin←P420(formal←c075, radians←v4432) word formal←c075; W2 radians←v4432; { W2 ret←v4476; /* Sin: */ SOURCE(1331, 288) SOURCE(1594, 25) (void) XR←DRealSinI((word) &ret←v4476, (word) &radians←v4432); /* removed tail goto */ (* (W2Pt) formal←c075 ) = ret←v4476; return; } static void SinDeg←P480(formal←c080, degrees←v4536) word formal←c080; W2 degrees←v4536; { W2 var←c4580; /* SinDeg: */ SOURCE(1625, 95) SOURCE(1682, 38) { W2 var←c12940; { W2 x5; W2 x6; XR←DRealDivI(&x6, &fc7, &fc8); XR←DRealMulI(&x5, &x6, °rees←v4536); (void) Sin←P420((word) &var←c12940, x5); }; var←c4580 = var←c12940; /* removed tail goto */ }; (* (W2Pt) formal←c080 ) = var←c4580; return; } static void Cos←P540(formal←c083, radians←v4640) word formal←c083; W2 radians←v4640; { W2 ret←v4684; /* Cos: */ SOURCE(1726, 288) SOURCE(1989, 25) (void) XR←DRealCosI((word) &ret←v4684, (word) &radians←v4640); /* removed tail goto */ (* (W2Pt) formal←c083 ) = ret←v4684; return; } static void CosDeg←P600(formal←c088, degrees←v4744) word formal←c088; W2 degrees←v4744; { W2 var←c4788; /* CosDeg: */ SOURCE(2020, 95) SOURCE(2077, 38) { W2 var←c13004; { W2 x9; W2 x10; XR←DRealDivI(&x10, &fc7, &fc8); XR←DRealMulI(&x9, &x10, °rees←v4744); (void) Cos←P540((word) &var←c13004, x9); }; var←c4788 = var←c13004; /* removed tail goto */ }; (* (W2Pt) formal←c088 ) = var←c4788; return; } static void Tan←P660(formal←c091, radians←v4848) word formal←c091; W2 radians←v4848; { W2 ret←v4892; /* Tan: */ SOURCE(2121, 288) SOURCE(2384, 25) (void) XR←DRealTanI((word) &ret←v4892, (word) &radians←v4848); /* removed tail goto */ (* (W2Pt) formal←c091 ) = ret←v4892; return; } static void TanDeg←P720(formal←c096, degrees←v4952) word formal←c096; W2 degrees←v4952; { W2 var←c4996; /* TanDeg: */ SOURCE(2415, 95) SOURCE(2472, 38) { W2 var←c13068; { W2 x11; W2 x12; XR←DRealDivI(&x12, &fc7, &fc8); XR←DRealMulI(&x11, &x12, °rees←v4952); (void) Tan←P660((word) &var←c13068, x11); }; var←c4996 = var←c13068; /* removed tail goto */ }; (* (W2Pt) formal←c096 ) = var←c4996; return; } static void ArcTan←P780(formal←c0100, y←v5056, x←v5084) word formal←c0100; W2 y←v5056; W2 x←v5084; { W2 radians←v5128; /* ArcTan: */ SOURCE(2515, 327) SOURCE(2812, 30) (void) XR←DRealArcTanI((word) &radians←v5128, (word) &y←v5056, (word) &x←v5084); /* removed tail goto */ (* (W2Pt) formal←c0100 ) = radians←v5128; return; } static void ArcTanDeg←P840(formal←c0106, y←v5188, x←v5216) word formal←c0106; W2 y←v5188; W2 x←v5216; { W2 degrees←v5260; W2 radians←v8440; /* ArcTanDeg: */ SOURCE(2848, 130) SOURCE(2914, 29) (void) ArcTan←P780((word) &radians←v8440, y←v5188, x←v5216); SOURCE(2945, 33) { W2 x13; XR←DRealDivI(&x13, &fc8, &fc7); XR←DRealMulI(°rees←v5260, &x13, &radians←v8440); }; /* removed tail goto */ (* (W2Pt) formal←c0106 ) = degrees←v5260; return; } static void SinH←P900(formal←c0109, x←v5320) word formal←c0109; W2 x←v5320; { W2 ret←v5364; /* SinH: */ SOURCE(2983, 282) SOURCE(3245, 20) (void) XR←DRealSinHI((word) &ret←v5364, (word) &x←v5320); /* removed tail goto */ (* (W2Pt) formal←c0109 ) = ret←v5364; return; } static void CosH←P960(formal←c0112, x←v5424) word formal←c0112; W2 x←v5424; { W2 ret←v5468; /* CosH: */ SOURCE(3271, 282) SOURCE(3533, 20) (void) XR←DRealCosHI((word) &ret←v5468, (word) &x←v5424); /* removed tail goto */ (* (W2Pt) formal←c0112 ) = ret←v5468; return; } static void TanH←P1020(formal←c0115, x←v5528) word formal←c0115; W2 x←v5528; { W2 ret←v5572; /* TanH: */ SOURCE(3559, 282) SOURCE(3821, 20) (void) XR←DRealTanHI((word) &ret←v5572, (word) &x←v5528); /* removed tail goto */ (* (W2Pt) formal←c0115 ) = ret←v5572; return; } static void CotH←P1080(formal←c0120, x←v5632) word formal←c0120; W2 x←v5632; { W2 var←c5676; /* CotH: */ SOURCE(3847, 69) SOURCE(3896, 20) { W2 var←c13132; { W2 var←c0119; (void) TanH←P1020((word) &var←c0119, x←v5632); XR←DRealDivI(&var←c13132, &fc14, &var←c0119); }; var←c5676 = var←c13132; /* removed tail goto */ }; (* (W2Pt) formal←c0120 ) = var←c5676; return; } static void InvSinH←P1140(formal←c0123, x←v5736) word formal←c0123; W2 x←v5736; { W2 ret←v5780; /* InvSinH: */ SOURCE(3922, 298) SOURCE(4197, 23) (void) XR←DRealInvSinHI((word) &ret←v5780, (word) &x←v5736); /* removed tail goto */ (* (W2Pt) formal←c0123 ) = ret←v5780; return; } static void InvCosH←P1200(formal←c0126, x←v5840) word formal←c0126; W2 x←v5840; { W2 ret←v5884; /* InvCosH: */ SOURCE(4226, 298) SOURCE(4501, 23) (void) XR←DRealInvCosHI((word) &ret←v5884, (word) &x←v5840); /* removed tail goto */ (* (W2Pt) formal←c0126 ) = ret←v5884; return; } static void InvTanH←P1260(formal←c0129, x←v5944) word formal←c0129; W2 x←v5944; { W2 ret←v5988; /* InvTanH: */ SOURCE(4529, 298) SOURCE(4804, 23) (void) XR←DRealInvTanHI((word) &ret←v5988, (word) &x←v5944); /* removed tail goto */ (* (W2Pt) formal←c0129 ) = ret←v5988; return; } static void InvCotH←P1320(formal←c0134, x←v6048) word formal←c0134; W2 x←v6048; { W2 var←c6092; /* InvCotH: */ SOURCE(4832, 75) SOURCE(4884, 23) { W2 var←c13196; { W2 var←c0133; (void) InvTanH←P1260((word) &var←c0133, x←v6048); XR←DRealDivI(&var←c13196, &fc14, &var←c0133); }; var←c6092 = var←c13196; /* removed tail goto */ }; (* (W2Pt) formal←c0134 ) = var←c6092; return; } static void LnGamma←P1380(formal←c0137, x←v6152) word formal←c0137; W2 x←v6152; { W2 ret←v6196; /* LnGamma: */ SOURCE(4912, 299) SOURCE(5188, 23) (void) XR←DRealLnGammaI((word) &ret←v6196, (word) &x←v6152); /* removed tail goto */ (* (W2Pt) formal←c0137 ) = ret←v6196; return; } static void Gamma←P1440(formal←c0144, x←v6256) word formal←c0144; W2 x←v6256; { W2 var←c6300; /* Gamma: */ SOURCE(5217, 74) SOURCE(5267, 24) { W2 var←c13292; { W2 var←c13260; (void) LnGamma←P1380((word) &var←c13260, x←v6256); { W2 var←c0143; (void) Exp←P60((word) &var←c0143, var←c13260); var←c13292 = var←c0143; }; }; var←c6300 = var←c13292; /* removed tail goto */ }; (* (W2Pt) formal←c0144 ) = var←c6300; return; } static void J0←P1500(formal←c0147, x←v6360) word formal←c0147; W2 x←v6360; { W2 ret←v6404; /* J0: */ SOURCE(5296, 270) SOURCE(5548, 18) (void) XR←DRealJ0I((word) &ret←v6404, (word) &x←v6360); /* removed tail goto */ (* (W2Pt) formal←c0147 ) = ret←v6404; return; } static void J1←P1560(formal←c0150, x←v6464) word formal←c0150; W2 x←v6464; { W2 ret←v6508; /* J1: */ SOURCE(5571, 270) SOURCE(5823, 18) (void) XR←DRealJ1I((word) &ret←v6508, (word) &x←v6464); /* removed tail goto */ (* (W2Pt) formal←c0150 ) = ret←v6508; return; } static void Jn←P1620(formal←c0154, n←v6568, x←v6596) word formal←c0154; word n←v6568; W2 x←v6596; { W2 ret←v6640; /* Jn: */ SOURCE(5846, 326) SOURCE(6151, 21) (void) XR←DRealJnI((word) &ret←v6640, n←v6568, (word) &x←v6596); /* removed tail goto */ (* (W2Pt) formal←c0154 ) = ret←v6640; return; } static void Y0←P1680(formal←c0157, x←v6700) word formal←c0157; W2 x←v6700; { W2 ret←v6744; /* Y0: */ SOURCE(6178, 270) SOURCE(6430, 18) (void) XR←DRealY0I((word) &ret←v6744, (word) &x←v6700); /* removed tail goto */ (* (W2Pt) formal←c0157 ) = ret←v6744; return; } static void Y1←P1740(formal←c0160, x←v6804) word formal←c0160; W2 x←v6804; { W2 ret←v6848; /* Y1: */ SOURCE(6453, 270) SOURCE(6705, 18) (void) XR←DRealY1I((word) &ret←v6848, (word) &x←v6804); /* removed tail goto */ (* (W2Pt) formal←c0160 ) = ret←v6848; return; } static void Yn←P1800(formal←c0164, n←v6908, x←v6936) word formal←c0164; word n←v6908; W2 x←v6936; { W2 ret←v6980; /* Yn: */ SOURCE(6728, 326) SOURCE(7033, 21) (void) XR←DRealYnI((word) &ret←v6980, n←v6908, (word) &x←v6936); /* removed tail goto */ (* (W2Pt) formal←c0164 ) = ret←v6980; return; } static void RationalFromDReal←P1860(formal←c0179, x←v7040, limit←v7068) word formal←c0179; W2 x←v7040; word limit←v7068; { register ptr gf←c13676 = (ptr) &globalframe; W2 var←c7112; word sign←v10256 = 1; word inverse←v10284 = 0; word p0←v10312 = 0; word q0←v10340 = 0; word lambda←v10368 = 0; word q1←v10396 = 0; word p2←v10424 = 0; word p1←v10452 = 1; word q2←v10480 = 1; /* RationalFromDReal: */ SOURCE(7059, 804) SOURCE(7254, 56) if (( (int)limit←v7068 < (int)1)) { SOURCE(7272, 38) { word var←c0177 = 5; (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c13676)+72)/* var←c13324 */ ))+4) ), (word) &var←c0177); }; }; SOURCE(7312, 37) { W2 D15; XR←DFloatInt(&D15, limit←v7068); if (XR←DRealGtI(&x←v7040, &D15)) { SOURCE(7330, 19) var←c7112.f0 = limit←v7068; var←c7112.f1 = 1; goto lab←L100030; }; }; SOURCE(7351, 39) { W2 x16; W2 D17; float tf18; XR←DRealNegI(&x16, &x←v7040); XR←DFloatReal(&D17, ( tf18 = (float)(int)limit←v7068, *(word*)&tf18 )); if (XR←DRealGtI(&x16, &D17)) { SOURCE(7370, 20) var←c7112.f0 = INEG(limit←v7068); var←c7112.f1 = 1; goto lab←L100030; }; }; SOURCE(7393, 36) if (XR←DRealGtI(&fc19, &x←v7040)) { SOURCE(7411, 6) XR←DRealNegI(&x←v7040, &x←v7040); SOURCE(7419, 10) sign←v10256 = (word) -1; }; SOURCE(7432, 58) if (XR←DRealEqI(&x←v7040, &fc14)) { SOURCE(7448, 42) var←c7112.f0 = sign←v10256; var←c7112.f1 = 1; goto lab←L100030; }; SOURCE(7492, 44) if (XR←DRealGtI(&x←v7040, &fc14)) { SOURCE(7510, 9) XR←DRealDivI(&x←v7040, &fc14, &x←v7040); SOURCE(7521, 15) inverse←v10284 = 1; }; SOURCE(7540, 193) lab←L100033: ; SOURCE(7540, 193) { W2 oneOverX←v10524; SOURCE(7543, 28) { W2 D20; XR←DFloatInt(&D20, lambda←v10368); XR←DRealSubI(&oneOverX←v10524, &x←v7040, &D20); }; SOURCE(7573, 34) { W2 x21; W2 D22; W2 D23; float tf24; XR←DFloatInt(&D22, (limit←v7068 - q1←v10396)); XR←DRealMulI(&x21, &oneOverX←v10524, &D22); XR←DFloatReal(&D23, ( tf24 = (float)(int)q2←v10480, *(word*)&tf24 )); if (XR←DRealGeI(&D23, &x21)) { SOURCE(7607, 4) goto lab←L100032; }; }; SOURCE(7613, 16) XR←DRealDivI(&x←v7040, &fc14, &oneOverX←v10524); SOURCE(7631, 28) { word pd25; pd25 = (* (( (ptr) (* (( (ptr) gf←c13676)+73)/* var←c13452 */ ))+10) ); lambda←v10368 = (word) ( *( (fPt) ((* (ptr) pd25 ))))(x←v7040, pd25); }; SOURCE(7661, 7) q0←v10340 = q1←v10396; SOURCE(7670, 7) q1←v10396 = q2←v10480; SOURCE(7679, 17) q2←v10480 = (IOP2( * , (int)lambda←v10368, (int)q1←v10396) + q0←v10340); SOURCE(7698, 7) p0←v10312 = p1←v10452; SOURCE(7707, 7) p1←v10452 = p2←v10424; SOURCE(7716, 17) p2←v10424 = (IOP2( * , (int)lambda←v10368, (int)p1←v10452) + p0←v10312); }; goto lab←L100033; lab←L100032: ; SOURCE(7745, 118) if ((0 == inverse←v10284)) { SOURCE(7765, 52) var←c7112.f0 = IOP2( * , (int)sign←v10256, (int)p2←v10424); var←c7112.f1 = q2←v10480; /* removed tail goto */ } else { SOURCE(7817, 46) var←c7112.f0 = IOP2( * , (int)sign←v10256, (int)q2←v10480); var←c7112.f1 = p2←v10424; /* removed tail goto */ }; lab←L100030: ; (* (W2Pt) formal←c0179 ) = var←c7112; return; } static word AlmostZero←P1920(x←v7172, distance←v7200) W2 x←v7172; word distance←v7200; { register ptr gf←c13708 = (ptr) &globalframe; word var←c7244; /* AlmostZero: */ SOURCE(7868, 156) SOURCE(7941, 29) if (XR←DRealEqI(&x←v7172, &fc19)) { SOURCE(7957, 13) return(1); }; SOURCE(7972, 52) { word var←c0197; { W2 var←c0183; { word pd26; pd26 = (* (( (ptr) (* (( (ptr) gf←c13708)+73)/* var←c13452 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd26 ))))((word) &var←c0183, (* (W2Pt) &fc14 ), distance←v7200, pd26); }; { W2 x27; XR←DRealAbsI(&x27, &x←v7172); var←c0197 = (unsigned) XR←DRealGtI(&var←c0183, &x27); }; }; return(var←c0197); }; } static word AlmostEqual←P1980(y←v7304, x←v7332, distance←v7360) W2 y←v7304; W2 x←v7332; word distance←v7360; { register ptr gf←c13740 = (ptr) &globalframe; word var←c7404; /* AlmostEqual: */ SOURCE(8029, 400) SOURCE(8106, 56) { word pd28; pd28 = (* (( (ptr) (* (( (ptr) gf←c13740)+73)/* var←c13452 */ ))+4) ); if (((word) ( *( (fPt) ((* (ptr) pd28 ))))(x←v7332, pd28) > 2)) { SOURCE(8148, 14) return(0); }; }; SOURCE(8164, 56) { word pd29; pd29 = (* (( (ptr) (* (( (ptr) gf←c13740)+73)/* var←c13452 */ ))+4) ); if (((word) ( *( (fPt) ((* (ptr) pd29 ))))(y←v7304, pd29) > 2)) { SOURCE(8206, 14) return(0); }; }; SOURCE(8222, 209) { W2 delta←v10568; W2 absX←v10596; W2 absY←v10624; W2 max←v10652; SOURCE(8224, 23) { W2 x30; XR←DRealSubI(&x30, &x←v7332, &y←v7304); XR←DRealAbsI(&delta←v10568, &x30); }; SOURCE(8249, 20) XR←DRealAbsI(&absX←v10596, &x←v7332); SOURCE(8271, 20) XR←DRealAbsI(&absY←v10624, &y←v7304); SOURCE(8293, 47) { word tcp31; if (XR←DRealGtI(&absY←v10624, &absX←v10596)) { tcp31 = (word) &absY←v10624; } else { tcp31 = (word) &absX←v10596; }; max←v10652 = (* (W2Pt) tcp31 ); }; SOURCE(8342, 33) if (XR←DRealEqI(&delta←v10568, &max←v10652)) { SOURCE(8362, 13) return(1); }; SOURCE(8377, 52) { word var←c0198; { W2 var←c0192; { word pd32; pd32 = (* (( (ptr) (* (( (ptr) gf←c13740)+73)/* var←c13452 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd32 ))))((word) &var←c0192, max←v10652, distance←v7360, pd32); }; var←c0198 = (unsigned) XR←DRealGeI(&var←c0192, &delta←v10568); }; return(var←c0198); }; }; } /* file: DRealFnsImpl, module: DRealFnsImpl, compiled at: May 6, 1993 5:09:57 pm PDT */ extern void XR←install←DRealFnsImpl() { NoName←Q2136(); } extern void XR←run←DRealFnsImpl() { XR←Start(&globalframe); }