crmf 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -0
  3. data/crmf.gemspec +102 -1
  4. data/ext/crlibm-1.0beta5/AUTHORS +2 -0
  5. data/ext/crlibm-1.0beta5/CMakeLists.txt +154 -0
  6. data/ext/crlibm-1.0beta5/COPYING +340 -0
  7. data/ext/crlibm-1.0beta5/COPYING.LIB +504 -0
  8. data/ext/crlibm-1.0beta5/ChangeLog +125 -0
  9. data/ext/crlibm-1.0beta5/Makefile.am +134 -0
  10. data/ext/crlibm-1.0beta5/NEWS +0 -0
  11. data/ext/crlibm-1.0beta5/README +31 -0
  12. data/ext/crlibm-1.0beta5/README.DEV +23 -0
  13. data/ext/crlibm-1.0beta5/README.md +5 -0
  14. data/ext/crlibm-1.0beta5/TODO +66 -0
  15. data/ext/crlibm-1.0beta5/VERSION +1 -0
  16. data/ext/crlibm-1.0beta5/acos-td.c +1195 -0
  17. data/ext/crlibm-1.0beta5/acos-td.h +629 -0
  18. data/ext/crlibm-1.0beta5/asin-td.c +1297 -0
  19. data/ext/crlibm-1.0beta5/asin-td.h +620 -0
  20. data/ext/crlibm-1.0beta5/asincos.c +4488 -0
  21. data/ext/crlibm-1.0beta5/asincos.h +575 -0
  22. data/ext/crlibm-1.0beta5/atan-itanium.c +846 -0
  23. data/ext/crlibm-1.0beta5/atan-pentium.c +280 -0
  24. data/ext/crlibm-1.0beta5/atan-pentium.h +343 -0
  25. data/ext/crlibm-1.0beta5/atan_accurate.c +341 -0
  26. data/ext/crlibm-1.0beta5/atan_accurate.h +198 -0
  27. data/ext/crlibm-1.0beta5/atan_fast.c +506 -0
  28. data/ext/crlibm-1.0beta5/atan_fast.h +680 -0
  29. data/ext/crlibm-1.0beta5/configure.ac +419 -0
  30. data/ext/crlibm-1.0beta5/crlibm.h +204 -0
  31. data/ext/crlibm-1.0beta5/crlibm.spec +42 -0
  32. data/ext/crlibm-1.0beta5/crlibm_private.c +397 -0
  33. data/ext/crlibm-1.0beta5/crlibm_private.h +1048 -0
  34. data/ext/crlibm-1.0beta5/csh_fast.c +721 -0
  35. data/ext/crlibm-1.0beta5/csh_fast.h +771 -0
  36. data/ext/crlibm-1.0beta5/double-extended.h +496 -0
  37. data/ext/crlibm-1.0beta5/exp-itanium.c +723 -0
  38. data/ext/crlibm-1.0beta5/exp-td-standalone.c +87 -0
  39. data/ext/crlibm-1.0beta5/exp-td.c +1363 -0
  40. data/ext/crlibm-1.0beta5/exp-td.h +685 -0
  41. data/ext/crlibm-1.0beta5/exp_build_coeffs/exp_fast_table.c +125 -0
  42. data/ext/crlibm-1.0beta5/expm1-standalone.c +119 -0
  43. data/ext/crlibm-1.0beta5/expm1.c +2515 -0
  44. data/ext/crlibm-1.0beta5/expm1.h +715 -0
  45. data/ext/crlibm-1.0beta5/interval.h +238 -0
  46. data/ext/crlibm-1.0beta5/log-de.c +480 -0
  47. data/ext/crlibm-1.0beta5/log-de.h +747 -0
  48. data/ext/crlibm-1.0beta5/log-de2.c +280 -0
  49. data/ext/crlibm-1.0beta5/log-de2.h +2352 -0
  50. data/ext/crlibm-1.0beta5/log-td.c +1158 -0
  51. data/ext/crlibm-1.0beta5/log-td.h +819 -0
  52. data/ext/crlibm-1.0beta5/log.c +2244 -0
  53. data/ext/crlibm-1.0beta5/log.h +1592 -0
  54. data/ext/crlibm-1.0beta5/log10-td.c +906 -0
  55. data/ext/crlibm-1.0beta5/log10-td.h +823 -0
  56. data/ext/crlibm-1.0beta5/log1p.c +1295 -0
  57. data/ext/crlibm-1.0beta5/log2-td.c +1521 -0
  58. data/ext/crlibm-1.0beta5/log2-td.h +821 -0
  59. data/ext/crlibm-1.0beta5/log2_accurate.c +330 -0
  60. data/ext/crlibm-1.0beta5/log2_accurate.h +261 -0
  61. data/ext/crlibm-1.0beta5/log_accurate.c +133 -0
  62. data/ext/crlibm-1.0beta5/log_accurate.h +261 -0
  63. data/ext/crlibm-1.0beta5/log_fast.c +360 -0
  64. data/ext/crlibm-1.0beta5/log_fast.h +440 -0
  65. data/ext/crlibm-1.0beta5/pow.c +1396 -0
  66. data/ext/crlibm-1.0beta5/pow.h +3101 -0
  67. data/ext/crlibm-1.0beta5/prepare +20 -0
  68. data/ext/crlibm-1.0beta5/rem_pio2_accurate.c +219 -0
  69. data/ext/crlibm-1.0beta5/rem_pio2_accurate.h +53 -0
  70. data/ext/crlibm-1.0beta5/scs_lib/AUTHORS +3 -0
  71. data/ext/crlibm-1.0beta5/scs_lib/COPYING +504 -0
  72. data/ext/crlibm-1.0beta5/scs_lib/ChangeLog +16 -0
  73. data/ext/crlibm-1.0beta5/scs_lib/Doxyfile.dev +939 -0
  74. data/ext/crlibm-1.0beta5/scs_lib/Doxyfile.user +939 -0
  75. data/ext/crlibm-1.0beta5/scs_lib/INSTALL +215 -0
  76. data/ext/crlibm-1.0beta5/scs_lib/Makefile.am +17 -0
  77. data/ext/crlibm-1.0beta5/scs_lib/NEWS +0 -0
  78. data/ext/crlibm-1.0beta5/scs_lib/README +9 -0
  79. data/ext/crlibm-1.0beta5/scs_lib/README.DEV +38 -0
  80. data/ext/crlibm-1.0beta5/scs_lib/TODO +4 -0
  81. data/ext/crlibm-1.0beta5/scs_lib/VERSION +1 -0
  82. data/ext/crlibm-1.0beta5/scs_lib/addition_scs.c +623 -0
  83. data/ext/crlibm-1.0beta5/scs_lib/division_scs.c +110 -0
  84. data/ext/crlibm-1.0beta5/scs_lib/double2scs.c +174 -0
  85. data/ext/crlibm-1.0beta5/scs_lib/main.dox +104 -0
  86. data/ext/crlibm-1.0beta5/scs_lib/multiplication_scs.c +339 -0
  87. data/ext/crlibm-1.0beta5/scs_lib/poly_fct.c +112 -0
  88. data/ext/crlibm-1.0beta5/scs_lib/print_scs.c +73 -0
  89. data/ext/crlibm-1.0beta5/scs_lib/rand_scs.c +63 -0
  90. data/ext/crlibm-1.0beta5/scs_lib/scs.h +353 -0
  91. data/ext/crlibm-1.0beta5/scs_lib/scs2double.c +411 -0
  92. data/ext/crlibm-1.0beta5/scs_lib/scs2mpf.c +58 -0
  93. data/ext/crlibm-1.0beta5/scs_lib/scs2mpfr.c +61 -0
  94. data/ext/crlibm-1.0beta5/scs_lib/scs_private.c +23 -0
  95. data/ext/crlibm-1.0beta5/scs_lib/scs_private.h +133 -0
  96. data/ext/crlibm-1.0beta5/scs_lib/wrapper_scs.h +486 -0
  97. data/ext/crlibm-1.0beta5/scs_lib/zero_scs.c +52 -0
  98. data/ext/crlibm-1.0beta5/trigo_accurate.c +501 -0
  99. data/ext/crlibm-1.0beta5/trigo_accurate.h +331 -0
  100. data/ext/crlibm-1.0beta5/trigo_fast.c +1243 -0
  101. data/ext/crlibm-1.0beta5/trigo_fast.h +639 -0
  102. data/ext/crlibm-1.0beta5/trigpi.c +1169 -0
  103. data/ext/crlibm-1.0beta5/trigpi.h +556 -0
  104. data/ext/crlibm-1.0beta5/triple-double.c +57 -0
  105. data/ext/crlibm-1.0beta5/triple-double.h +1380 -0
  106. data/ext/crmf/crmf.c +16 -16
  107. data/ext/crmf/extconf.rb +12 -8
  108. data/lib/crmf/version.rb +1 -1
  109. data/tests/perf.rb +100 -219
  110. metadata +104 -3
  111. data/ext/crlibm-1.0beta4.tar.gz +0 -0
