a68g-math.h
1 //! @file a68g-math.h
2 //! @author J. Marcel van der Veer
3
4 //! @section Copyright
5 //!
6 //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
7 //! Copyright 2001-2024 J. Marcel van der Veer [algol68g@xs4all.nl].
8
9 //! @section License
10 //!
11 //! This program is free software; you can redistribute it and/or modify it
12 //! under the terms of the GNU General Public License as published by the
13 //! Free Software Foundation; either version 3 of the License, or
14 //! (at your option) any later version.
15 //!
16 //! This program is distributed in the hope that it will be useful, but
17 //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 //! more details. You should have received a copy of the GNU General Public
20 //! License along with this program. If not, see [http://www.gnu.org/licenses/].
21
22 //! @section Synopsis
23 //!
24 //! Internal math tables.
25
26 static const REAL_T factable[A68_MAX_FAC + 1] = {
27 1.000000000000000000000e0, // 0
28 1.000000000000000000000e0, // 1
29 2.000000000000000000000e0, // 2
30 6.000000000000000000000e0, // 3
31 2.400000000000000000000e1, // 4
32 1.200000000000000000000e2, // 5
33 7.200000000000000000000e2, // 6
34 5.040000000000000000000e3, // 7
35 4.032000000000000000000e4, // 8
36 3.628800000000000000000e5, // 9
37 3.628800000000000000000e6, // 10
38 3.991680000000000000000e7, // 11
39 4.790016000000000000000e8, // 12
40 6.227020800000000000000e9, // 13
41 8.717829120000000000000e10, // 14
42 1.307674368000000000000e12, // 15
43 2.092278988800000000000e13, // 16
44 3.556874280960000000000e14, // 17
45 6.402373705728000000000e15, // 18
46 1.216451004088320000000e17, // 19
47 2.432902008176640000000e18, // 20
48 5.109094217170944000000e19, // 21
49 1.124000727777607680000e21, // 22
50 2.585201673888497664000e22, // 23
51 6.204484017332394393600e23, // 24
52 1.551121004333098598400e25, // 25
53 4.032914611266056355840e26, // 26
54 1.088886945041835216077e28, // 27
55 3.048883446117138605015e29, // 28
56 8.841761993739701954544e30, // 29
57 2.652528598121910586363e32, // 30
58 8.222838654177922817726e33, // 31
59 2.631308369336935301672e35, // 32
60 8.683317618811886495518e36, // 33
61 2.952327990396041408476e38, // 34
62 1.033314796638614492967e40, // 35
63 3.719933267899012174680e41, // 36
64 1.376375309122634504632e43, // 37
65 5.230226174666011117600e44, // 38
66 2.039788208119744335864e46, // 39
67 8.159152832478977343456e47, // 40
68 3.345252661316380710817e49, // 41
69 1.405006117752879898543e51, // 42
70 6.041526306337383563736e52, // 43
71 2.658271574788448768044e54, // 44
72 1.196222208654801945620e56, // 45
73 5.502622159812088949850e57, // 46
74 2.586232415111681806430e59, // 47
75 1.241391559253607267086e61, // 48
76 6.082818640342675608723e62, // 49
77 3.041409320171337804361e64, // 50
78 1.551118753287382280224e66, // 51
79 8.065817517094387857166e67, // 52
80 4.274883284060025564298e69, // 53
81 2.308436973392413804721e71, // 54
82 1.269640335365827592597e73, // 55
83 7.109985878048634518540e74, // 56
84 4.052691950487721675568e76, // 57
85 2.350561331282878571829e78, // 58
86 1.386831185456898357379e80, // 59
87 8.320987112741390144276e81, // 60
88 5.075802138772247988009e83, // 61
89 3.146997326038793752565e85, // 62
90 1.982608315404440064116e87, // 63
91 1.268869321858841641034e89, // 64
92 8.247650592082470666723e90, // 65
93 5.443449390774430640037e92, // 66
94 3.647111091818868528825e94, // 67
95 2.480035542436830599601e96, // 68
96 1.711224524281413113725e98, // 69
97 1.197857166996989179607e100, // 70
98 8.504785885678623175212e101, // 71
99 6.123445837688608686152e103, // 72
100 4.470115461512684340891e105, // 73
101 3.307885441519386412260e107, // 74
102 2.480914081139539809195e109, // 75
103 1.885494701666050254988e111, // 76
104 1.451830920282858696341e113, // 77
105 1.132428117820629783146e115, // 78
106 8.946182130782975286851e116, // 79
107 7.156945704626380229481e118, // 80
108 5.797126020747367985880e120, // 81
109 4.753643337012841748421e122, // 82
110 3.945523969720658651190e124, // 83
111 3.314240134565353266999e126, // 84
112 2.817104114380550276949e128, // 85
113 2.422709538367273238177e130, // 86
114 2.107757298379527717214e132, // 87
115 1.854826422573984391148e134, // 88
116 1.650795516090846108122e136, // 89
117 1.485715964481761497310e138, // 90
118 1.352001527678402962552e140, // 91
119 1.243841405464130725548e142, // 92
120 1.156772507081641574759e144, // 93
121 1.087366156656743080274e146, // 94
122 1.032997848823905926260e148, // 95
123 9.916779348709496892096e149, // 96
124 9.619275968248211985333e151, // 97
125 9.426890448883247745626e153, // 98
126 9.332621544394415268170e155, // 99
127 9.332621544394415268170e157, // 100
128 9.425947759838359420852e159, // 101
129 9.614466715035126609269e161, // 102
130 9.902900716486180407547e163, // 103
131 1.029901674514562762385e166, // 104
132 1.081396758240290900504e168, // 105
133 1.146280563734708354534e170, // 106
134 1.226520203196137939352e172, // 107
135 1.324641819451828974500e174, // 108
136 1.443859583202493582205e176, // 109
137 1.588245541522742940425e178, // 110
138 1.762952551090244663872e180, // 111
139 1.974506857221074023537e182, // 112
140 2.231192748659813646597e184, // 113
141 2.543559733472187557120e186, // 114
142 2.925093693493015690688e188, // 115
143 3.393108684451898201198e190, // 116
144 3.969937160808720895402e192, // 117
145 4.684525849754290656574e194, // 118
146 5.574585761207605881323e196, // 119
147 6.689502913449127057588e198, // 120
148 8.094298525273443739682e200, // 121
149 9.875044200833601362412e202, // 122
150 1.214630436702532967577e205, // 123
151 1.506141741511140879795e207, // 124
152 1.882677176888926099744e209, // 125
153 2.372173242880046885677e211, // 126
154 3.012660018457659544810e213, // 127
155 3.856204823625804217357e215, // 128
156 4.974504222477287440390e217, // 129
157 6.466855489220473672507e219, // 130
158 8.471580690878820510985e221, // 131
159 1.118248651196004307450e224, // 132
160 1.487270706090685728908e226, // 133
161 1.992942746161518876737e228, // 134
162 2.690472707318050483595e230, // 135
163 3.659042881952548657690e232, // 136
164 5.012888748274991661035e234, // 137
165 6.917786472619488492228e236, // 138
166 9.615723196941089004197e238, // 139
167 1.346201247571752460588e241, // 140
168 1.898143759076170969429e243, // 141
169 2.695364137888162776589e245, // 142
170 3.854370717180072770522e247, // 143
171 5.550293832739304789551e249, // 144
172 8.047926057471991944849e251, // 145
173 1.174997204390910823948e254, // 146
174 1.727245890454638911203e256, // 147
175 2.556323917872865588581e258, // 148
176 3.808922637630569726986e260, // 149
177 5.713383956445854590479e262, // 150
178 8.627209774233240431623e264, // 151
179 1.311335885683452545607e267, // 152
180 2.006343905095682394778e269, // 153
181 3.089769613847350887959e271, // 154
182 4.789142901463393876336e273, // 155
183 7.471062926282894447084e275, // 156
184 1.172956879426414428192e278, // 157
185 1.853271869493734796544e280, // 158
186 2.946702272495038326504e282, // 159
187 4.714723635992061322407e284, // 160
188 7.590705053947218729075e286, // 161
189 1.229694218739449434110e289, // 162
190 2.004401576545302577600e291, // 163
191 3.287218585534296227263e293, // 164
192 5.423910666131588774984e295, // 165
193 9.003691705778437366474e297, // 166
194 1.503616514864999040201e300, // 167
195 2.526075744973198387538e302, // 168
196 4.269068009004705274939e304, // 169
197 7.257415615307998967397e306 // 170
198 };
199
200 static const REAL_T ln_factable[A68_MAX_FAC + 1] = {
201 0.000000000000000000000e0, // 0
202 0.000000000000000000000e0, // 1
203 6.931471805599453094172e-1, // 2
204 1.791759469228055000812e0, // 3
205 3.178053830347945619647e0, // 4
206 4.787491742782045994248e0, // 5
207 6.579251212010100995060e0, // 6
208 8.525161361065414300166e0, // 7
209 1.060460290274525022842e1, // 8
210 1.280182748008146961121e1, // 9
211 1.510441257307551529523e1, // 10
212 1.750230784587388583929e1, // 11
213 1.998721449566188614952e1, // 12
214 2.255216385312342288557e1, // 13
215 2.519122118273868150009e1, // 14
216 2.789927138384089156609e1, // 15
217 3.067186010608067280376e1, // 16
218 3.350507345013688888401e1, // 17
219 3.639544520803305357622e1, // 18
220 3.933988418719949403622e1, // 19
221 4.233561646075348502966e1, // 20
222 4.538013889847690802616e1, // 21
223 4.847118135183522387964e1, // 22
224 5.160667556776437357045e1, // 23
225 5.478472939811231919009e1, // 24
226 5.800360522298051993929e1, // 25
227 6.126170176100200198477e1, // 26
228 6.455753862700633105895e1, // 27
229 6.788974313718153498289e1, // 28
230 7.125703896716800901007e1, // 29
231 7.465823634883016438549e1, // 30
232 7.809222355331531063142e1, // 31
233 8.155795945611503717850e1, // 32
234 8.505446701758151741396e1, // 33
235 8.858082754219767880363e1, // 34
236 9.213617560368709248333e1, // 35
237 9.571969454214320248496e1, // 36
238 9.933061245478742692933e1, // 37
239 1.029681986145138126988e2, // 38
240 1.066317602606434591262e2, // 39
241 1.103206397147573954291e2, // 40
242 1.140342117814617032329e2, // 41
243 1.177718813997450715388e2, // 42
244 1.215330815154386339623e2, // 43
245 1.253172711493568951252e2, // 44
246 1.291239336391272148826e2, // 45
247 1.329525750356163098828e2, // 46
248 1.368027226373263684696e2, // 47
249 1.406739236482342593987e2, // 48
250 1.445657439463448860089e2, // 49
251 1.484777669517730320675e2, // 50
252 1.524095925844973578392e2, // 51
253 1.563608363030787851941e2, // 52
254 1.603311282166309070282e2, // 53
255 1.643201122631951814118e2, // 54
256 1.683274454484276523305e2, // 55
257 1.723527971391628015638e2, // 56
258 1.763958484069973517152e2, // 57
259 1.804562914175437710518e2, // 58
260 1.845338288614494905025e2, // 59
261 1.886281734236715911873e2, // 60
262 1.927390472878449024360e2, // 61
263 1.968661816728899939914e2, // 62
264 2.010093163992815266793e2, // 63
265 2.051681994826411985358e2, // 64
266 2.093425867525368356464e2, // 65
267 2.135322414945632611913e2, // 66
268 2.177369341139542272510e2, // 67
269 2.219564418191303339501e2, // 68
270 2.261905483237275933323e2, // 69
271 2.304390435657769523214e2, // 70
272 2.347017234428182677427e2, // 71
273 2.389783895618343230538e2, // 72
274 2.432688490029827141829e2, // 73
275 2.475729140961868839366e2, // 74
276 2.518904022097231943772e2, // 75
277 2.562211355500095254561e2, // 76
278 2.605649409718632093053e2, // 77
279 2.649216497985528010421e2, // 78
280 2.692910976510198225363e2, // 79
281 2.736731242856937041486e2, // 80
282 2.780675734403661429141e2, // 81
283 2.824742926876303960274e2, // 82
284 2.868931332954269939509e2, // 83
285 2.913239500942703075662e2, // 84
286 2.957666013507606240211e2, // 85
287 3.002209486470141317540e2, // 86
288 3.046868567656687154726e2, // 87
289 3.091641935801469219449e2, // 88
290 3.136528299498790617832e2, // 89
291 3.181526396202093268500e2, // 90
292 3.226634991267261768912e2, // 91
293 3.271852877037752172008e2, // 92
294 3.317178871969284731381e2, // 93
295 3.362611819791984770344e2, // 94
296 3.408150588707990178690e2, // 95
297 3.453794070622668541074e2, // 96
298 3.499541180407702369296e2, // 97
299 3.545390855194408088492e2, // 98
300 3.591342053695753987760e2, // 99
301 3.637393755555634901441e2, // 100
302 3.683544960724047495950e2, // 101
303 3.729794688856890206760e2, // 102
304 3.776141978739186564468e2, // 103
305 3.822585887730600291111e2, // 104
306 3.869125491232175524822e2, // 105
307 3.915759882173296196258e2, // 106
308 3.962488170517915257991e2, // 107
309 4.009309482789157454921e2, // 108
310 4.056222961611448891925e2, // 109
311 4.103227765269373054205e2, // 110
312 4.150323067282496395563e2, // 111
313 4.197508055995447340991e2, // 112
314 4.244781934182570746677e2, // 113
315 4.292143918666515701285e2, // 114
316 4.339593239950148201939e2, // 115
317 4.387129141861211848399e2, // 116
318 4.434750881209189409588e2, // 117
319 4.482457727453846057188e2, // 118
320 4.530248962384961351041e2, // 119
321 4.578123879812781810984e2, // 120
322 4.626081785268749221865e2, // 121
323 4.674121995716081787447e2, // 122
324 4.722243839269805962399e2, // 123
325 4.770446654925856331047e2, // 124
326 4.818729792298879342285e2, // 125
327 4.867092611368394122258e2, // 126
328 4.915534482232980034989e2, // 127
329 4.964054784872176206648e2, // 128
330 5.012652908915792927797e2, // 129
331 5.061328253420348751997e2, // 130
332 5.110080226652360267439e2, // 131
333 5.158908245878223975982e2, // 132
334 5.207811737160441513633e2, // 133
335 5.256790135159950627324e2, // 134
336 5.305842882944334921812e2, // 135
337 5.354969431801695441897e2, // 136
338 5.404169241059976691050e2, // 137
339 5.453441777911548737966e2, // 138
340 5.502786517242855655538e2, // 139
341 5.552202941468948698523e2, // 140
342 5.601690540372730381305e2, // 141
343 5.651248810948742988613e2, // 142
344 5.700877257251342061414e2, // 143
345 5.750575390247102067619e2, // 144
346 5.800342727671307811636e2, // 145
347 5.850178793888391176022e2, // 146
348 5.900083119756178539038e2, // 147
349 5.950055242493819689670e2, // 148
350 6.000094705553274281080e2, // 149
351 6.050201058494236838580e2, // 150
352 6.100373856862386081868e2, // 151
353 6.150612662070848845750e2, // 152
354 6.200917041284773200381e2, // 153
355 6.251286567308909491967e2, // 154
356 6.301720818478101958172e2, // 155
357 6.352219378550597328635e2, // 156
358 6.402781836604080409209e2, // 157
359 6.453407786934350077245e2, // 158
360 6.504096828956552392500e2, // 159
361 6.554848567108890661717e2, // 160
362 6.605662610758735291676e2, // 161
363 6.656538574111059132426e2, // 162
364 6.707476076119126755767e2, // 163
365 6.758474740397368739994e2, // 164
366 6.809534195136374546094e2, // 165
367 6.860654073019939978423e2, // 166
368 6.911834011144107529496e2, // 167
369 6.963073650938140118743e2, // 168
370 7.014372638087370853465e2, // 169
371 7.065730622457873471107e2 // 170
372 };
373
374 #define N_c_inverfc 34
375
376 static const REAL_T c_inverfc[N_c_inverfc] =
377 {
378 0.91646139826896400000,
379 0.48882664027310800000,
380 0.23172920032340500000,
381 0.12461045461371200000,
382 -0.07288467655856750000,
383 0.26999930867002900000,
384 0.15068904736022300000,
385 0.11606502534161400000,
386 0.49999930343979000000,
387 3.97886080735226000000,
388 0.00112648096188977922,
389 1.05739299623423047e-4,
390 0.00351287146129100025,
391 7.71708358954120939e-4,
392 0.00685649426074558612,
393 0.00339721910367775861,
394 0.01127491693325048700,
395 0.01185981170477711040,
396 0.01429619886978980180,
397 0.03464942077890999220,
398 0.00220995927012179067,
399 0.07434243572417848610,
400 0.10587217794159548800,
401 0.01472979383314851210,
402 0.31684763852013594400,
403 0.71365763586873036400,
404 1.05375024970847138000,
405 1.21448730779995237000,
406 1.16374581931560831000,
407 0.95646497474479900600,
408 0.68626594827409781600,
409 0.43439749233143011500,
410 0.24404451059319093500,
411 0.12078223763524522200
412 };
413
414 #define N_ln1p 21
415
416 static const REAL_T c_ln1p[N_ln1p + 1] =
417 {
418 N_ln1p,
419 1.8657327910677296608121390705e-18,
420 -1.3492637457521938883731579510e-17,
421 9.7089758328248469219003866867e-17,
422 -7.0722150011433276578323272272e-16,
423 5.1107345870861673561462339876e-15,
424 -3.7581977830387938294437434651e-14,
425 2.7291231220549214896095654769e-13,
426 -2.0328515972462118942821556033e-12,
427 1.4844576692270934446023686322e-11,
428 -1.1260499376492049411710290413e-10,
429 8.2751976628812389601561347296e-10,
430 -6.4501969776090319441714445454e-09,
431 4.7743678729400456026672697926e-08,
432 -3.8873813517057343800270917900e-07,
433 2.9004512660400621301999384544e-06,
434 -0.00002553258886105542567601400,
435 0.00019211375164056698287947962,
436 -0.00200215904941415466274422081,
437 0.01517767255690553732382488171,
438 -0.28565398551049742084877469679,
439 2.16647910664395270521272590407
440 };
441
© 2002-2024 J.M. van der Veer (jmvdveer@xs4all.nl)
|