40 #define M_PI 3.1415926535897932384626433832795
44 static double sn[6] = {
45 -2.99181919401019853726E3,
46 7.08840045257738576863E5,
47 -6.29741486205862506537E7,
48 2.54890880573376359104E9,
49 -4.42979518059697779103E10,
50 3.18016297876567817986E11,
52 static double sd[6] = {
54 2.81376268889994315696E2,
55 4.55847810806532581675E4,
56 5.17343888770096400730E6,
57 4.19320245898111231129E8,
58 2.24411795645340920940E10,
59 6.07366389490084639049E11,
63 static double cn[6] = {
64 -4.98843114573573548651E-8,
65 9.50428062829859605134E-6,
66 -6.45191435683965050962E-4,
67 1.88843319396703850064E-2,
68 -2.05525900955013891793E-1,
69 9.99999999999999998822E-1,
71 static double cd[7] = {
72 3.99982968972495980367E-12,
73 9.15439215774657478799E-10,
74 1.25001862479598821474E-7,
75 1.22262789024179030997E-5,
76 8.68029542941784300606E-4,
77 4.12142090722199792936E-2,
78 1.00000000000000000118E0,
82 static double fn[10] = {
83 4.21543555043677546506E-1,
84 1.43407919780758885261E-1,
85 1.15220955073585758835E-2,
86 3.45017939782574027900E-4,
87 4.63613749287867322088E-6,
88 3.05568983790257605827E-8,
89 1.02304514164907233465E-10,
90 1.72010743268161828879E-13,
91 1.34283276233062758925E-16,
92 3.76329711269987889006E-20,
94 static double fd[10] = {
96 7.51586398353378947175E-1,
97 1.16888925859191382142E-1,
98 6.44051526508858611005E-3,
99 1.55934409164153020873E-4,
100 1.84627567348930545870E-6,
101 1.12699224763999035261E-8,
102 3.60140029589371370404E-11,
103 5.88754533621578410010E-14,
104 4.52001434074129701496E-17,
105 1.25443237090011264384E-20,
109 static double gn[11] = {
110 5.04442073643383265887E-1,
111 1.97102833525523411709E-1,
112 1.87648584092575249293E-2,
113 6.84079380915393090172E-4,
114 1.15138826111884280931E-5,
115 9.82852443688422223854E-8,
116 4.45344415861750144738E-10,
117 1.08268041139020870318E-12,
118 1.37555460633261799868E-15,
119 8.36354435630677421531E-19,
120 1.86958710162783235106E-22,
122 static double gd[11] = {
124 1.47495759925128324529E0,
125 3.37748989120019970451E-1,
126 2.53603741420338795122E-2,
127 8.14679107184306179049E-4,
128 1.27545075667729118702E-5,
129 1.04314589657571990585E-7,
130 4.60680728146520428211E-10,
131 1.10273215066240270757E-12,
132 1.38796531259578871258E-15,
133 8.39158816283118707363E-19,
134 1.86958710162783236342E-22,
138 static double polevl(
double x,
double* coef,
int n )
149 ans = ans * x + *p++;
156 static double p1evl(
double x,
double* coef,
int n )
167 ans = ans * x + *p++;
175 static void fresnel(
double xxa,
double *ssa,
double *cca )
177 double f, g, cc, ss, c, s, t, u;
189 else if ( x > 36974.0 )
207 cc = 0.5 + (f * s - g * c) / t;
208 ss = 0.5 - (f * c + g * s) / t;
231 void odrSpiral(
double s,
double cDot,
double *x,
double *y,
double *t )
235 a = 1.0 / sqrt( fabs( cDot ) );
246 *t = s * s * cDot * 0.5;
static double p1evl(double x, double *coef, int n)
static void fresnel(double xxa, double *ssa, double *cca)
void odrSpiral(double s, double cDot, double *x, double *y, double *t)
static double polevl(double x, double *coef, int n)