/* 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); }