|
|
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-2026 J. Marcel van der Veer [algol68g@algol68genie.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[A68G_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[A68G_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
© 2001-2026 J.M. van der Veer
jmvdveer@algol68genie.nl