@@ -0,0 +1,280 @@
1
+ /*
2
+ *
3
+ THIS CODE IS BROKEN. DO NOT USE.
4
+
5
+ this function computes atan correctly rounded to the nearest,
6
+ using experimental techniques based on double-extended arithmetic
7
+
8
+ It used to work, honest, but changes in the crlibm framework have
9
+ broken it. It should be merged some day with atan-itanium, but this is
10
+ not high on the agenda.
11
+
12
+ *
13
+ * Author : Nicolas Gast, Florent de Dinechin
14
+ * nicolas.gast@ens.fr
15
+ *
16
+
17
+ To have it replace the crlibm atan, do:
18
+ gcc -DHAVE_CONFIG_H -I. -fPIC -O2 -c atan-pentium.c; mv atan-pentium.o atan_fast.o; make
19
+
20
+ */
21
+
22
+
23
+ #include <stdio.h>
24
+ #include <stdlib.h>
25
+ #include <crlibm.h>
26
+ #include <crlibm_private.h>
27
+ #include <double-extended.h>
28
+
29
+ #define debug 0 /*Warning : turning debugging on seems to change the final result */
30
+ #define DEBUG 0
31
+ #define NICOLASTEST 0
32
+
33
+ #ifdef HAVE_FENV_H
34
+ #include <fenv.h>
35
+ #endif
36
+
37
+
38
+ /* The following seems perfectly harmless */
39
+
40
+ #ifdef FENV_H
41
+ #pragma STDC FENV_ACCESS ON
42
+ #endif
43
+
44
+ #include "atan-pentium.h"
45
+ #include <fpu_control.h>
46
+
47
+
48
+
49
+ /* Dummy functions to compile OK */
50
+ extern double atan_rd(double x) {return 0;}
51
+ extern double atan_ru(double x) {return 0;}
52
+ extern double atan_rz(double x) {return 0;}
53
+
54
+
55
+ extern double atan_rn(double x) {
56
+ db_number x_db;
57
+ unsigned int hx;
58
+ double sign;
59
+ double u;
60
+ double comp;
61
+ double atanhi, atanlo, atanlo_u;
62
+
63
+ long double Xred;
64
+ long double Xred2;
65
+ long double q;
66
+ long double atan;
67
+ long double eps;
68
+ int i;
69
+
70
+ if(x>=0)
71
+ sign = 1;
72
+ else
73
+ {sign = -1;
74
+ x=-x;}
75
+
76
+ x_db.d = x;
77
+ hx = x_db.i[HI] & 0x7FFFFFFF;
78
+
79
+ /* Filter cases */
80
+ if ( hx >= 0x43500000) /* x >= 2^54 */
81
+ {
82
+ if ( (x_db.i[LO] == 0) && (hx & 0x000fffff) == 0x00080000)
83
+ return x+x; /* NaN */
84
+ else
85
+ return sign*HALFPI.d; /* atan(x) = Pi/2 */
86
+ }
87
+ else
88
+ if ( hx < 0x3E400000 )
89
+ {return sign*x;} /* x<2^-27 then atan(x) =~ x */
90
+
91
+ DOUBLE_EXTENDED_MODE;
92
+
93
+
94
+ if (x > MIN_REDUCTION_NEEDED) /* test if reduction is necessary : */
95
+ {
96
+ /* 1) Argument reduction : */
97
+
98
+ /* compute i so that a[i] < x < a[i+1] */
99
+ if (x>arctan_table[61][A])
100
+ i=61;
101
+ else {
102
+ i=31;
103
+ if (x < arctan_table[i][A]) i-= 16;
104
+ else i+=16;
105
+ if (x < arctan_table[i][A]) i-= 8;
106
+ else i+= 8;
107
+ if (x < arctan_table[i][A]) i-= 4;
108
+ else i+= 4;
109
+ if (x < arctan_table[i][A]) i-= 2;
110
+ else i+= 2;
111
+ if (x < arctan_table[i][A]) i-= 1;
112
+ else i+= 1;
113
+ if (x < arctan_table[i][A]) i-= 1;
114
+ }
115
+ Xred = (x - arctan_table[i][B] )/(1.0L + x * arctan_table[i][B] );
116
+
117
+ Xred2 = Xred*Xred;
118
+ /* Polynomial evaluation */
119
+ q = Xred2*(coef_poly[0][0]+Xred2*
120
+ (coef_poly[1][0]+Xred2*
121
+ (coef_poly[2][0]+Xred2*
122
+ (coef_poly[3][0]))));
123
+
124
+ /* reconstruction : atan(x) = atan(b[i]) + atan(x) */
125
+ atan = arctan_table[i][ATAN_BHI] + (Xred + q*Xred);
126
+
127
+
128
+ atanhi = (double) atan;
129
+ atanlo = atan-atanhi;
130
+
131
+
132
+ }
133
+ else
134
+
135
+ // no reduction needed
136
+ {
137
+
138
+ Xred2 = x*x;
139
+
140
+ /* Polynomial evaluation */
141
+ q = Xred2*(coef_poly[0][0]+Xred2*
142
+ (coef_poly[1][0]+Xred2*
143
+ (coef_poly[2][0]+Xred2*
144
+ (coef_poly[3][0]))));
145
+
146
+ atan = q*x + x;
147
+
148
+ }
149
+
150
+ /* We do not use the macro of double-extended.h because we want to
151
+ compute in parallel the rounding test and the product sign*atan */
152
+
153
+ #if 1
154
+ DE_TEST_AND_RETURN_RN(sign*atan, ACCURATE_TO_62_BITS);
155
+
156
+ #else
157
+ {
158
+ db_ext_number _z; double _yd, retval;
159
+ int _lo;
160
+ int _mask=ACCURATE_TO_62_BITS;
161
+ _z.d = atan; retval= sign*atan;
162
+ _yd = (double) atan;
163
+ _lo = _z.i[DE_MANTISSA_LO] &(_mask);
164
+ if((_lo!=(0x3ff&(_mask))) && (_lo!= (0x400&(_mask)))) {
165
+ BACK_TO_DOUBLE_MODE;
166
+ return retval;
167
+ }
168
+ }
169
+ #endif
170
+
171
+ {
172
+
173
+ /*Second step, double-double */
174
+ long double tmphi, tmplo;
175
+ long double x0hi, x0lo;
176
+ long double xmBihi, xmBilo;
177
+ long double Xredhi, Xredlo;
178
+ long double Xred2;
179
+ long double qhi,qlo; /* q = polynomial */
180
+ long double q;
181
+ long double Xred2hi,Xred2lo;
182
+ long double atanhi,atanlo;
183
+ int j;
184
+
185
+ #if EVAL_PERF
186
+ crlibm_second_step_taken++;
187
+ #endif
188
+
189
+ if (x > MIN_REDUCTION_NEEDED) /* test if reduction is necessary : */
190
+ {
191
+ /* 1) Argument reduction : */
192
+
193
+ if (i==61)
194
+ {
195
+ Add12_ext( &xmBihi , &xmBilo , x , -arctan_table[61][B]);
196
+ }
197
+ else
198
+ {
199
+ xmBihi = x-arctan_table[i][B];
200
+ xmBilo = 0.0;
201
+ }
202
+
203
+ Mul12_ext(&tmphi,&tmplo, x, arctan_table[i][B]);
204
+
205
+ if (x > 1)
206
+ Add22_ext(&x0hi,&x0lo,tmphi,tmplo, 1.0,0.0);
207
+ else {Add22_ext( &x0hi , &x0lo , 1.0,0.0,tmphi,tmplo);}
208
+
209
+ Div22_ext( Xredhi, Xredlo, xmBihi , xmBilo , x0hi,x0lo);
210
+
211
+ Xred2 = Xredhi*Xredhi;
212
+ Mul22_ext( &Xred2hi,&Xred2lo,Xredhi,Xredlo,Xredhi, Xredlo);
213
+
214
+ /*poly eval */
215
+
216
+ q = (coef_poly[4][0]+Xred2*
217
+ (coef_poly[5][0]+Xred2*
218
+ (coef_poly[6][0]+Xred2*
219
+ (coef_poly[7][0]+
220
+ (Xred2*coef_poly[8][0])))));
221
+
222
+ Mul12_ext( &qhi, &qlo, q, Xred2);
223
+
224
+ for(j=3;j>=0;j--)
225
+ {
226
+ Add22_ext(&qhi,&qlo, coef_poly[j][0], coef_poly[j][1], qhi,qlo);
227
+ Mul22_ext(&qhi,&qlo, qhi,qlo, Xred2hi,Xred2lo);
228
+ }
229
+
230
+ Mul22_ext(&qhi,&qlo, Xredhi,Xredlo, qhi,qlo);
231
+ Add22_ext(&qhi,&qlo, Xredhi,Xredlo, qhi,qlo);
232
+
233
+ /* reconstruction : atan(x) = atan(b[i]) + atan(x) */
234
+ Add22_ext(&atanhi,&atanlo, arctan_table[i][ATAN_BHI], arctan_table[i][ATAN_BLO], qhi,qlo);
235
+ }
236
+ else
237
+
238
+ // no reduction needed
239
+ {
240
+ /* Polynomial evaluation */
241
+ Mul12_ext( &Xred2hi,&Xred2lo,x,x);
242
+
243
+ /*poly eval */
244
+ q = Xred2hi*(coef_poly[5][0]+Xred2hi*
245
+ (coef_poly[6][0]+Xred2hi*
246
+ (coef_poly[7][0]+Xred2hi*
247
+ (coef_poly[8][0]))));
248
+
249
+ Add12_ext(&qhi,&qlo, coef_poly[4][0],q);
250
+ #if debug
251
+ printf(" xred2 = %1.50Le + %1.50Le\n", Xred2hi, Xred2lo);
252
+ printf(" qhi+qlo0= %1.50Le + %1.50Le\n",qhi, qlo);
253
+ #endif
254
+ Mul22_ext(&qhi,&qlo, qhi,qlo, Xred2hi,Xred2lo);
255
+
256
+ for(j=3;j>=0;j--)
257
+ {
258
+ Add22_ext(&qhi,&qlo, coef_poly[j][0], coef_poly[j][1], qhi,qlo);
259
+ Mul22_ext(&qhi,&qlo, qhi,qlo, Xred2hi,Xred2lo);
260
+ }
261
+
262
+ Mul22_ext (&qhi,&qlo, x,0, qhi,qlo);
263
+
264
+ #if debug
265
+ printf(" qhi+qlo = %1.50Le + %1.50Le\n",qhi, qlo);
266
+ #endif
267
+
268
+ /* The sequence in the TOMS paper */
269
+ Add12_ext (&atanhi,&atanlo,x,qhi);
270
+ atanlo += qlo;
271
+ }
272
+ #if debug
273
+ printf(" %1.50Le + %1.50Le\n",atanhi, atanlo);
274
+ printf(" %1.50Le\n",atanhi + atanlo);
275
+ #endif
276
+
277
+ BACK_TO_DOUBLE_MODE;
278
+ return sign*((double) (atanhi+atanlo));
279
+ }
280
+ }
@@ -0,0 +1,343 @@
1
+ /* file generated by atan_ext.mpl*/
2
+
3
+ #include "double-extended.h"
4
+ #ifdef WORDS_BIGENDIAN
5
+ static const db_number HALFPI = {{0x3FF921FB,0x54442D18}};
6
+ #else
7
+ static const db_number HALFPI = {{0x54442D18,0x3FF921FB}};
8
+ #endif
9
+ #define MIN_REDUCTION_NEEDED 0.01269144369306618004077670910586377580133132772550
10
+ #define A 0
11
+ #define B 1
12
+ #define ATAN_BHI 2
13
+ #define ATAN_BLO 3
14
+ #define EPSILON 2.04221581890623872536809598138553304900554884091659e-19
15
+ #define EPSILON_NO_RED 1.56771350764719825686165002299335165493769973908433e-19
16
+ #define TWO_M_64 5.42101086242752217003726400434970855712890625000000e-20
17
+ #define TWO_10 1.02400000000000000000000000000000000000000000000000e+03
18
+ static long double const arctan_table[62][4] =
19
+ {
20
+ {
21
+ /*a[0] */ 1.26914436930661800407767091058637758013313277255025e-02L ,
22
+ /*b[0] : */ 2.53869765124364010090284460990917025924318295437843e-02L ,
23
+ /*atan_b[0]*/ 2.53815246637655720121743178549489350359635864151642e-02L,-3.82867671985365148296195510993062067276578228375704e-22L ,
24
+ }
25
+ ,{
26
+ /*a[1] */ 3.80906929270782389081071355032096219670426556476096e-02L ,
27
+ /*b[1] : */ 5.08066978456951537364380978162303748035810713190585e-02L ,
28
+ /*atan_b[1]*/ 5.07630493039637822849077710557486042830532824154943e-02L,-9.08476246908274392997382820602430859506166364517308e-22L ,
29
+ }
30
+ ,{
31
+ /*a[2] */ 6.35391122156262265073608708121557700191864542424734e-02L ,
32
+ /*b[2] : */ 7.62920780032335878368971587848434978695877362042665e-02L ,
33
+ /*atan_b[2]*/ 7.61445739207162224570710207238732891710242256522179e-02L,-8.68282459278828642628371257575800957271427290973051e-22L ,
34
+ }
35
+ ,{
36
+ /*a[3] */ 8.90697640843219566678833329168019764753902351477774e-02L ,
37
+ /*b[3] : */ 1.01876371166982943013764196377168858020922925788909e-01L ,
38
+ /*atan_b[3]*/ 1.01526098514204888296065358577191517497340100817382e-01L,2.45769122345174324242177208623096072189462913881225e-21L ,
39
+ }
40
+ ,{
41
+ /*a[4] */ 1.14716138034642069137320417229771403756391587930350e-01L ,
42
+ /*b[4] : */ 1.27593346472767313573462404086011900972152943722904e-01L ,
43
+ /*atan_b[4]*/ 1.26907623084671710832899149679064976226072758436203e-01L,-2.78816905606569560493152971332904010388470569035556e-21L ,
44
+ }
45
+ ,{
46
+ /*a[5] */ 1.40512327929006402335609329563511567374816039056592e-01L ,
47
+ /*b[5] : */ 1.53477468508642290209546821255770510106231085956097e-01L ,
48
+ /*atan_b[5]*/ 1.52289147632417933012007223159134383649870869703591e-01L,5.68472586734099921502541679282214217956262541061124e-21L ,
49
+ }
50
+ ,{
51
+ /*a[6] */ 1.66493216120905508290155447580666771977220433369075e-01L ,
52
+ /*b[6] : */ 1.79564085612852898464876852391292061383865075185895e-01L ,
53
+ /*atan_b[6]*/ 1.77670672157803333676934047502538049911890993826091e-01L,2.87836193526503867133275526409685067962483884000160e-22L ,
54
+ }
55
+ ,{
56
+ /*a[7] */ 1.92694666476959811837109742880645880397828687778289e-01L ,
57
+ /*b[7] : */ 2.05889628199360004388320487256347490756525075994432e-01L ,
58
+ /*atan_b[7]*/ 2.03052196661245300563923728287551995208559674210846e-01L,6.51289679452996937811343386488447297822880946308131e-21L ,
59
+ }
60
+ ,{
61
+ /*a[8] */ 2.19153728611415853112422718806867132089178565966211e-01L ,
62
+ /*b[8] : */ 2.32491819536184162126382646285094324412057176232338e-01L ,
63
+ /*atan_b[8]*/ 2.28433721143217755085073027154773939173537655733526e-01L,-3.99672208045526890632745378555235922768746788959726e-21L ,
64
+ }
65
+ ,{
66
+ /*a[9] */ 2.45908855876056427513150499868929834361055540260207e-01L ,
67
+ /*b[9] : */ 2.59409901651160933037411349122436377001577056944370e-01L ,
68
+ /*atan_b[9]*/ 2.53815245604249931191424491383479278283630264922976e-01L,7.56455309308095037743734018000284139150046029645800e-21L ,
69
+ }
70
+ ,{
71
+ /*a[10] */ 2.73000139926648346516383602081188127403848190278175e-01L ,
72
+ /*b[10] : */ 2.86684879348826103653358546297091891119634965434670e-01L ,
73
+ /*atan_b[10]*/ 2.79196770044925012070049716306208154037449276074767e-01L,-2.52115788641577571295756044335677296592687943925995e-21L ,
74
+ }
75
+ ,{
76
+ /*a[11] */ 3.00469565029600975134893331013376561555834254185520e-01L ,
77
+ /*b[11] : */ 3.14359785700871038210697100412360782684118021279573e-01L ,
78
+ /*atan_b[11]*/ 3.04578294465878627494048389023895140326203545555472e-01L,2.91230434592492772694189684967968754208118542272081e-22L ,
79
+ }
80
+ ,{
81
+ /*a[12] */ 3.28361285690481774678262393368066760807466830418924e-01L ,
82
+ /*b[12] : */ 3.42479972833279288854397420793773676450655329972506e-01L ,
83
+ /*atan_b[12]*/ 3.29959818867797216379112237860660172827920177951455e-01L,9.30919107029496230740423735124228172173872279217061e-21L ,
84
+ }
85
+ ,{
86
+ /*a[13] */ 3.56721931693259055874505029587211651856214717987120e-01L ,
87
+ /*b[13] : */ 3.71093432391343328410242621839820742479787440970540e-01L ,
88
+ /*atan_b[13]*/ 3.55341343251416258219388746852906990625342587009072e-01L,1.05238591424673141000163053238160966240559825585058e-21L ,
89
+ }
90
+ ,{
91
+ /*a[14] */ 3.85600945252912803692499039003231191720641179521153e-01L ,
92
+ /*b[14] : */ 4.00251150738601814323960534358626262019242858514190e-01L ,
93
+ /*atan_b[14]*/ 3.80722867617518378200239248521086210530484095215797e-01L,-1.21945811870033495672278691057491669776578154458509e-20L ,
94
+ }
95
+ ,{
96
+ /*a[15] */ 4.15050955725992341472273957165949013751986760007989e-01L ,
97
+ /*b[15] : */ 4.30007504761513240142210140470879764507117215543985e-01L ,
98
+ /*atan_b[15]*/ 4.06104391966931330934563806889237014274840475991368e-01L,2.65998962597399045630215293174401738151071787628836e-21L ,
99
+ }
100
+ ,{
101
+ /*a[16] */ 4.45128198220858601154729507448273565784681133190970e-01L ,
102
+ /*b[16] : */ 4.60420705138676883411271920087948217314988141879439e-01L ,
103
+ /*atan_b[16]*/ 4.31485916300525867999758264370591120950848562642932e-01L,-5.15731898573788000867228224617550054933376770292499e-21L ,
104
+ }
105
+ ,{
106
+ /*a[17] */ 4.75892983535654960900184477034957958538394330627699e-01L ,
107
+ /*b[17] : */ 4.91553295129659681411823587970921778378396993502975e-01L ,
108
+ /*atan_b[17]*/ 4.56867440619213494398158717513247495389805408194661e-01L,-1.17767132157456183414344600410550075200279622028076e-20L ,
109
+ }
110
+ ,{
111
+ /*a[18] */ 5.07410228170177445558907530181202563476000281365126e-01L ,
112
+ /*b[18] : */ 5.23472714391912459942074464791517129924613982439041e-01L ,
113
+ /*atan_b[18]*/ 4.82248964923944120283556130646118731419846881181002e-01L,7.19228812371825763087471157928804601190451351795533e-21L ,
114
+ }
115
+ ,{
116
+ /*a[19] */ 5.39750054761637700814449941371777322570256912129319e-01L ,
117
+ /*b[19] : */ 5.56251939105489768655314619660856578775565139949322e-01L ,
118
+ /*atan_b[19]*/ 5.07630489215703613835577873159010664494417142122984e-01L,1.95729185540933029018896909629355663993263278227122e-20L ,
119
+ }
120
+ ,{
121
+ /*a[20] */ 5.72988475252136229153362345470036573847020634274658e-01L ,
122
+ /*b[20] : */ 5.89970211851368934573985880476243437442462891340256e-01L ,
123
+ /*atan_b[20]*/ 5.33012013495511261082417803214283935631101485341787e-01L,1.19136600379842308834059395767709777186646606458244e-20L ,
124
+ }
125
+ ,{
126
+ /*a[21] */ 6.07208171494496323570585450136999928494042072413638e-01L ,
127
+ /*b[21] : */ 6.24713877348479113026710057843260415211261715739965e-01L ,
128
+ /*atan_b[21]*/ 5.58393537764417140017384616479390047061315272003412e-01L,1.60618754495076238470882310232850107535836684871974e-21L ,
129
+ }
130
+ ,{
131
+ /*a[22] */ 6.42499390954343606010936791107363164108340977746831e-01L ,
132
+ /*b[22] : */ 6.60577343433393635583391473309333719043934252113104e-01L ,
133
+ /*atan_b[22]*/ 5.83775062023499415216325897359794794283516239374876e-01L,4.35252648168202510134394817934791829596865136622329e-21L ,
134
+ }
135
+ ,{
136
+ /*a[23] */ 6.78960978813340439010418458717160717274973479682160e-01L ,
137
+ /*b[23] : */ 6.97664190728041029999472594225196075967687647789717e-01L ,
138
+ /*atan_b[23]*/ 6.09156586273861560165872319760893560669501312077045e-01L,1.16980357484588651119506030046331492746458861536954e-20L ,
139
+ }
140
+ ,{
141
+ /*a[24] */ 7.16701572306941472702660857359560926553184289676267e-01L ,
142
+ /*b[24] : */ 7.36088459496464051585659649212800559325842186808586e-01L ,
143
+ /*atan_b[24]*/ 6.34538110516629514322711064222559684822044800966978e-01L,1.04271379790869044477776255742912246791868144138838e-20L ,
144
+ }
145
+ ,{
146
+ /*a[25] */ 7.55840988781748681529424123295264811121247558513562e-01L ,
147
+ /*b[25] : */ 7.75976148518263165846948342663225162141316104680300e-01L ,
148
+ /*atan_b[25]*/ 6.59919634752948782276463224327756051934557035565376e-01L,-1.49707000168437254867185968448020110086938384414132e-21L ,
149
+ }
150
+ ,{
151
+ /*a[26] */ 7.96511846049556100870729410829982316343265859222562e-01L ,
152
+ /*b[26] : */ 8.17466968767843598319116499295589051143906544893980e-01L ,
153
+ /*atan_b[26]*/ 6.85301158983981482551370301159465725504560396075249e-01L,2.26378453363027050436135458770294067540690440344722e-20L ,
154
+ }
155
+ ,{
156
+ /*a[27] */ 8.38861462565995566516507125655143945180189448200243e-01L ,
157
+ /*b[27] : */ 8.60716404767067592908747625246590473579999525099993e-01L ,
158
+ /*atan_b[27]*/ 7.10682683210903353798835319077298322554270271211863e-01L,-2.05816942072267395453305456292103819891300383499067e-20L ,
159
+ }
160
+ ,{
161
+ /*a[28] */ 8.83054096327761123407402015796301185982961275018315e-01L ,
162
+ /*b[28] : */ 9.05898149317818312002345559896809845668030902743340e-01L ,
163
+ /*atan_b[28]*/ 7.36064207434900725319712466721000510005978867411613e-01L,-2.01495891478093883255259057095598284567266076155582e-20L ,
164
+ }
165
+ ,{
166
+ /*a[29] */ 9.29273595909162104414831936686333705299409223136150e-01L ,
167
+ /*b[29] : */ 9.53206993785724477057791359513316820084583014249802e-01L ,
168
+ /*atan_b[29]*/ 7.61445731657167461023643512119107867874845396727324e-01L,1.47965126934808321509456759477582856707733884056372e-20L ,
169
+ }
170
+ ,{
171
+ /*a[30] */ 9.77726555752981243330808011822410329661495519093198e-01L ,
172
+ /*b[30] : */ 1.00286227737052556691944860123300031773396767675877e+00L ,
173
+ /*atan_b[30]*/ 7.86827255878901883601704569937140831825672648847103e-01L,-2.49482501517232918872374648277419736886605467025447e-20L ,
174
+ }
175
+ ,{
176
+ /*a[31] */ 1.02864609206350805084140161862944784564808293337947e+00L ,
177
+ /*b[31] : */ 1.05511202646791504811910750172287976056395564228296e+00L ,
178
+ /*atan_b[31]*/ 8.12208780101303686881249188633802305048448033630848e-01L,1.96461905827059736765985245197019056188424880993332e-20L ,
179
+ }
180
+ ,{
181
+ /*a[32] */ 1.08229638730567915046224506841117525832899403036327e+00L ,
182
+ /*b[32] : */ 1.11023795151925827769112675724727523629553616046906e+00L ,
183
+ /*atan_b[32]*/ 8.37590304325570845578666223651964628515997901558876e-01L,4.77668553328124723447016157387373681394230124469672e-21L ,
184
+ }
185
+ ,{
186
+ /*a[33] */ 1.13897819300824750110026713455197322166401899613175e+00L ,
187
+ /*b[33] : */ 1.16856151675095125820440233876951197089510969817638e+00L ,
188
+ /*atan_b[33]*/ 8.62971828552896528467374553938995518365118186920881e-01L,2.55195648839450962773383050246911687940245767371150e-20L ,
189
+ }
190
+ ,{
191
+ /*a[34] */ 1.19903553596581003210823783418146470970525164116258e+00L ,
192
+ /*b[34] : */ 1.23045136228081621770132775273154379647166933864355e+00L ,
193
+ /*atan_b[34]*/ 8.88353352784466024664664085541687654767883941531181e-01L,1.41663860918952637119424194776437812752208835503398e-20L ,
194
+ }
195
+ ,{
196
+ /*a[35] */ 1.26286394722716557298308552637571192753133513841112e+00L ,
197
+ /*b[35] : */ 1.29633244442242035832178054244323561761120799928904e+00L ,
198
+ /*atan_b[35]*/ 9.13734877021453689705226403061644191438972484320402e-01L,1.35938158484232369531731558502252718011660684187715e-20L ,
199
+ }
200
+ ,{
201
+ /*a[36] */ 1.33092063388866300837157174273995154222416258004689e+00L ,
202
+ /*b[36] : */ 1.36669737760087601715925514911376126292452681809664e+00L ,
203
+ /*atan_b[36]*/ 9.39116401265019920129202557479430879538995213806629e-01L,2.59014288448756031532855884942098995887757875539126e-20L ,
204
+ }
205
+ ,{
206
+ /*a[37] */ 1.40373715148086175686920053249645601637145483857833e+00L ,
207
+ /*b[37] : */ 1.44212062317890074136100819757189128722529858350754e+00L ,
208
+ /*atan_b[37]*/ 9.64497925516308163957322763248924957224517129361629e-01L,2.26449827804982598409987486349767644635807688391558e-20L ,
209
+ }
210
+ ,{
211
+ /*a[38] */ 1.48193532552453364304137000542447266699467290887996e+00L ,
212
+ /*b[38] : */ 1.52327639603630905871124029404839461676601786166430e+00L ,
213
+ /*atan_b[38]*/ 9.89879449776441974696763320684667064597306307405233e-01L,-2.05144805536593178229841247027644547853640074453000e-20L ,
214
+ }
215
+ ,{
216
+ /*a[39] */ 1.56624743831976753224512371327739997328623336583318e+00L ,
217
+ /*b[39] : */ 1.61096147803441905560321856238914506320725195109844e+00L ,
218
+ /*atan_b[39]*/ 1.01526097404652211662976629691357288720610085874796e+00L,1.55023677688950991064710439859627109422709756104447e-21L ,
219
+ }
220
+ ,{
221
+ /*a[40] */ 1.65754207708184680379297330985407381999685675116978e+00L ,
222
+ /*b[40] : */ 1.70612458293084534295767223932571710065531078726053e+00L ,
223
+ /*atan_b[40]*/ 1.04064249832762372913706749866236123125418089330196e+00L,-2.04790285052346263108315613096497455796579459366338e-20L ,
224
+ }
225
+ ,{
226
+ /*a[41] */ 1.75685758736121220779123774339350281513663381064643e+00L ,
227
+ /*b[41] : */ 1.80990457885083358467812747472081014166178647428751e+00L ,
228
+ /*atan_b[41]*/ 1.06602402262079355645292555454517469115671701729298e+00L,1.35761391457454697238630079551792662430377488900508e-20L ,
229
+ }
230
+ ,{
231
+ /*a[42] */ 1.86544587781964999316146180453643112839113228663557e+00L ,
232
+ /*b[42] : */ 1.92368085119253588136274679687431898855720646679401e+00L ,
233
+ /*atan_b[42]*/ 1.09140554692704725130852905223832749470602720975876e+00L,-4.99912973600412204300099687136900356413053111793263e-20L ,
234
+ }
235
+ ,{
236
+ /*a[43] */ 1.98483051718814108510073200565874404907343358553592e+00L ,
237
+ /*b[43] : */ 2.04914055707593576686337266679061031027231365442276e+00L ,
238
+ /*atan_b[43]*/ 1.11678707124736675761374204984832658738014288246632e+00L,3.10946302324418261534220010195063618443711756432142e-20L ,
239
+ }
240
+ ,{
241
+ /*a[44] */ 2.11688487740991047405177746304945089925532521933200e+00L ,
242
+ /*b[44] : */ 2.18836977316091156413845053574362964354804717004299e+00L ,
243
+ /*atan_b[44]*/ 1.14216859558269778155553675347277930995915085077286e+00L,1.40640078849491175132740694767582500364133325443408e-20L ,
244
+ }
245
+ ,{
246
+ /*a[45] */ 2.26393888595348033211664828855751235332413889868857e+00L ,
247
+ /*b[45] : */ 2.34397906437763570955574998766479666301165707409382e+00L ,
248
+ /*atan_b[45]*/ 1.16755011993394735431150976978642574977129697799683e+00L,-3.65632431589086661411806107644207364740664894984231e-20L ,
249
+ }
250
+ ,{
251
+ /*a[46] */ 2.42892740222016721343601364411619003865374618991270e+00L ,
252
+ /*b[46] : */ 2.51927965826279850135825666423983193453750573098660e+00L ,
253
+ /*atan_b[46]*/ 1.19293164430198149548578018253053301123145502060652e+00L,4.73277414284342449192776814622229467942243084497994e-20L ,
254
+ }
255
+ ,{
256
+ /*a[47] */ 2.61560046981161355013387674598293220046878570571436e+00L ,
257
+ /*b[47] : */ 2.71853573297491153746945069524798554994049482047558e+00L ,
258
+ /*atan_b[47]*/ 1.21831316868762298247143988083607268890773411840200e+00L,-3.32698220688116567699867573421587503115973351391857e-20L ,
259
+ }
260
+ ,{
261
+ /*a[48] */ 2.82882779840766997424337148646633655837718719950330e+00L ,
262
+ /*b[48] : */ 2.94733416149008806183065556361100334470393136143684e+00L ,
263
+ /*atan_b[48]*/ 1.24369469309164922975110417757704794894380029290915e+00L,-1.68084377873484618069695715707321800300036208288904e-20L ,
264
+ }
265
+ ,{
266
+ /*a[49] */ 3.07505072362971709895160078641983571814943843203348e+00L ,
267
+ /*b[49] : */ 3.21314087722892193746578037849559450478409416973591e+00L ,
268
+ /*atan_b[49]*/ 1.26907621751479028680918009763800569089653436094522e+00L,4.38792946241904218827598608948466154796821458517843e-20L ,
269
+ }
270
+ ,{
271
+ /*a[50] */ 3.36297230191158847569456390937866319039822318494439e+00L ,
272
+ /*b[50] : */ 3.52616384863255472514528832128632984677096828818321e+00L ,
273
+ /*atan_b[50]*/ 1.29445774195772695714951733281239398820616770535707e+00L,-3.76594892854190752512165708240508698224814967846662e-20L ,
274
+ }
275
+ ,{
276
+ /*a[51] */ 3.70464601821196277634078130355925061867935789919545e+00L ,
277
+ /*b[51] : */ 3.90073973345466671345041498319972106401110067963600e+00L ,
278
+ /*atan_b[51]*/ 1.31983926642108904373103250851073653393541462719440e+00L,-1.42201047639732182814773447172854731688387282967153e-20L ,
279
+ }
280
+ ,{
281
+ /*a[52] */ 4.11726034471856742723635875546283846965135299824434e+00L ,
282
+ /*b[52] : */ 4.35765668014057021934989921696512737980810925364494e+00L ,
283
+ /*atan_b[52]*/ 1.34522079090545372721809957994310025242157280445099e+00L,-3.03025789161007606745201605098058359973216476112863e-20L ,
284
+ }
285
+ ,{
286
+ /*a[53] */ 4.62619989820138064559978332787477354097622698462263e+00L ,
287
+ /*b[53] : */ 4.92824409985377215716664811573366478114621713757515e+00L ,
288
+ /*atan_b[53]*/ 1.37060231541134407834674896475846139765053521841764e+00L,-7.07054719690683194328303436662645365432934240975534e-21L ,
289
+ }
290
+ ,{
291
+ /*a[54] */ 5.27059285056349863215309743877271992636756004729045e+00L ,
292
+ /*b[54] : */ 5.66202526987798314059285864630055584711953997612000e+00L ,
293
+ /*atan_b[54]*/ 1.39598383993922771069504801255689585559593979269266e+00L,-9.10562671648253215988230309564473943324088366141305e-21L ,
294
+ }
295
+ ,{
296
+ /*a[55] */ 6.11406930017863912016759088682326676363852737284111e+00L ,
297
+ /*b[55] : */ 6.64216890962962991200313478401540123741142451763153e+00L ,
298
+ /*atan_b[55]*/ 1.42136536448951557570080650449995118833612650632858e+00L,7.52628100149995238564921704233583060300504688449482e-21L ,
299
+ }
300
+ ,{
301
+ /*a[56] */ 7.26750136287798744557578279291351829750470434026984e+00L ,
302
+ /*b[56] : */ 8.01990986231012476740526162544142607657704502344131e+00L ,
303
+ /*atan_b[56]*/ 1.44674688906256090415499565571266771257796790450811e+00L,-4.76166414128333839459064144083355125451074263289874e-20L ,
304
+ }
305
+ ,{
306
+ /*a[57] */ 8.94284159107797415028212824375737065074638836862153e+00L ,
307
+ /*b[57] : */ 1.01020964280654031866926723104427310317987576127052e+01L ,
308
+ /*atan_b[57]*/ 1.47212841365865829579718387920550526359875220805407e+00L,-2.94511141270828048641690533512857277905398719218800e-20L ,
309
+ }
310
+ ,{
311
+ /*a[58] */ 1.16023240149353616510359287691089007792909044742814e+01L ,
312
+ /*b[58] : */ 1.36206610885393049918332120107322680269135162234306e+01L ,
313
+ /*atan_b[58]*/ 1.49750993827804296080769691501544116363220382481813e+00L,-4.91079244887503652449167717983894414693145750621499e-20L ,
314
+ }
315
+ ,{
316
+ /*a[59] */ 1.64826377753716879452100734158101774215127233018738e+01L ,
317
+ /*b[59] : */ 2.08587363260064998487369747337538683495949953794479e+01L ,
318
+ /*atan_b[59]*/ 1.52289146292089011330492254181478983809938654303551e+00L,5.06637296145401718980478181281990081396813033880353e-20L ,
319
+ }
320
+ ,{
321
+ /*a[60] */ 2.83859754493342037894536299710691579018801830357118e+01L ,
322
+ /*b[60] : */ 4.43908820444563916793323521403635822935029864311218e+01L ,
323
+ /*atan_b[60]*/ 1.54827298758731452064246747468700959871057420969009e+00L,-6.87408573264970738043205172896303636687514563517111e-21L ,
324
+ }
325
+ ,{
326
+ /*a[61] */ 1.01699461607317799313064417304063275580797148199765e+02L ,
327
+ /*b[61] : */ 8.27932424540746422086945344176456273999065160751343e+01L ,
328
+ /*atan_b[61]*/ 1.55871863366040360279231313800352154430584050714970e+00L,4.59787536942001704904414526825329883423547987397342e-20L ,
329
+ }
330
+ ,
331
+ };
332
+ /*File generated by atan_exp.mpl*/
333
+ static const long double coef_poly[9][2] = {
334
+ { -3.33333333333333333342368351437379203616728773340583e-01L, 9.03501810404587028364033466367082415937499719525463e-21L},
335
+ { 2.00000000000000000002710505431213761085018632002175e-01L, -2.71050543121376108505536620063805076318847614178820e-21L},
336
+ { -1.42857142857142857140921067549133027796415262855589e-01L, -1.93607530800982934641564128836546985281459293443700e-21L},
337
+ { 1.11111111111111111109605274760436799397211871109903e-01L, 1.50583635067431171387883211317314321885579450456211e-21L},
338
+ { -9.09090909090909090933731867556488737136533018201590e-02L, 0},
339
+ { 7.69230769230769230779655790120052927250071661546826e-02L, 0},
340
+ { -6.66666666666666666698289230030827212658550706692040e-02L, 0},
341
+ { 5.88235294117647058825522430464127765503690170589834e-02L, 0},
342
+ { -5.26315789473684210515616425929419364138084347359836e-02L, 0},
343
+ };