Print this page
11210 libm should be cstyle(1ONBLD) clean
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/lib/libm/common/LD/j1l.c
+++ new/usr/src/lib/libm/common/LD/j1l.c
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
↓ open down ↓ |
14 lines elided |
↑ open up ↑ |
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 23 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
24 24 */
25 +
25 26 /*
26 27 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
27 28 * Use is subject to license terms.
28 29 */
29 30
30 31 /*
31 32 * floating point Bessel's function of the first and second kinds
32 33 * of order zero: j1(x),y1(x);
33 34 *
34 35 * Special cases:
35 36 * y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal;
36 37 * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
37 38 */
38 39
↓ open down ↓ |
4 lines elided |
↑ open up ↑ |
39 40 #pragma weak __j1l = j1l
40 41 #pragma weak __y1l = y1l
41 42
42 43 #include "libm.h"
43 44 #include "longdouble.h"
44 45 #include <math.h>
45 46 #if defined(__SUNPRO_C)
46 47 #include <sunmath.h>
47 48 #endif
48 49
49 -#define GENERIC long double
50 -static GENERIC
51 -zero = 0.0L,
52 -small = 1.0e-9L,
53 -tiny = 1.0e-38L,
54 -one = 1.0L,
55 -five = 5.0L,
56 -invsqrtpi = 5.641895835477562869480794515607725858441e-0001L,
57 -tpi = 0.636619772367581343075535053490057448L;
50 +#define GENERIC long double
51 +
52 +static GENERIC zero = 0.0L,
53 + small = 1.0e-9L,
54 + tiny = 1.0e-38L,
55 + one = 1.0L,
56 + five = 5.0L,
57 + invsqrtpi = 5.641895835477562869480794515607725858441e-0001L,
58 + tpi = 0.636619772367581343075535053490057448L;
58 59
59 60 static GENERIC pone(), qone();
61 +
60 62 static GENERIC r0[7] = {
61 - -6.249999999999999999999999999999999627320e-0002L,
62 - 1.940606727194041716205384618494641565464e-0003L,
63 - -3.005630423155733701856481469986459043883e-0005L,
64 - 2.345586219403918667468341047369572169358e-0007L,
65 - -9.976809285885253587529010109133336669724e-0010L,
66 - 2.218743258363623946078958783775107473381e-0012L,
67 - -2.071079656218700604767650924103578046280e-0015L,
63 + -6.249999999999999999999999999999999627320e-0002L,
64 + 1.940606727194041716205384618494641565464e-0003L,
65 + -3.005630423155733701856481469986459043883e-0005L,
66 + 2.345586219403918667468341047369572169358e-0007L,
67 + -9.976809285885253587529010109133336669724e-0010L,
68 + 2.218743258363623946078958783775107473381e-0012L,
69 + -2.071079656218700604767650924103578046280e-0015L,
68 70 };
71 +
69 72 static GENERIC s0[7] = {
70 - 1.0e0L,
71 - 1.061695903156199920738051277075003059555e-0002L,
72 - 5.521860513111180371566951179398862692060e-0005L,
73 - 1.824214367413754193524107877084979441407e-0007L,
74 - 4.098957778439576834818838198039029353925e-0010L,
75 - 6.047735079699666389853240090925264056197e-0013L,
76 - 4.679044728878836197247923279512047035041e-0016L,
73 + 1.0e0L,
74 + 1.061695903156199920738051277075003059555e-0002L,
75 + 5.521860513111180371566951179398862692060e-0005L,
76 + 1.824214367413754193524107877084979441407e-0007L,
77 + 4.098957778439576834818838198039029353925e-0010L,
78 + 6.047735079699666389853240090925264056197e-0013L,
79 + 4.679044728878836197247923279512047035041e-0016L,
77 80 };
78 81
79 82 GENERIC
80 -j1l(x) GENERIC x; {
83 +j1l(GENERIC x)
84 +{
81 85 GENERIC z, d, s, c, ss, cc, r;
82 86 int i, sgn;
83 87
84 88 if (!finitel(x))
85 - return (one/x);
89 + return (one / x);
90 +
86 91 sgn = signbitl(x);
87 92 x = fabsl(x);
93 +
88 94 if (x > 1.28L) {
89 95 s = sinl(x);
90 96 c = cosl(x);
91 - /*
92 - * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
93 - * where x0 = x-3pi/4
94 - * Better formula:
95 - * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
96 - * = 1/sqrt(2) * (sin(x) - cos(x))
97 - * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
98 - * = -1/sqrt(2) * (cos(x) + sin(x))
99 - * To avoid cancellation, use
100 - * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
101 - * to compute the worse one.
102 - */
97 +
98 + /* BEGIN CSTYLED */
99 + /*
100 + * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
101 + * where x0 = x-3pi/4
102 + * Better formula:
103 + * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
104 + * = 1/sqrt(2) * (sin(x) - cos(x))
105 + * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
106 + * = -1/sqrt(2) * (cos(x) + sin(x))
107 + * To avoid cancellation, use
108 + * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
109 + * to compute the worse one.
110 + */
111 + /* END CSTYLED */
103 112 if (x > 1.0e2450L) { /* x+x may overflow */
104 - ss = -s-c;
105 - cc = s-c;
113 + ss = -s - c;
114 + cc = s - c;
106 115 } else if (signbitl(s) != signbitl(c)) {
107 116 cc = s - c;
108 - ss = cosl(x+x)/cc;
117 + ss = cosl(x + x) / cc;
109 118 } else {
110 - ss = -s-c;
111 - cc = cosl(x+x)/ss;
119 + ss = -s - c;
120 + cc = cosl(x + x) / ss;
112 121 }
113 - /*
114 - * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
115 - * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
116 - */
117 - if (x > 1.0e120L)
118 - return (invsqrtpi*cc)/sqrtl(x);
119 - d = invsqrtpi*(pone(x)*cc-qone(x)*ss)/sqrtl(x);
122 +
123 + /*
124 + * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
125 + * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
126 + */
127 + if (x > 1.0e120L)
128 + return ((invsqrtpi * cc) / sqrtl(x));
129 +
130 + d = invsqrtpi * (pone(x) * cc - qone(x) * ss) / sqrtl(x);
131 +
120 132 if (sgn == 0)
121 133 return (d);
122 134 else
123 135 return (-d);
124 136 }
137 +
125 138 if (x <= small) {
126 - if (x <= tiny) d = 0.5L*x;
127 - else d = x*(0.5L-x*x*0.125L);
128 - if (sgn == 0)
139 + if (x <= tiny)
140 + d = 0.5L * x;
141 + else
142 + d = x * (0.5L - x * x * 0.125L);
143 +
144 + if (sgn == 0)
129 145 return (d);
130 146 else
131 147 return (-d);
132 - }
133 - z = x*x;
134 - r = r0[6];
135 - s = s0[6];
136 - for (i = 5; i >= 0; i--) {
137 - r = r*z + r0[i];
138 - s = s*z + s0[i];
139 - }
140 - d = x*0.5L+x*(z*(r/s));
148 + }
149 +
150 + z = x * x;
151 + r = r0[6];
152 + s = s0[6];
153 +
154 + for (i = 5; i >= 0; i--) {
155 + r = r * z + r0[i];
156 + s = s * z + s0[i];
157 + }
158 +
159 + d = x * 0.5L + x * (z * (r / s));
160 +
141 161 if (sgn == 0)
142 162 return (d);
143 163 else
144 164 return (-d);
145 165 }
146 166
147 167 static GENERIC u0[7] = {
148 - -1.960570906462389484060557273467558703503e-0001L,
149 - 5.166389353148318460304315890665450006495e-0002L,
150 - -2.229699464105910913337190798743451115604e-0003L,
151 - 3.625437034548863342715657067759078267158e-0005L,
152 - -2.689902826993117212255524537353883987171e-0007L,
153 - 9.304570592456930912969387719010256018466e-0010L,
154 - -1.234878126794286643318321347997500346131e-0012L,
168 + -1.960570906462389484060557273467558703503e-0001L,
169 + 5.166389353148318460304315890665450006495e-0002L,
170 + -2.229699464105910913337190798743451115604e-0003L,
171 + 3.625437034548863342715657067759078267158e-0005L,
172 + -2.689902826993117212255524537353883987171e-0007L,
173 + 9.304570592456930912969387719010256018466e-0010L,
174 + -1.234878126794286643318321347997500346131e-0012L,
155 175 };
176 +
156 177 static GENERIC v0[8] = {
157 - 1.0e0L,
158 - 1.369394302535807332517110204820556695644e-0002L,
159 - 9.508438148097659501433367062605935379588e-0005L,
160 - 4.399007309420092056052714797296467565655e-0007L,
161 - 1.488083087443756398305819693177715000787e-0009L,
162 - 3.751609832625793536245746965768587624922e-0012L,
163 - 6.680926434086257291872903276124244131448e-0015L,
164 - 6.676602383908906988160099057991121446058e-0018L,
178 + 1.0e0L,
179 + 1.369394302535807332517110204820556695644e-0002L,
180 + 9.508438148097659501433367062605935379588e-0005L,
181 + 4.399007309420092056052714797296467565655e-0007L,
182 + 1.488083087443756398305819693177715000787e-0009L,
183 + 3.751609832625793536245746965768587624922e-0012L,
184 + 6.680926434086257291872903276124244131448e-0015L,
185 + 6.676602383908906988160099057991121446058e-0018L,
165 186 };
166 187
167 188 GENERIC
168 -y1l(x) GENERIC x; {
189 +y1l(GENERIC x)
190 +{
169 191 GENERIC z, s, c, ss, cc, u, v;
170 192 int i;
171 193
172 194 if (isnanl(x))
173 - return (x+x);
195 + return (x + x);
196 +
174 197 if (x <= zero) {
175 198 if (x == zero)
176 - return (-one/zero);
199 + return (-one / zero);
177 200 else
178 - return (zero/zero);
201 + return (zero / zero);
179 202 }
203 +
180 204 if (x > 1.28L) {
181 205 if (!finitel(x))
182 206 return (zero);
207 +
183 208 s = sinl(x);
184 209 c = cosl(x);
185 - /*
186 - * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
187 - * where x0 = x-3pi/4
188 - * Better formula:
189 - * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
190 - * = 1/sqrt(2) * (sin(x) - cos(x))
191 - * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
192 - * = -1/sqrt(2) * (cos(x) + sin(x))
193 - * To avoid cancellation, use
194 - * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
195 - * to compute the worse one.
196 - */
210 +
211 + /* BEGIN CSTYLED */
212 + /*
213 + * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
214 + * where x0 = x-3pi/4
215 + * Better formula:
216 + * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
217 + * = 1/sqrt(2) * (sin(x) - cos(x))
218 + * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
219 + * = -1/sqrt(2) * (cos(x) + sin(x))
220 + * To avoid cancellation, use
221 + * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
222 + * to compute the worse one.
223 + */
224 + /* END CSTYLED */
197 225 if (x > 1.0e2450L) { /* x+x may overflow */
198 - ss = -s-c;
199 - cc = s-c;
226 + ss = -s - c;
227 + cc = s - c;
200 228 } else if (signbitl(s) != signbitl(c)) {
201 229 cc = s - c;
202 - ss = cosl(x+x)/cc;
230 + ss = cosl(x + x) / cc;
203 231 } else {
204 - ss = -s-c;
205 - cc = cosl(x+x)/ss;
232 + ss = -s - c;
233 + cc = cosl(x + x) / ss;
206 234 }
207 - /*
208 - * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
209 - * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
210 - */
235 +
236 + /*
237 + * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
238 + * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
239 + */
211 240 if (x > 1.0e91L)
212 - return (invsqrtpi*ss)/sqrtl(x);
213 - return (invsqrtpi*(pone(x)*ss+qone(x)*cc)/sqrtl(x));
241 + return ((invsqrtpi * ss) / sqrtl(x));
242 +
243 + return (invsqrtpi * (pone(x) * ss + qone(x) * cc) / sqrtl(x));
244 + }
245 +
246 + if (x <= tiny)
247 + return (-tpi / x);
248 +
249 + z = x * x;
250 + u = u0[6];
251 + v = v0[6] + z * v0[7];
252 +
253 + for (i = 5; i >= 0; i--) {
254 + u = u * z + u0[i];
255 + v = v * z + v0[i];
214 256 }
215 - if (x <= tiny) {
216 - return (-tpi/x);
217 - }
218 - z = x*x;
219 - u = u0[6]; v = v0[6]+z*v0[7];
220 - for (i = 5; i >= 0; i--) {
221 - u = u*z + u0[i];
222 - v = v*z + v0[i];
223 - }
224 - return (x*(u/v) + tpi*(j1l(x)*logl(x)-one/x));
257 +
258 + return (x * (u / v) + tpi * (j1l(x) * logl(x) - one / x));
225 259 }
226 260
227 261 static GENERIC pr0[12] = {
228 - 1.000000000000000000000000000000000000267e+0000L,
229 - 1.060717875045891455602180843276758003035e+0003L,
230 - 4.344347542892127024446687712181105852335e+0005L,
231 - 8.915680220724007016377924252717410457094e+0007L,
232 - 9.969502259938406062809873257569171272819e+0009L,
233 - 6.200290193138613035646510338707386316595e+0011L,
234 - 2.105978548788015119851815854422247330118e+0013L,
235 - 3.696635772784601239371730810311998368948e+0014L,
236 - 3.015913097920694682057958412534134515156e+0015L,
237 - 9.370298471339353098123277427328592725921e+0015L,
238 - 7.190349005196335967340799265074029443057e+0015L,
239 - 2.736097786240689996880391074927552517982e+0014L,
262 + 1.000000000000000000000000000000000000267e+0000L,
263 + 1.060717875045891455602180843276758003035e+0003L,
264 + 4.344347542892127024446687712181105852335e+0005L,
265 + 8.915680220724007016377924252717410457094e+0007L,
266 + 9.969502259938406062809873257569171272819e+0009L,
267 + 6.200290193138613035646510338707386316595e+0011L,
268 + 2.105978548788015119851815854422247330118e+0013L,
269 + 3.696635772784601239371730810311998368948e+0014L,
270 + 3.015913097920694682057958412534134515156e+0015L,
271 + 9.370298471339353098123277427328592725921e+0015L,
272 + 7.190349005196335967340799265074029443057e+0015L,
273 + 2.736097786240689996880391074927552517982e+0014L,
240 274 };
275 +
241 276 static GENERIC ps0[11] = {
242 - 1.0e0L,
243 - 1.060600687545891455602180843276758095107e+0003L,
244 - 4.343106093416975589147153906505338900961e+0005L,
245 - 8.910605869002176566582072242244353399059e+0007L,
246 - 9.959122058635087888690713917622056540190e+0009L,
247 - 6.188744967234948231792482949171041843894e+0011L,
248 - 2.098863976953783506401759873801990304907e+0013L,
249 - 3.672870357018063196746729751479938908450e+0014L,
250 - 2.975538419246824921049011529574385888420e+0015L,
251 - 9.063657659995043205018686029284479837091e+0015L,
252 - 6.401953344314747916729366441508892711691e+0015L,
277 + 1.0e0L,
278 + 1.060600687545891455602180843276758095107e+0003L,
279 + 4.343106093416975589147153906505338900961e+0005L,
280 + 8.910605869002176566582072242244353399059e+0007L,
281 + 9.959122058635087888690713917622056540190e+0009L,
282 + 6.188744967234948231792482949171041843894e+0011L,
283 + 2.098863976953783506401759873801990304907e+0013L,
284 + 3.672870357018063196746729751479938908450e+0014L,
285 + 2.975538419246824921049011529574385888420e+0015L,
286 + 9.063657659995043205018686029284479837091e+0015L,
287 + 6.401953344314747916729366441508892711691e+0015L,
253 288 };
289 +
254 290 static GENERIC pr1[12] = {
255 - 1.000000000000000000000023667524130660984e+0000L,
256 - 6.746154419979618754354803488126452971204e+0002L,
257 - 1.811210781083390154857018330296145970502e+0005L,
258 - 2.533098390379924268038005329095287842244e+0007L,
259 - 2.029683619805342145252338570875424600729e+0009L,
260 - 9.660859662192711465301069401598929980319e+0010L,
261 - 2.743396238644831519934098967716621316316e+0012L,
262 - 4.553097354140854377931023170263455246288e+0013L,
263 - 4.210245069852219757476169864974870720374e+0014L,
264 - 1.987334056229596485076645967176169801727e+0015L,
265 - 4.067120052787096893838970455751338930462e+0015L,
266 - 2.486539606380406398310845264910691398133e+0015L,
291 + 1.000000000000000000000023667524130660984e+0000L,
292 + 6.746154419979618754354803488126452971204e+0002L,
293 + 1.811210781083390154857018330296145970502e+0005L,
294 + 2.533098390379924268038005329095287842244e+0007L,
295 + 2.029683619805342145252338570875424600729e+0009L,
296 + 9.660859662192711465301069401598929980319e+0010L,
297 + 2.743396238644831519934098967716621316316e+0012L,
298 + 4.553097354140854377931023170263455246288e+0013L,
299 + 4.210245069852219757476169864974870720374e+0014L,
300 + 1.987334056229596485076645967176169801727e+0015L,
301 + 4.067120052787096893838970455751338930462e+0015L,
302 + 2.486539606380406398310845264910691398133e+0015L,
267 303 };
304 +
268 305 static GENERIC ps1[14] = {
269 - 1.0e0L,
270 - 6.744982544979618754355808680196859521782e+0002L,
271 - 1.810421795396966762032155290441364740350e+0005L,
272 - 2.530986460644310651529583759699988435573e+0007L,
273 - 2.026743276048023121360249288818290224145e+0009L,
274 - 9.637461924407405935245269407052641341836e+0010L,
275 - 2.732378628423766417402292797028314160831e+0012L,
276 - 4.522345274960527124354844364012184278488e+0013L,
277 - 4.160650668341743132685335758415469856545e+0014L,
278 - 1.943730242988858208243492424892435901211e+0015L,
279 - 3.880228532692127989901131618598067450001e+0015L,
280 - 2.178020816161154615841000173683302999728e+0015L,
281 - -8.994062666842225551554346698171600634173e+0013L,
282 - 1.368520368508851253495764806934619574990e+0013L,
306 + 1.0e0L,
307 + 6.744982544979618754355808680196859521782e+0002L,
308 + 1.810421795396966762032155290441364740350e+0005L,
309 + 2.530986460644310651529583759699988435573e+0007L,
310 + 2.026743276048023121360249288818290224145e+0009L,
311 + 9.637461924407405935245269407052641341836e+0010L,
312 + 2.732378628423766417402292797028314160831e+0012L,
313 + 4.522345274960527124354844364012184278488e+0013L,
314 + 4.160650668341743132685335758415469856545e+0014L,
315 + 1.943730242988858208243492424892435901211e+0015L,
316 + 3.880228532692127989901131618598067450001e+0015L,
317 + 2.178020816161154615841000173683302999728e+0015L,
318 + -8.994062666842225551554346698171600634173e+0013L,
319 + 1.368520368508851253495764806934619574990e+0013L,
283 320 };
321 +
284 322 static GENERIC pr2[12] = {
285 - 1.000000000000000006938651621840396237282e+0000L,
286 - 3.658416291850404981407101077037948144698e+0002L,
287 - 5.267073772170356547709794670602812447537e+0004L,
288 - 3.912012101226837463014925210735894620442e+0006L,
289 - 1.651295648974103957193874928714180765625e+0008L,
290 - 4.114901144480797609972484998142146783499e+0009L,
291 - 6.092524309766036681542980572526335147672e+0010L,
292 - 5.263913178071282616719249969074134570577e+0011L,
293 - 2.538408581124324223367341020538081330994e+0012L,
294 - 6.288607929360291027895126983015365677648e+0012L,
295 - 6.848330048211148419047055075386525945280e+0012L,
296 - 2.290309646838867941423178163991423244690e+0012L,
323 + 1.000000000000000006938651621840396237282e+0000L,
324 + 3.658416291850404981407101077037948144698e+0002L,
325 + 5.267073772170356547709794670602812447537e+0004L,
326 + 3.912012101226837463014925210735894620442e+0006L,
327 + 1.651295648974103957193874928714180765625e+0008L,
328 + 4.114901144480797609972484998142146783499e+0009L,
329 + 6.092524309766036681542980572526335147672e+0010L,
330 + 5.263913178071282616719249969074134570577e+0011L,
331 + 2.538408581124324223367341020538081330994e+0012L,
332 + 6.288607929360291027895126983015365677648e+0012L,
333 + 6.848330048211148419047055075386525945280e+0012L,
334 + 2.290309646838867941423178163991423244690e+0012L,
297 335 };
336 +
298 337 static GENERIC ps2[14] = {
299 - 1.0e0L,
300 - 3.657244416850405086459410165762319861856e+0002L,
301 - 5.262802358425023243992387075861237306312e+0004L,
302 - 3.905896813959919648136295861661483848364e+0006L,
303 - 1.646791907791461220742694842108202772763e+0008L,
304 - 4.096132803064256022224954120208201437344e+0009L,
305 - 6.046665195915950447544429445730680236759e+0010L,
306 - 5.198061739781991313414052212328653295168e+0011L,
307 - 2.484233851814333966401527626421254279796e+0012L,
308 - 6.047868806925315879339651539434315255940e+0012L,
309 - 6.333103831254091652501642567294101813354e+0012L,
310 - 1.875143098754284994467609936924685024968e+0012L,
311 - -5.238330920563392692965412762508813601534e+0010L,
312 - 4.656888609439364725427789198383779259957e+0009L,
338 + 1.0e0L,
339 + 3.657244416850405086459410165762319861856e+0002L,
340 + 5.262802358425023243992387075861237306312e+0004L,
341 + 3.905896813959919648136295861661483848364e+0006L,
342 + 1.646791907791461220742694842108202772763e+0008L,
343 + 4.096132803064256022224954120208201437344e+0009L,
344 + 6.046665195915950447544429445730680236759e+0010L,
345 + 5.198061739781991313414052212328653295168e+0011L,
346 + 2.484233851814333966401527626421254279796e+0012L,
347 + 6.047868806925315879339651539434315255940e+0012L,
348 + 6.333103831254091652501642567294101813354e+0012L,
349 + 1.875143098754284994467609936924685024968e+0012L,
350 + -5.238330920563392692965412762508813601534e+0010L,
351 + 4.656888609439364725427789198383779259957e+0009L,
313 352 };
353 +
314 354 static GENERIC pr3[13] = {
315 - 1.000000000000009336887318068056137842897e+0000L,
316 - 2.242719942728459588488051572002835729183e+0002L,
317 - 1.955450611382026550266257737331095691092e+0004L,
318 - 8.707143293993619899395400562409175590739e+0005L,
319 - 2.186267894487004565948324289010954505316e+0007L,
320 - 3.224328510541957792360691585667502864688e+0008L,
321 - 2.821057355151380597331792896882741364897e+0009L,
322 - 1.445371387295422404365584793796028979840e+0010L,
323 - 4.181743160669891357783011002656658107864e+0010L,
324 - 6.387371088767993119325536137794535513922e+0010L,
325 - 4.575619999412716078064070587767416436396e+0010L,
326 - 1.228415651211639160620284441690503550842e+0010L,
327 - 7.242170349875563053436050532153112882072e+0008L,
355 + 1.000000000000009336887318068056137842897e+0000L,
356 + 2.242719942728459588488051572002835729183e+0002L,
357 + 1.955450611382026550266257737331095691092e+0004L,
358 + 8.707143293993619899395400562409175590739e+0005L,
359 + 2.186267894487004565948324289010954505316e+0007L,
360 + 3.224328510541957792360691585667502864688e+0008L,
361 + 2.821057355151380597331792896882741364897e+0009L,
362 + 1.445371387295422404365584793796028979840e+0010L,
363 + 4.181743160669891357783011002656658107864e+0010L,
364 + 6.387371088767993119325536137794535513922e+0010L,
365 + 4.575619999412716078064070587767416436396e+0010L,
366 + 1.228415651211639160620284441690503550842e+0010L,
367 + 7.242170349875563053436050532153112882072e+0008L,
328 368 };
369 +
329 370 static GENERIC ps3[13] = {
330 - 1.0e0L,
331 - 2.241548067728529551049804610486061401070e+0002L,
332 - 1.952838216795552145132137932931237181307e+0004L,
333 - 8.684574926493185744628127341069974575526e+0005L,
334 - 2.176357771067037962940853412819852189164e+0007L,
335 - 3.199958682356132977319258783167122100567e+0008L,
336 - 2.786218931525334687844675219914201872570e+0009L,
337 - 1.416283776951741549631417572317916039767e+0010L,
338 - 4.042962659271567948735676834609348842922e+0010L,
339 - 6.028168462646694510083847222968444402161e+0010L,
340 - 4.118410226794641413833887606580085281111e+0010L,
341 - 9.918735736297038430744161253338202230263e+0009L,
342 - 4.092967198238098023219124487437130332038e+0008L,
371 + 1.0e0L,
372 + 2.241548067728529551049804610486061401070e+0002L,
373 + 1.952838216795552145132137932931237181307e+0004L,
374 + 8.684574926493185744628127341069974575526e+0005L,
375 + 2.176357771067037962940853412819852189164e+0007L,
376 + 3.199958682356132977319258783167122100567e+0008L,
377 + 2.786218931525334687844675219914201872570e+0009L,
378 + 1.416283776951741549631417572317916039767e+0010L,
379 + 4.042962659271567948735676834609348842922e+0010L,
380 + 6.028168462646694510083847222968444402161e+0010L,
381 + 4.118410226794641413833887606580085281111e+0010L,
382 + 9.918735736297038430744161253338202230263e+0009L,
383 + 4.092967198238098023219124487437130332038e+0008L,
343 384 };
385 +
344 386 static GENERIC pr4[13] = {
345 - 1.000000000001509220978157399042059553390e+0000L,
346 - 1.437551868378147851133499996323782607787e+0002L,
347 - 7.911335537418177296041518061404505428004e+0003L,
348 - 2.193710939115317214716518908935756104804e+0005L,
349 - 3.390662495136730962513489796538274984382e+0006L,
350 - 3.048655347929348891006070609293884274789e+0007L,
351 - 1.613781633489496606354045161527450975195e+0008L,
352 - 4.975089835037230277110156150038482159988e+0008L,
353 - 8.636047087015115403880904418339566323264e+0008L,
354 - 7.918202912328366140110671223076949101509e+0008L,
355 - 3.423294665798984733439650311722794853294e+0008L,
356 - 5.621904953441963961040503934782662613621e+0007L,
357 - 2.086303543310240260758670404509484499793e+0006L,
387 + 1.000000000001509220978157399042059553390e+0000L,
388 + 1.437551868378147851133499996323782607787e+0002L,
389 + 7.911335537418177296041518061404505428004e+0003L,
390 + 2.193710939115317214716518908935756104804e+0005L,
391 + 3.390662495136730962513489796538274984382e+0006L,
392 + 3.048655347929348891006070609293884274789e+0007L,
393 + 1.613781633489496606354045161527450975195e+0008L,
394 + 4.975089835037230277110156150038482159988e+0008L,
395 + 8.636047087015115403880904418339566323264e+0008L,
396 + 7.918202912328366140110671223076949101509e+0008L,
397 + 3.423294665798984733439650311722794853294e+0008L,
398 + 5.621904953441963961040503934782662613621e+0007L,
399 + 2.086303543310240260758670404509484499793e+0006L,
358 400 };
401 +
359 402 static GENERIC ps4[13] = {
360 - 1.0e0L,
361 - 1.436379993384532371670493319591847362304e+0002L,
362 - 7.894647154785430678061053848847436659499e+0003L,
363 - 2.184659753392097529008981741550878586174e+0005L,
364 - 3.366109083305465176803513738147049499361e+0006L,
365 - 3.011911545968996817697665866587226343186e+0007L,
366 - 1.582262913779689851316760148459414895301e+0008L,
367 - 4.819268809494937919217938589530138201770e+0008L,
368 - 8.201355762990450679702837123432527154830e+0008L,
369 - 7.268232093982510937417446421282341425212e+0008L,
370 - 2.950911909015572933262131323934036480462e+0008L,
371 - 4.242839924305934423010858966540621219396e+0007L,
372 - 1.064387620445090779182117666330405186866e+0006L,
403 + 1.0e0L,
404 + 1.436379993384532371670493319591847362304e+0002L,
405 + 7.894647154785430678061053848847436659499e+0003L,
406 + 2.184659753392097529008981741550878586174e+0005L,
407 + 3.366109083305465176803513738147049499361e+0006L,
408 + 3.011911545968996817697665866587226343186e+0007L,
409 + 1.582262913779689851316760148459414895301e+0008L,
410 + 4.819268809494937919217938589530138201770e+0008L,
411 + 8.201355762990450679702837123432527154830e+0008L,
412 + 7.268232093982510937417446421282341425212e+0008L,
413 + 2.950911909015572933262131323934036480462e+0008L,
414 + 4.242839924305934423010858966540621219396e+0007L,
415 + 1.064387620445090779182117666330405186866e+0006L,
373 416 };
417 +
374 418 static GENERIC pr5[13] = {
375 - 1.000000000102434805241171427253847353861e+0000L,
376 - 9.129332257083629259060502249025963234821e+0001L,
377 - 3.132238483586953037576119377504557191413e+0003L,
378 - 5.329782528269307971278943122454171107861e+0004L,
379 - 4.988460157184117790692873002103052944145e+0005L,
380 - 2.686602071615786816147010334256047469378e+0006L,
381 - 8.445418526028961197703799808701268301831e+0006L,
382 - 1.536575358646141157475725889907900827390e+0007L,
383 - 1.568405818236523821796862770586544811945e+0007L,
384 - 8.450876239888770102387618667362302173547e+0006L,
385 - 2.154414900139567328424026827163203446077e+0006L,
386 - 2.105656926565043898888460254808062352205e+0005L,
387 - 4.739165011023396507022134303736862812975e+0003L,
419 + 1.000000000102434805241171427253847353861e+0000L,
420 + 9.129332257083629259060502249025963234821e+0001L,
421 + 3.132238483586953037576119377504557191413e+0003L,
422 + 5.329782528269307971278943122454171107861e+0004L,
423 + 4.988460157184117790692873002103052944145e+0005L,
424 + 2.686602071615786816147010334256047469378e+0006L,
425 + 8.445418526028961197703799808701268301831e+0006L,
426 + 1.536575358646141157475725889907900827390e+0007L,
427 + 1.568405818236523821796862770586544811945e+0007L,
428 + 8.450876239888770102387618667362302173547e+0006L,
429 + 2.154414900139567328424026827163203446077e+0006L,
430 + 2.105656926565043898888460254808062352205e+0005L,
431 + 4.739165011023396507022134303736862812975e+0003L,
388 432 };
433 +
389 434 static GENERIC ps5[13] = {
390 - 1.0e0L,
391 - 9.117613509595327476509152673394703847793e+0001L,
392 - 3.121697972484015639301279229281770795147e+0003L,
393 - 5.294447222735893568040911873834576440255e+0004L,
394 - 4.930368882192772335798256684110887882807e+0005L,
395 - 2.634854685641165298302167435798357437768e+0006L,
396 - 8.185462775400326393555896157031818280918e+0006L,
397 - 1.462417423080215192609668642663030667086e+0007L,
398 - 1.450624993985851675982860844153954896015e+0007L,
399 - 7.460467647561995283219086567162006113864e+0006L,
400 - 1.754210981405612478869227142579056338965e+0006L,
401 - 1.463286721155271971526264914524746699596e+0005L,
402 - 2.155894725796702015341211116579827039459e+0003L,
435 + 1.0e0L,
436 + 9.117613509595327476509152673394703847793e+0001L,
437 + 3.121697972484015639301279229281770795147e+0003L,
438 + 5.294447222735893568040911873834576440255e+0004L,
439 + 4.930368882192772335798256684110887882807e+0005L,
440 + 2.634854685641165298302167435798357437768e+0006L,
441 + 8.185462775400326393555896157031818280918e+0006L,
442 + 1.462417423080215192609668642663030667086e+0007L,
443 + 1.450624993985851675982860844153954896015e+0007L,
444 + 7.460467647561995283219086567162006113864e+0006L,
445 + 1.754210981405612478869227142579056338965e+0006L,
446 + 1.463286721155271971526264914524746699596e+0005L,
447 + 2.155894725796702015341211116579827039459e+0003L,
403 448 };
449 +
404 450 static GENERIC pr6[13] = {
405 - 1.000000003564855546741735920315743157129e+0000L,
406 - 5.734003934862540458119423509909510288366e+0001L,
407 - 1.209572491935850486086559692291796887976e+0003L,
408 - 1.243398391422281247933674779163660286838e+0004L,
409 - 6.930996755181437937258220998601708278787e+0004L,
410 - 2.198067659532757598646722249966767620099e+0005L,
411 - 4.033659432712058633933179115820576858455e+0005L,
412 - 4.257759657219008027016047206574574358678e+0005L,
413 - 2.511917395876004349480721277445763916389e+0005L,
414 - 7.813756153070623654178731651381881953552e+0004L,
415 - 1.152069173381127881385588092905864352891e+0004L,
416 - 6.548580782804088553777816037551523398082e+0002L,
417 - 8.668725370116906132327542766127938496880e+0000L,
451 + 1.000000003564855546741735920315743157129e+0000L,
452 + 5.734003934862540458119423509909510288366e+0001L,
453 + 1.209572491935850486086559692291796887976e+0003L,
454 + 1.243398391422281247933674779163660286838e+0004L,
455 + 6.930996755181437937258220998601708278787e+0004L,
456 + 2.198067659532757598646722249966767620099e+0005L,
457 + 4.033659432712058633933179115820576858455e+0005L,
458 + 4.257759657219008027016047206574574358678e+0005L,
459 + 2.511917395876004349480721277445763916389e+0005L,
460 + 7.813756153070623654178731651381881953552e+0004L,
461 + 1.152069173381127881385588092905864352891e+0004L,
462 + 6.548580782804088553777816037551523398082e+0002L,
463 + 8.668725370116906132327542766127938496880e+0000L,
418 464 };
465 +
419 466 static GENERIC ps6[13] = {
420 - 1.0e0L,
421 - 5.722285236357114566499221525736286205184e+0001L,
422 - 1.203010842878317935444582950620339570506e+0003L,
423 - 1.230058335378583550155825502172435371208e+0004L,
424 - 6.800998550607861288865300438648089894412e+0004L,
425 - 2.130767829599304262987769347536850885921e+0005L,
426 - 3.840483466643916681759936972992155310026e+0005L,
427 - 3.947432373459225542861819148108081160393e+0005L,
428 - 2.237816239393081111481588434457838526738e+0005L,
429 - 6.545820495124419723398946273790921540774e+0004L,
430 - 8.729563630320892741500726213278834737196e+0003L,
431 - 4.130762660291894753450174794196998813709e+0002L,
432 - 3.480368898672684645130335786015075595598e+0000L,
467 + 1.0e0L,
468 + 5.722285236357114566499221525736286205184e+0001L,
469 + 1.203010842878317935444582950620339570506e+0003L,
470 + 1.230058335378583550155825502172435371208e+0004L,
471 + 6.800998550607861288865300438648089894412e+0004L,
472 + 2.130767829599304262987769347536850885921e+0005L,
473 + 3.840483466643916681759936972992155310026e+0005L,
474 + 3.947432373459225542861819148108081160393e+0005L,
475 + 2.237816239393081111481588434457838526738e+0005L,
476 + 6.545820495124419723398946273790921540774e+0004L,
477 + 8.729563630320892741500726213278834737196e+0003L,
478 + 4.130762660291894753450174794196998813709e+0002L,
479 + 3.480368898672684645130335786015075595598e+0000L,
433 480 };
481 +
434 482 static GENERIC sixteen = 16.0L;
435 -static GENERIC eight = 8.0L;
436 -static GENERIC huge = 1.0e30L;
483 +static GENERIC eight = 8.0L;
484 +static GENERIC huge = 1.0e30L;
437 485
438 -static GENERIC pone(x)
439 -GENERIC x;
486 +static GENERIC
487 +pone(x)
488 + GENERIC x;
440 489 {
441 490 GENERIC s, r, t, z;
442 491 int i;
492 +
443 493 if (x > huge)
444 494 return (one);
445 - t = one/x; z = t*t;
495 +
496 + t = one / x;
497 + z = t * t;
498 +
446 499 if (x > sixteen) {
447 - r = z*pr0[11]+pr0[10]; s = ps0[10];
448 - for (i = 9; i >= 0; i--) {
449 - r = z*r + pr0[i];
450 - s = z*s + ps0[i];
451 - }
500 + r = z * pr0[11] + pr0[10];
501 + s = ps0[10];
502 +
503 + for (i = 9; i >= 0; i--) {
504 + r = z * r + pr0[i];
505 + s = z * s + ps0[i];
506 + }
452 507 } else if (x > eight) {
453 - r = pr1[11]; s = ps1[11]+z*(ps1[12]+z*ps1[13]);
454 - for (i = 10; i >= 0; i--) {
455 - r = z*r + pr1[i];
456 - s = z*s + ps1[i];
457 - }
508 + r = pr1[11];
509 + s = ps1[11] + z * (ps1[12] + z * ps1[13]);
510 +
511 + for (i = 10; i >= 0; i--) {
512 + r = z * r + pr1[i];
513 + s = z * s + ps1[i];
514 + }
458 515 } else if (x > five) {
459 - r = pr2[11]; s = ps2[11]+z*(ps2[12]+z*ps2[13]);
460 - for (i = 10; i >= 0; i--) {
461 - r = z*r + pr2[i];
462 - s = z*s + ps2[i];
463 - }
464 - } else if (x > 3.5L) {
465 - r = pr3[12]; s = ps3[12];
466 - for (i = 11; i >= 0; i--) {
467 - r = z*r + pr3[i];
468 - s = z*s + ps3[i];
469 - }
470 - } else if (x > 2.5L) {
471 - r = pr4[12]; s = ps4[12];
472 - for (i = 11; i >= 0; i--) {
473 - r = z*r + pr4[i];
474 - s = z*s + ps4[i];
475 - }
476 - } else if (x > (1.0L/0.5625L)) {
477 - r = pr5[12]; s = ps5[12];
478 - for (i = 11; i >= 0; i--) {
479 - r = z*r + pr5[i];
480 - s = z*s + ps5[i];
481 - }
482 - } else { /* assume x > 1.28 */
483 - r = pr6[12]; s = ps6[12];
484 - for (i = 11; i >= 0; i--) {
485 - r = z*r + pr6[i];
486 - s = z*s + ps6[i];
487 - }
488 - }
489 - return (r/s);
490 -}
516 + r = pr2[11];
517 + s = ps2[11] + z * (ps2[12] + z * ps2[13]);
491 518
519 + for (i = 10; i >= 0; i--) {
520 + r = z * r + pr2[i];
521 + s = z * s + ps2[i];
522 + }
523 + } else if (x > 3.5L) {
524 + r = pr3[12];
525 + s = ps3[12];
526 +
527 + for (i = 11; i >= 0; i--) {
528 + r = z * r + pr3[i];
529 + s = z * s + ps3[i];
530 + }
531 + } else if (x > 2.5L) {
532 + r = pr4[12];
533 + s = ps4[12];
534 +
535 + for (i = 11; i >= 0; i--) {
536 + r = z * r + pr4[i];
537 + s = z * s + ps4[i];
538 + }
539 + } else if (x > (1.0L / 0.5625L)) {
540 + r = pr5[12];
541 + s = ps5[12];
542 +
543 + for (i = 11; i >= 0; i--) {
544 + r = z * r + pr5[i];
545 + s = z * s + ps5[i];
546 + }
547 + } else { /* assume x > 1.28 */
548 + r = pr6[12];
549 + s = ps6[12];
550 +
551 + for (i = 11; i >= 0; i--) {
552 + r = z * r + pr6[i];
553 + s = z * s + ps6[i];
554 + }
555 + }
492 556
557 + return (r / s);
558 +}
493 559 static GENERIC qr0[12] = {
494 - 3.749999999999999999999999999999999971033e-0001L,
495 - 4.256726035237050601607682277433094262226e+0002L,
496 - 1.875976490812878489192409978945401066066e+0005L,
497 - 4.170314268048041914273603680317745592790e+0007L,
498 - 5.092750132543855817293451118974555746551e+0009L,
499 - 3.494749676278488654103505795794139483404e+0011L,
500 - 1.327062148257437316997667817096694173709e+0013L,
501 - 2.648993138273427226907503742066551150490e+0014L,
502 - 2.511695665909547412222430494473998127684e+0015L,
503 - 9.274694506662289043224310499164702306096e+0015L,
504 - 8.150904170663663829331320302911792892002e+0015L,
505 - -5.001918733707662355772037829620388765122e+0014L,
560 + 3.749999999999999999999999999999999971033e-0001L,
561 + 4.256726035237050601607682277433094262226e+0002L,
562 + 1.875976490812878489192409978945401066066e+0005L,
563 + 4.170314268048041914273603680317745592790e+0007L,
564 + 5.092750132543855817293451118974555746551e+0009L,
565 + 3.494749676278488654103505795794139483404e+0011L,
566 + 1.327062148257437316997667817096694173709e+0013L,
567 + 2.648993138273427226907503742066551150490e+0014L,
568 + 2.511695665909547412222430494473998127684e+0015L,
569 + 9.274694506662289043224310499164702306096e+0015L,
570 + 8.150904170663663829331320302911792892002e+0015L,
571 + -5.001918733707662355772037829620388765122e+0014L,
506 572 };
573 +
507 574 static GENERIC qs0[11] = {
508 - 1.0e0L,
509 - 1.135400380229880160428715273982155760093e+0003L,
510 - 5.005701183877126164326765545516590744360e+0005L,
511 - 1.113444200113712167984337603933040102987e+0008L,
512 - 1.361074819925223062778717565699039471124e+0010L,
513 - 9.355750985802849484438933905325982809653e+0011L,
514 - 3.563462786008988825003965543857998084828e+0013L,
515 - 7.155145113900094163648726863803802910454e+0014L,
516 - 6.871266835834472758055559013851843654113e+0015L,
517 - 2.622030899226736712644974988157345234092e+0016L,
518 - 2.602912729172876330650077021706139707746e+0016L,
575 + 1.0e0L,
576 + 1.135400380229880160428715273982155760093e+0003L,
577 + 5.005701183877126164326765545516590744360e+0005L,
578 + 1.113444200113712167984337603933040102987e+0008L,
579 + 1.361074819925223062778717565699039471124e+0010L,
580 + 9.355750985802849484438933905325982809653e+0011L,
581 + 3.563462786008988825003965543857998084828e+0013L,
582 + 7.155145113900094163648726863803802910454e+0014L,
583 + 6.871266835834472758055559013851843654113e+0015L,
584 + 2.622030899226736712644974988157345234092e+0016L,
585 + 2.602912729172876330650077021706139707746e+0016L,
519 586 };
587 +
520 588 static GENERIC qr1[12] = {
521 - 3.749999999999999999997762458207284405806e-0001L,
522 - 2.697883998881706839929255517498189980485e+0002L,
523 - 7.755195925781028489386938870473834411019e+0004L,
524 - 1.166777762104017777198211072895528968355e+0007L,
525 - 1.011504772984321168320010084520261069362e+0009L,
526 - 5.246007703574156853577754571720205550010e+0010L,
527 - 1.637692549885592683166116551691266537647e+0012L,
528 - 3.022303623698185669912990310925039382495e+0013L,
529 - 3.154769927290655684846107030265909987946e+0014L,
530 - 1.715819913441554770089730934808123360921e+0015L,
531 - 4.165044355759732622273534445131736188510e+0015L,
532 - 3.151381420874174705643100381708086287596e+0015L,
589 + 3.749999999999999999997762458207284405806e-0001L,
590 + 2.697883998881706839929255517498189980485e+0002L,
591 + 7.755195925781028489386938870473834411019e+0004L,
592 + 1.166777762104017777198211072895528968355e+0007L,
593 + 1.011504772984321168320010084520261069362e+0009L,
594 + 5.246007703574156853577754571720205550010e+0010L,
595 + 1.637692549885592683166116551691266537647e+0012L,
596 + 3.022303623698185669912990310925039382495e+0013L,
597 + 3.154769927290655684846107030265909987946e+0014L,
598 + 1.715819913441554770089730934808123360921e+0015L,
599 + 4.165044355759732622273534445131736188510e+0015L,
600 + 3.151381420874174705643100381708086287596e+0015L,
533 601 };
602 +
534 603 static GENERIC qs1[14] = {
535 - 1.0e0L,
536 - 7.197091705351218239785633172408276982828e+0002L,
537 - 2.070012799599548685544883041297609861055e+0005L,
538 - 3.117014815317656221871840152778458754516e+0007L,
539 - 2.705719678902554974863325877025902971727e+0009L,
540 - 1.406113614727345726925060648750867264098e+0011L,
541 - 4.403777536067131320363005978631674817359e+0012L,
542 - 8.170725690209322283061499386703167242894e+0013L,
543 - 8.609458844975495289227794126964431210566e+0014L,
544 - 4.766766367015473481257280600694952920204e+0015L,
545 - 1.202286587943342194863557940888115641650e+0016L,
546 - 1.012474328306200909525063936061756024120e+0016L,
547 - 6.183552022678917858273222879615824070703e+0014L,
548 - -9.756731548558226997573737400988225722740e+0013L,
604 + 1.0e0L,
605 + 7.197091705351218239785633172408276982828e+0002L,
606 + 2.070012799599548685544883041297609861055e+0005L,
607 + 3.117014815317656221871840152778458754516e+0007L,
608 + 2.705719678902554974863325877025902971727e+0009L,
609 + 1.406113614727345726925060648750867264098e+0011L,
610 + 4.403777536067131320363005978631674817359e+0012L,
611 + 8.170725690209322283061499386703167242894e+0013L,
612 + 8.609458844975495289227794126964431210566e+0014L,
613 + 4.766766367015473481257280600694952920204e+0015L,
614 + 1.202286587943342194863557940888115641650e+0016L,
615 + 1.012474328306200909525063936061756024120e+0016L,
616 + 6.183552022678917858273222879615824070703e+0014L,
617 + -9.756731548558226997573737400988225722740e+0013L,
549 618 };
619 +
550 620 static GENERIC qr2[12] = {
551 - 3.749999999999999481245647262226994293189e-0001L,
552 - 1.471366807289771354491181140167359026735e+0002L,
553 - 2.279432486768448220142080962843526951250e+0004L,
554 - 1.828943048523771225163804043356958285893e+0006L,
555 - 8.379828388647823135832220596417725010837e+0007L,
556 - 2.279814029335044024585393671278378022053e+0009L,
557 - 3.711653952257118120832817785271466441420e+0010L,
558 - 3.557650914518554549916730572553105048068e+0011L,
559 - 1.924583483146095896259774329498934160650e+0012L,
560 - 5.424386256063736390759567088291887140278e+0012L,
561 - 6.839325621241776786206509704671746841737e+0012L,
562 - 2.702169563144001166291686452305436313971e+0012L,
621 + 3.749999999999999481245647262226994293189e-0001L,
622 + 1.471366807289771354491181140167359026735e+0002L,
623 + 2.279432486768448220142080962843526951250e+0004L,
624 + 1.828943048523771225163804043356958285893e+0006L,
625 + 8.379828388647823135832220596417725010837e+0007L,
626 + 2.279814029335044024585393671278378022053e+0009L,
627 + 3.711653952257118120832817785271466441420e+0010L,
628 + 3.557650914518554549916730572553105048068e+0011L,
629 + 1.924583483146095896259774329498934160650e+0012L,
630 + 5.424386256063736390759567088291887140278e+0012L,
631 + 6.839325621241776786206509704671746841737e+0012L,
632 + 2.702169563144001166291686452305436313971e+0012L,
563 633 };
634 +
564 635 static GENERIC qs2[14] = {
565 - 1.0e0L,
566 - 3.926379194439388135703211933895203191089e+0002L,
567 - 6.089148804106598297488336063007609312276e+0004L,
568 - 4.893546162973278583711376356041614150645e+0006L,
569 - 2.247571119114497845046388801813832219404e+0008L,
570 - 6.137635663350177751290469334200757872645e+0009L,
571 - 1.005115019784102856424493519524998953678e+0011L,
572 - 9.725664462014503832860151384604677240620e+0011L,
573 - 5.345525100485511116148634192844434636072e+0012L,
574 - 1.549944007398946691720862738173956994779e+0013L,
575 - 2.067148441178952625710302124163264760362e+0013L,
576 - 9.401565402641963611295119487242595462301e+0012L,
577 - 3.548217088622398274748837287769709374385e+0011L,
578 - -2.934470341719047120076509938432417352365e+0010L,
636 + 1.0e0L,
637 + 3.926379194439388135703211933895203191089e+0002L,
638 + 6.089148804106598297488336063007609312276e+0004L,
639 + 4.893546162973278583711376356041614150645e+0006L,
640 + 2.247571119114497845046388801813832219404e+0008L,
641 + 6.137635663350177751290469334200757872645e+0009L,
642 + 1.005115019784102856424493519524998953678e+0011L,
643 + 9.725664462014503832860151384604677240620e+0011L,
644 + 5.345525100485511116148634192844434636072e+0012L,
645 + 1.549944007398946691720862738173956994779e+0013L,
646 + 2.067148441178952625710302124163264760362e+0013L,
647 + 9.401565402641963611295119487242595462301e+0012L,
648 + 3.548217088622398274748837287769709374385e+0011L,
649 + -2.934470341719047120076509938432417352365e+0010L,
579 650 };
651 +
580 652 static GENERIC qr3[13] = {
581 - 3.749999999999412724084579833297451472091e-0001L,
582 - 9.058478580291706212422978492938435582527e+0001L,
583 - 8.524056033161038750461083666711724381171e+0003L,
584 - 4.105967158629109427753434569223631014730e+0005L,
585 - 1.118326603378531348259783091972623333657e+0007L,
586 - 1.794636683403578918528064904714132329343e+0008L,
587 - 1.714314157463635959556133236004368896724e+0009L,
588 - 9.622092032236084846572067257267661456030e+0009L,
589 - 3.057759524485859159957762858780768355020e+0010L,
590 - 5.129306780754798531609621454415938890020e+0010L,
591 - 3.999122002794961070680636194346316041352e+0010L,
592 - 1.122298454643493485989721564358100345388e+0010L,
593 - 5.603981987645989709668830968522362582221e+0008L,
653 + 3.749999999999412724084579833297451472091e-0001L,
654 + 9.058478580291706212422978492938435582527e+0001L,
655 + 8.524056033161038750461083666711724381171e+0003L,
656 + 4.105967158629109427753434569223631014730e+0005L,
657 + 1.118326603378531348259783091972623333657e+0007L,
658 + 1.794636683403578918528064904714132329343e+0008L,
659 + 1.714314157463635959556133236004368896724e+0009L,
660 + 9.622092032236084846572067257267661456030e+0009L,
661 + 3.057759524485859159957762858780768355020e+0010L,
662 + 5.129306780754798531609621454415938890020e+0010L,
663 + 3.999122002794961070680636194346316041352e+0010L,
664 + 1.122298454643493485989721564358100345388e+0010L,
665 + 5.603981987645989709668830968522362582221e+0008L,
594 666 };
667 +
595 668 static GENERIC qs3[13] = {
596 - 1.0e0L,
597 - 2.418328663076578169836155170053634419922e+0002L,
598 - 2.279620205900121042587523541281272875520e+0004L,
599 - 1.100984222585729521470129014992217092794e+0006L,
600 - 3.010743223679247091004262516286654516282e+0007L,
601 - 4.860925542827367817289619265215599433996e+0008L,
602 - 4.686668111035348691982715864307839581243e+0009L,
603 - 2.668701788405102017427214705946730894074e+0010L,
604 - 8.677395746106802640390580944836650584903e+0010L,
605 - 1.511936455574951790658498795945106643036e+0011L,
606 - 1.260845604432623478002018696873608353093e+0011L,
607 - 4.052692278419853853911440231600864589805e+0010L,
608 - 2.965516519212226064983267822243329694729e+0009L,
669 + 1.0e0L,
670 + 2.418328663076578169836155170053634419922e+0002L,
671 + 2.279620205900121042587523541281272875520e+0004L,
672 + 1.100984222585729521470129014992217092794e+0006L,
673 + 3.010743223679247091004262516286654516282e+0007L,
674 + 4.860925542827367817289619265215599433996e+0008L,
675 + 4.686668111035348691982715864307839581243e+0009L,
676 + 2.668701788405102017427214705946730894074e+0010L,
677 + 8.677395746106802640390580944836650584903e+0010L,
678 + 1.511936455574951790658498795945106643036e+0011L,
679 + 1.260845604432623478002018696873608353093e+0011L,
680 + 4.052692278419853853911440231600864589805e+0010L,
681 + 2.965516519212226064983267822243329694729e+0009L,
609 682 };
683 +
610 684 static GENERIC qr4[13] = {
611 - 3.749999999919234164154669754440123072618e-0001L,
612 - 5.844218580776819864791168253485055101858e+0001L,
613 - 3.489273514092912982675669411371435670220e+0003L,
614 - 1.050523637774575684509663430018995479594e+0005L,
615 - 1.764549172059701565500717319792780115289e+0006L,
616 - 1.725532438844133795028063102681497371154e+0007L,
617 - 9.938114847359778539965140247590176334874e+0007L,
618 - 3.331710808184595545396883770200772842314e+0008L,
619 - 6.271970557641881511609560444872797282698e+0008L,
620 - 6.188529798677357075020774923903737913285e+0008L,
621 - 2.821905302742849974509982167877885011629e+0008L,
622 - 4.615467358646911976773290256984329814896e+0007L,
623 - 1.348140608731546467396685802693380693275e+0006L,
685 + 3.749999999919234164154669754440123072618e-0001L,
686 + 5.844218580776819864791168253485055101858e+0001L,
687 + 3.489273514092912982675669411371435670220e+0003L,
688 + 1.050523637774575684509663430018995479594e+0005L,
689 + 1.764549172059701565500717319792780115289e+0006L,
690 + 1.725532438844133795028063102681497371154e+0007L,
691 + 9.938114847359778539965140247590176334874e+0007L,
692 + 3.331710808184595545396883770200772842314e+0008L,
693 + 6.271970557641881511609560444872797282698e+0008L,
694 + 6.188529798677357075020774923903737913285e+0008L,
695 + 2.821905302742849974509982167877885011629e+0008L,
696 + 4.615467358646911976773290256984329814896e+0007L,
697 + 1.348140608731546467396685802693380693275e+0006L,
624 698 };
699 +
625 700 static GENERIC qs4[13] = {
626 - 1.0e0L,
627 - 1.561192663112345185261418296389902133372e+0002L,
628 - 9.346678031144098270547225423124213083072e+0003L,
629 - 2.825851246482293547838023847601704751590e+0005L,
630 - 4.776572711622156091710902891124911556293e+0006L,
631 - 4.715106953717135402977938048006267859302e+0007L,
632 - 2.753962350894311316439652227611209035193e+0008L,
633 - 9.428501434615463207768964787500411575223e+0008L,
634 - 1.832650858775206787088236896454141572617e+0009L,
635 - 1.901697378939743226948920874296595242257e+0009L,
636 - 9.433322226854293780627188599226380812725e+0008L,
637 - 1.808520540608671608680284520798858587370e+0008L,
638 - 7.983342331736662753157217446919462398008e+0006L,
701 + 1.0e0L,
702 + 1.561192663112345185261418296389902133372e+0002L,
703 + 9.346678031144098270547225423124213083072e+0003L,
704 + 2.825851246482293547838023847601704751590e+0005L,
705 + 4.776572711622156091710902891124911556293e+0006L,
706 + 4.715106953717135402977938048006267859302e+0007L,
707 + 2.753962350894311316439652227611209035193e+0008L,
708 + 9.428501434615463207768964787500411575223e+0008L,
709 + 1.832650858775206787088236896454141572617e+0009L,
710 + 1.901697378939743226948920874296595242257e+0009L,
711 + 9.433322226854293780627188599226380812725e+0008L,
712 + 1.808520540608671608680284520798858587370e+0008L,
713 + 7.983342331736662753157217446919462398008e+0006L,
639 714 };
715 +
640 716 static GENERIC qr5[13] = {
641 - 3.749999995331364437028988850515190446719e-0001L,
642 - 3.739356381766559882677514593041627547911e+0001L,
643 - 1.399562500629413529355265462912819802551e+0003L,
644 - 2.594154053098947925345332218062210111753e+0004L,
645 - 2.640149879297408640394163979394594318371e+0005L,
646 - 1.542471854873199142031889093591449397995e+0006L,
647 - 5.242272868972053374067572098992335425895e+0006L,
648 - 1.025834487769410221329633071426044839935e+0007L,
649 - 1.116553924239448940142230579060124209622e+0007L,
650 - 6.318076065595910176374916303525884653514e+0006L,
651 - 1.641218086168640408527639735915512881785e+0006L,
652 - 1.522369793529178644168813882912134706444e+0005L,
653 - 2.526530541062297200914180060208669584055e+0003L,
717 + 3.749999995331364437028988850515190446719e-0001L,
718 + 3.739356381766559882677514593041627547911e+0001L,
719 + 1.399562500629413529355265462912819802551e+0003L,
720 + 2.594154053098947925345332218062210111753e+0004L,
721 + 2.640149879297408640394163979394594318371e+0005L,
722 + 1.542471854873199142031889093591449397995e+0006L,
723 + 5.242272868972053374067572098992335425895e+0006L,
724 + 1.025834487769410221329633071426044839935e+0007L,
725 + 1.116553924239448940142230579060124209622e+0007L,
726 + 6.318076065595910176374916303525884653514e+0006L,
727 + 1.641218086168640408527639735915512881785e+0006L,
728 + 1.522369793529178644168813882912134706444e+0005L,
729 + 2.526530541062297200914180060208669584055e+0003L,
654 730 };
731 +
655 732 static GENERIC qs5[13] = {
656 - 1.0e0L,
657 - 9.998960735935075380397545659016287506660e+0001L,
658 - 3.758767417842043742686475060540416737562e+0003L,
659 - 7.013652806952306520121959742519780781653e+0004L,
660 - 7.208949808818615099246529616211730446850e+0005L,
661 - 4.272753927109614455417836186072202009252e+0006L,
662 - 1.482524411356470699336129814111025434703e+0007L,
663 - 2.988750366665678233425279237627700803473e+0007L,
664 - 3.396957890261080492694709150553619185065e+0007L,
665 - 2.050652487738593004111578091156304540386e+0007L,
666 - 5.900504120811732547616511555946279451316e+0006L,
667 - 6.563391409260160897024498082273183468347e+0005L,
668 - 1.692629845012790205348966731477187041419e+0004L,
733 + 1.0e0L,
734 + 9.998960735935075380397545659016287506660e+0001L,
735 + 3.758767417842043742686475060540416737562e+0003L,
736 + 7.013652806952306520121959742519780781653e+0004L,
737 + 7.208949808818615099246529616211730446850e+0005L,
738 + 4.272753927109614455417836186072202009252e+0006L,
739 + 1.482524411356470699336129814111025434703e+0007L,
740 + 2.988750366665678233425279237627700803473e+0007L,
741 + 3.396957890261080492694709150553619185065e+0007L,
742 + 2.050652487738593004111578091156304540386e+0007L,
743 + 5.900504120811732547616511555946279451316e+0006L,
744 + 6.563391409260160897024498082273183468347e+0005L,
745 + 1.692629845012790205348966731477187041419e+0004L,
669 746 };
747 +
670 748 static GENERIC qr6[13] = {
671 - 3.749999861516664133157566870858975421296e-0001L,
672 - 2.367863756747764863120797431599473468918e+0001L,
673 - 5.476715802114976248882067325630793143777e+0002L,
674 - 6.143190357869842894025012945444096170251e+0003L,
675 - 3.716250534677997850513733595140463851730e+0004L,
676 - 1.270883463823876752138326905022875657430e+0005L,
677 - 2.495301449636814481646371665429083801388e+0005L,
678 - 2.789578988212952248340486296254398601942e+0005L,
679 - 1.718247946911109055931819087137397324634e+0005L,
680 - 5.458973214011665714330326732204106364229e+0004L,
681 - 7.912102686687948786048943339759596652813e+0003L,
682 - 4.077961006160866935722030715149087938091e+0002L,
683 - 3.765206972770245085551057237882528510428e+0000L,
749 + 3.749999861516664133157566870858975421296e-0001L,
750 + 2.367863756747764863120797431599473468918e+0001L,
751 + 5.476715802114976248882067325630793143777e+0002L,
752 + 6.143190357869842894025012945444096170251e+0003L,
753 + 3.716250534677997850513733595140463851730e+0004L,
754 + 1.270883463823876752138326905022875657430e+0005L,
755 + 2.495301449636814481646371665429083801388e+0005L,
756 + 2.789578988212952248340486296254398601942e+0005L,
757 + 1.718247946911109055931819087137397324634e+0005L,
758 + 5.458973214011665714330326732204106364229e+0004L,
759 + 7.912102686687948786048943339759596652813e+0003L,
760 + 4.077961006160866935722030715149087938091e+0002L,
761 + 3.765206972770245085551057237882528510428e+0000L,
684 762 };
763 +
685 764 static GENERIC qs6[13] = {
686 - 1.0e0L,
687 - 6.341646532940517305641893852673926809601e+0001L,
688 - 1.477058277414040790932597537920671025359e+0003L,
689 - 1.674406564031044491436044253393536487604e+0004L,
690 - 1.028516501369755949895050806908994650768e+0005L,
691 - 3.593620042532885295087463507733285434207e+0005L,
692 - 7.267924991381020915185873399453724799625e+0005L,
693 - 8.462277510768818399961191426205006083088e+0005L,
694 - 5.514399892230892163373611895645500250514e+0005L,
695 - 1.898084241009259353540620272932188102299e+0005L,
696 - 3.102941242117739015721984123081026253068e+0004L,
697 - 1.958971184431466907681440650181421086143e+0003L,
698 - 2.878853357310495087181721613889455121867e+0001L,
765 + 1.0e0L,
766 + 6.341646532940517305641893852673926809601e+0001L,
767 + 1.477058277414040790932597537920671025359e+0003L,
768 + 1.674406564031044491436044253393536487604e+0004L,
769 + 1.028516501369755949895050806908994650768e+0005L,
770 + 3.593620042532885295087463507733285434207e+0005L,
771 + 7.267924991381020915185873399453724799625e+0005L,
772 + 8.462277510768818399961191426205006083088e+0005L,
773 + 5.514399892230892163373611895645500250514e+0005L,
774 + 1.898084241009259353540620272932188102299e+0005L,
775 + 3.102941242117739015721984123081026253068e+0004L,
776 + 1.958971184431466907681440650181421086143e+0003L,
777 + 2.878853357310495087181721613889455121867e+0001L,
699 778 };
700 -static GENERIC qone(x)
701 -GENERIC x;
779 +
780 +static GENERIC
781 +qone(x)
782 + GENERIC x;
702 783 {
703 784 GENERIC s, r, t, z;
704 785 int i;
786 +
705 787 if (x > huge)
706 - return (0.375L/x);
707 - t = one/x; z = t*t;
788 + return (0.375L / x);
789 +
790 + t = one / x;
791 + z = t * t;
792 +
708 793 if (x > sixteen) {
709 - r = z*qr0[11]+qr0[10]; s = qs0[10];
710 - for (i = 9; i >= 0; i--) {
711 - r = z*r + qr0[i];
712 - s = z*s + qs0[i];
713 - }
794 + r = z * qr0[11] + qr0[10];
795 + s = qs0[10];
796 +
797 + for (i = 9; i >= 0; i--) {
798 + r = z * r + qr0[i];
799 + s = z * s + qs0[i];
800 + }
714 801 } else if (x > eight) {
715 - r = qr1[11]; s = qs1[11]+z*(qs1[12]+z*qs1[13]);
716 - for (i = 10; i >= 0; i--) {
717 - r = z*r + qr1[i];
718 - s = z*s + qs1[i];
719 - }
720 - } else if (x > five) { /* x > 5.0 */
721 - r = qr2[11]; s = qs2[11]+z*(qs2[12]+z*qs2[13]);
722 - for (i = 10; i >= 0; i--) {
723 - r = z*r + qr2[i];
724 - s = z*s + qs2[i];
725 - }
726 - } else if (x > 3.5L) {
727 - r = qr3[12]; s = qs3[12];
728 - for (i = 11; i >= 0; i--) {
729 - r = z*r + qr3[i];
730 - s = z*s + qs3[i];
731 - }
732 - } else if (x > 2.5L) {
733 - r = qr4[12]; s = qs4[12];
734 - for (i = 11; i >= 0; i--) {
735 - r = z*r + qr4[i];
736 - s = z*s + qs4[i];
737 - }
738 - } else if (x > (1.0L/0.5625L)) {
739 - r = qr5[12]; s = qs5[12];
740 - for (i = 11; i >= 0; i--) {
741 - r = z*r + qr5[i];
742 - s = z*s + qs5[i];
743 - }
744 - } else { /* assume x > 1.28 */
745 - r = qr6[12]; s = qs6[12];
746 - for (i = 11; i >= 0; i--) {
747 - r = z*r + qr6[i];
748 - s = z*s + qs6[i];
749 - }
750 - }
751 - return (t*(r/s));
802 + r = qr1[11];
803 + s = qs1[11] + z * (qs1[12] + z * qs1[13]);
804 +
805 + for (i = 10; i >= 0; i--) {
806 + r = z * r + qr1[i];
807 + s = z * s + qs1[i];
808 + }
809 + } else if (x > five) { /* x > 5.0 */
810 + r = qr2[11];
811 + s = qs2[11] + z * (qs2[12] + z * qs2[13]);
812 +
813 + for (i = 10; i >= 0; i--) {
814 + r = z * r + qr2[i];
815 + s = z * s + qs2[i];
816 + }
817 + } else if (x > 3.5L) {
818 + r = qr3[12];
819 + s = qs3[12];
820 +
821 + for (i = 11; i >= 0; i--) {
822 + r = z * r + qr3[i];
823 + s = z * s + qs3[i];
824 + }
825 + } else if (x > 2.5L) {
826 + r = qr4[12];
827 + s = qs4[12];
828 +
829 + for (i = 11; i >= 0; i--) {
830 + r = z * r + qr4[i];
831 + s = z * s + qs4[i];
832 + }
833 + } else if (x > (1.0L / 0.5625L)) {
834 + r = qr5[12];
835 + s = qs5[12];
836 +
837 + for (i = 11; i >= 0; i--) {
838 + r = z * r + qr5[i];
839 + s = z * s + qs5[i];
840 + }
841 + } else { /* assume x > 1.28 */
842 + r = qr6[12];
843 + s = qs6[12];
844 +
845 + for (i = 11; i >= 0; i--) {
846 + r = z * r + qr6[i];
847 + s = z * s + qs6[i];
848 + }
849 + }
850 +
851 + return (t * (r / s));
752 852 }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX