1/* 2 * test8900 - 8900 series of the regress.cal test suite 3 * 4 * Copyright (C) 2013,2021 Christoph Zurnieden 5 * 6 * Calc is open software; you can redistribute it and/or modify it under 7 * the terms of the version 2.1 of the GNU Lesser General Public License 8 * as published by the Free Software Foundation. 9 * 10 * Calc is distributed in the hope that it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General 13 * Public License for more details. 14 * 15 * A copy of version 2.1 of the GNU Lesser General Public License is 16 * distributed with calc under the filename COPYING-LGPL. You should have 17 * received a copy with calc; if not, write to Free Software Foundation, Inc. 18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19 * 20 * Under source code control: 2013/08/11 01:31:28 21 * File existed as early as: 2013 22 */ 23 24 25static __CZ__eps = 1e-20; 26 27 28/* 29 * load once, the calc resource functions contributed by Christoph Zurnieden 30 */ 31read -once bernpoly.cal; 32read -once brentsolve.cal; 33read -once constants.cal; 34read -once factorial.cal; 35read -once factorial2.cal; 36read -once lambertw.cal; 37read -once lnseries.cal; 38read -once specialfunctions.cal; 39read -once statistics.cal; 40read -once toomcook.cal; 41read -once zeta2.cal; 42read -once intnum.cal; 43 44 45/* 46 * tests of correctness of the functions implemented by the above listed 47 * author. All values tested against have been computed with at least two 48 * independent algorithms where possible (indicated if not). 49 */ 50define t01() 51{ 52 local eps; 53 eps = epsilon(1e-20); 54 if (gamma(5) != 24) { 55 epsilon(eps); 56 return 1; 57 } 58 if (!iserror(gamma(-5))) { 59 epsilon(eps); 60 return 2; 61 } 62 if (abs(gamma(-5.5) - 0.01091265478190986298673234429) > __CZ__eps) { 63 epsilon(eps); 64 return 3; 65 } 66 if (abs 67 (gamma(5.5 + 5.5i) - 68 (-3.760669488993539011972109411 - 1.068828791178021218008599278i)) > 69 __CZ__eps) { 70 epsilon(eps); 71 return 4; 72 } 73 if (abs 74 (gamma(-5.5 + 5.5i) - 75 (-0.0000000031513765339396 - 0.00000000565396294185819i)) > 76 __CZ__eps) { 77 epsilon(eps); 78 return 5; 79 } 80 if (abs 81 (gamma(-5.5 - 5.5i) - 82 (-0.0000000031513765339396 + 0.00000000565396294185819i)) > 83 __CZ__eps) { 84 epsilon(eps); 85 return 5; 86 } 87 epsilon(eps); 88 return 0; 89} 90 91/* 92 test 02 tests lngamma(z) as ln(gamma(z))for a lot of values. Twice. 93 */ 94define t02(type) 95{ 96 local eps k; 97 eps = epsilon(1e-20); 98 99 if (!isnull(type)) { 100 /* test lngamma to higher precision */ 101 epsilon(1e-50) 102 } 103 104 if (!iserror(lngamma(-5))) { 105 epsilon(eps); 106 return 1; 107 } 108 109 if (abs 110 (lngamma(-4.400) - 111 (-2.602796356578054085860353775504851660134124890968895 + 112 9.424777960769379715387930149838508652591508198125317i)) > 113 __CZ__eps) { 114 epsilon(eps); 115 return 2; 116 } 117 if (abs 118 (lngamma(-3.400) - 119 (-1.121191815653838606981937409307733431762519256939740 + 120 12.566370614359172953850573533118011536788677597500423i)) > 121 __CZ__eps) { 122 epsilon(eps); 123 return 3; 124 } 125 if (abs 126 (lngamma(-2.400) - 127 (0.1025836159682770986668378753392054643000824013774864 + 128 3.1415926535897932384626433832795028841971693993751058i)) > 129 __CZ__eps) { 130 epsilon(eps); 131 return 4; 132 } 133 if (abs 134 (lngamma(-1.400) - 135 (0.9780523533221770342957880219518966655729718736522287 + 136 6.2831853071795864769252867665590057683943387987502116i)) > 137 __CZ__eps) { 138 epsilon(eps); 139 return 5; 140 } 141 if (abs 142 (lngamma(-0.4000) - 143 (1.3145245899433899648003814321688887556844552489655721 - 144 3.1415926535897932384626433832795028841971693993751058i)) > 145 __CZ__eps) { 146 epsilon(eps); 147 return 6; 148 } 149 if (abs 150 (lngamma(0.6000) - 151 (0.3982338580692348996168542204008776842343540290573096)) > 152 __CZ__eps) { 153 epsilon(eps); 154 return 7; 155 } 156 if (abs 157 (lngamma(1.600) - 158 (-0.112591765696755783588659875902784250643756767388458)) > 159 __CZ__eps) { 160 epsilon(eps); 161 return 8; 162 } 163 if (abs 164 (lngamma(2.600) - 165 (0.3574118635489797700622771552455578140571422814237894)) > 166 __CZ__eps) { 167 epsilon(eps); 168 return 9; 169 } 170 if (abs 171 (lngamma(3.600) - 172 (1.3129233085764161315150052635846887793368088719154788)) > 173 __CZ__eps) { 174 epsilon(eps); 175 return 10; 176 } 177 if (abs 178 (lngamma(4.600) - 179 (2.5938571540384804491219685256617291171816887676527152)) > 180 __CZ__eps) { 181 epsilon(eps); 182 return 11; 183 } 184 if (abs 185 (lngamma(5.600) - 186 (4.1199134575335297653279620242457375960984677282246333)) > 187 __CZ__eps) { 188 epsilon(eps); 189 return 12; 190 } 191 if (abs 192 (lngamma(55.60) - 193 (166.72233170723938827069082693550384745200937091660266)) > 194 __CZ__eps) { 195 epsilon(eps); 196 return 13; 197 } 198 if (abs 199 (lngamma(56.60) - 200 (170.74051490849592496269608464261138016300186635704956)) > 201 __CZ__eps) { 202 epsilon(eps); 203 return 14; 204 } 205 if (abs 206 (lngamma(57.60) - 207 (174.77652389370506221274131245618033272827669850568250)) > 208 __CZ__eps) { 209 epsilon(eps); 210 return 15; 211 } 212 if (abs 213 (lngamma(58.60) - 214 (178.83004646140690776801720420409007933842357893886075)) > 215 __CZ__eps) { 216 epsilon(eps); 217 return 16; 218 } 219 if (abs 220 (lngamma(59.60) - 221 (182.90078115798987469935628513367638988912775224248394)) > 222 __CZ__eps) { 223 epsilon(eps); 224 return 17; 225 } 226 if (abs 227 (lngamma(60.60) - 228 (186.98843673206117877516518619701249930553373579376865)) > 229 __CZ__eps) { 230 epsilon(eps); 231 return 18; 232 } 233 if (abs 234 (lngamma(61.60) - 235 (191.09273162513644754284387036762182652754650758452049)) > 236 __CZ__eps) { 237 epsilon(eps); 238 return 19; 239 } 240 if (abs 241 (lngamma(62.60) - 242 (195.21339349567592163624487159872030105363069808249176)) > 243 __CZ__eps) { 244 epsilon(eps); 245 return 20; 246 } 247 if (abs 248 (lngamma(63.60) - 249 (199.35015877378197447832287757475132376767819599656051)) > 250 __CZ__eps) { 251 epsilon(eps); 252 return 21; 253 } 254 if (abs 255 (lngamma(64.60) - 256 (203.50277224412805093867906473893489617123556308738621)) > 257 __CZ__eps) { 258 epsilon(eps); 259 return 22; 260 } 261 if (abs 262 (lngamma(65.60) - 263 (207.67098665491660710433686745546968860453554400700257)) > 264 __CZ__eps) { 265 epsilon(eps); 266 return 23; 267 } 268 if (abs 269 (lngamma(-4.400 + 0.3000i) - 270 (-3.012170168780542935643977654089900903230224118194902 - 271 14.995647773931851220184151830452947610096345479769497i)) > 272 __CZ__eps) { 273 epsilon(eps); 274 return 24; 275 } 276 if (abs 277 (lngamma(-3.400 + 0.3000i) - 278 (-1.528246633748315285937279325345084965509129720585190 - 279 11.922131578600057457117323569444702920656889937242177i)) > 280 __CZ__eps) { 281 epsilon(eps); 282 return 25; 283 } 284 if (abs 285 (lngamma(-2.400 + 0.3000i) - 286 (-0.300593543742460500003778676081911614052942606849246 - 287 8.8685462985380049870334027293206734277553648141421909i)) > 288 __CZ__eps) { 289 epsilon(eps); 290 return 26; 291 } 292 if (abs 293 (lngamma(-1.400 + 0.3000i) - 294 (0.5826272868794220627005984935520030051588811118590927 - 295 5.8513086394949731836021141952050415691313656065368892i)) > 296 __CZ__eps) { 297 epsilon(eps); 298 return 27; 299 } 300 if (abs 301 (lngamma(-0.4000 + 0.3000i) - 302 (0.9415471834545804679163683919994364115087855350642294 - 303 2.9208093191279264919817355540741378979796654077163755i)) > 304 __CZ__eps) { 305 epsilon(eps); 306 return 28; 307 } 308 if (abs 309 (lngamma(0.6000 + 0.3000i) - 310 (0.2484000028946351584991362705412598434332854007039741 - 311 0.4227177743314176403219013995119576518240065994565821i)) > 312 __CZ__eps) { 313 epsilon(eps); 314 return 29; 315 } 316 if (abs 317 (lngamma(1.600 + 0.3000i) - 318 (-0.150853845214250646823230280607484839757524852967790 + 319 0.0409298346693884758923548319492567502045304548295381i)) > 320 __CZ__eps) { 321 epsilon(eps); 322 return 30; 323 } 324 if (abs 325 (lngamma(2.600 + 0.3000i) - 326 (0.3364259747848147735313925008357736575841632119933041 + 327 0.2262777846650832407783807931778013947197968935401072i)) > 328 __CZ__eps) { 329 epsilon(eps); 330 return 31; 331 } 332 if (abs 333 (lngamma(3.600 + 0.3000i) - 334 (1.2985503009218817344713757767544359650274299875210727 + 335 0.3411543900819823748030570769218348455327276444896884i)) > 336 __CZ__eps) { 337 epsilon(eps); 338 return 32; 339 } 340 if (abs 341 (lngamma(4.600 + 0.3000i) - 342 (2.582944367806232942740645241786647084583876190810680103 + 343 0.4242956219704236047137253915726161430638589851177078492i)) > 344 __CZ__eps) { 345 epsilon(eps); 346 return 33; 347 } 348 if (abs 349 (lngamma(5.600 + 0.3000i) - 350 (4.111122815491445860748560095878127604065278239877556104 + 351 0.4894207853048094882972548755277837179650295466696997973i)) > 352 __CZ__eps) { 353 epsilon(eps); 354 return 34; 355 } 356 if (abs 357 (lngamma(0.6000 - 4.700i) - 358 (-6.309230474426685182917699027589840248465208901823736044 - 359 2.738444603265429259406748249023722438146218314171151425i)) > 360 __CZ__eps) { 361 epsilon(eps); 362 return 35; 363 } 364 if (abs 365 (lngamma(0.6000 - 3.700i) - 366 (-4.762470602521331200619631143446813610218360030381255868 - 367 1.307861859626688811743330143389568763790196226980935860i)) > 368 __CZ__eps) { 369 epsilon(eps); 370 return 36; 371 } 372 if (abs 373 (lngamma(0.6000 - 2.700i) - 374 (-3.223449159729432378435059551332376261824297133470481664 - 375 0.1525473639596832094518944287785664759918133343972275457i)) > 376 __CZ__eps) { 377 epsilon(eps); 378 return 37; 379 } 380 if (abs 381 (lngamma(0.6000 - 1.700i) - 382 (-1.699851882736550416690203691424396333903393386464266356 + 383 0.6188153536675997046951505463300498363352953733225308151i)) > 384 __CZ__eps) { 385 epsilon(eps); 386 return 38; 387 } 388 if (abs 389 (lngamma(0.6000 - 0.7000i) - 390 (-0.2316312495202586116986763277644377512618333134657045421 + 391 0.7368909799768367142682353753277667339824288570492360448i)) > 392 __CZ__eps) { 393 epsilon(eps); 394 return 39; 395 } 396 if (abs 397 (lngamma(0.6000 + 0.3000i) - 398 (0.2484000028946351584991362705412598434332854007039741619 - 399 0.4227177743314176403219013995119576518240065994565821579i)) > 400 __CZ__eps) { 401 epsilon(eps); 402 return 40; 403 } 404 if (abs 405 (lngamma(0.6000 + 1.300i) - 406 (-1.099689479936482253001126014071250387866864940802593030 - 407 0.7725489931464399068598744386748572974573591452933440189i)) > 408 __CZ__eps) { 409 epsilon(eps); 410 return 41; 411 } 412 if (abs 413 (lngamma(0.6000 + 2.300i) - 414 (-2.611386294578008388513457987969729601048026532835562114 - 415 0.2111094845860104400425314901146665256344806614559790152i)) > 416 __CZ__eps) { 417 epsilon(eps); 418 return 42; 419 } 420 if (abs 421 (lngamma(0.6000 + 3.300i) - 422 (-4.145670522984067490152016613422534092269675011415945298 + 423 0.8081928951523762121254890981027647840025857144095024771i)) > 424 __CZ__eps) { 425 epsilon(eps); 426 return 43; 427 } 428 if (abs 429 (lngamma(0.6000 + 4.300i) - 430 (-5.689842576036527320491763306963824853139907301029281610 + 431 2.137677242374957442527694027866746053575410791317320138i)) > 432 __CZ__eps) { 433 epsilon(eps); 434 return 44; 435 } 436 if (abs 437 (lngamma(0.6000 + 5.300i) - 438 (-7.239654605052715210182073623536904206104308839659326676 + 439 3.702857758072432142072497796069521049678127217607403327i)) > 440 __CZ__eps) { 441 epsilon(eps); 442 return 45; 443 } 444 if (abs 445 (lngamma(-4.400 - 4.700i) - 446 (-14.73413592903136179653960750100174060012531669119348359 + 447 7.340768981905845672138265648506833394433043135824981559i)) > 448 __CZ__eps) { 449 epsilon(eps); 450 return 46; 451 } 452 if (abs 453 (lngamma(-3.400 - 3.700i) - 454 (-10.55018529022399813119005433743831737900085357229525796 + 455 6.763336971725381912118912702208512629733112628981673298i)) > 456 __CZ__eps) { 457 epsilon(eps); 458 return 47; 459 } 460 if (abs 461 (lngamma(-2.400 - 2.700i) - 462 (-6.624262018571684573249747079902924251345023570085621326 + 463 5.911914743873792313808731773611192661709672638901754910i)) > 464 __CZ__eps) { 465 epsilon(eps); 466 return 48; 467 } 468 if (abs 469 (lngamma(-1.400 - 1.700i) - 470 (-3.046912030520906458689035477846643788289090086345259335 + 471 4.680423062668151424886705499811285399248102868605621987i)) > 472 __CZ__eps) { 473 epsilon(eps); 474 return 49; 475 } 476 if (abs 477 (lngamma(-0.4000 - 0.7000i) - 478 (-0.01623979147403148300780826047582666582616647435129398527 + 479 2.826833421018256285271011446520969788549353956082297248i)) > 480 __CZ__eps) { 481 epsilon(eps); 482 return 50; 483 } 484 if (abs 485 (lngamma(0.6000 + 0.3000i) - 486 (0.2484000028946351584991362705412598434332854007039741619 - 487 0.4227177743314176403219013995119576518240065994565821579i)) > 488 __CZ__eps) { 489 epsilon(eps); 490 return 51; 491 } 492 if (abs 493 (lngamma(1.600 + 1.300i) - 494 (-0.7407695833613238477853561156238169815169605175974563292 + 495 0.3658395580779188724109027663961707196451841638334886679i)) > 496 __CZ__eps) { 497 epsilon(eps); 498 return 52; 499 } 500 if (abs 501 (lngamma(2.600 + 2.300i) - 502 (-0.7153017561016750689453931991025219163388411460412682694 + 503 2.067498782269003991801228117457494590355245722719424742i)) > 504 __CZ__eps) { 505 epsilon(eps); 506 return 53; 507 } 508 if (abs 509 (lngamma(3.600 + 3.300i) - 510 (-0.2006290139452759775010107586460283514303264993274887714 + 511 4.221969149213679168621678150696738907045553787288427746i)) > 512 __CZ__eps) { 513 epsilon(eps); 514 return 54; 515 } 516 if (abs 517 (lngamma(4.600 + 4.300i) - 518 (0.6404767304085869581018213364351326853699331839312207180 + 519 6.685149323469513776483323494807052342570441936959315816i)) > 520 __CZ__eps) { 521 epsilon(eps); 522 return 55; 523 } 524 if (abs 525 (lngamma(5.600 + 5.300i) - 526 (1.727112476786098959996727579157495580048033035060833670 + 527 9.383383918093155327986445451264543368751338171298232916i)) > 528 __CZ__eps) { 529 epsilon(eps); 530 return 56; 531 } 532 if (abs 533 (lngamma(55.60 + 0.3000i) - 534 (166.7215150367733897769155930653789348483780044274716818 + 535 1.202750513929718332820270669742686561426457642272968981i)) > 536 __CZ__eps) { 537 epsilon(eps); 538 return 57; 539 } 540 if (abs 541 (lngamma(56.60 + 0.3000i) - 542 (170.7397127945179968376917410624766834622909691036136375 + 543 1.208146145021640303895693686064781770317635078049891748i)) > 544 __CZ__eps) { 545 epsilon(eps); 546 return 58; 547 } 548 if (abs 549 (lngamma(57.60 + 0.3000i) - 550 (174.7757358264026770962028712327193919190938819848539820 + 551 1.213446448743774292811195505423481449339002192187714949i)) > 552 __CZ__eps) { 553 epsilon(eps); 554 return 59; 555 } 556 if (abs 557 (lngamma(58.60 + 0.3000i) - 558 (178.8292719572886165808686582437464130998008894472168186 + 559 1.218654734982846161251085553080214761347285268088604785i)) > 560 __CZ__eps) { 561 epsilon(eps); 562 return 60; 563 } 564 if (abs 565 (lngamma(59.60 + 0.3000i) - 566 (182.9000197581041057641595126649840680882966589651420637 + 567 1.223774144183534973445316592347337056808910609419286930i)) > 568 __CZ__eps) { 569 epsilon(eps); 570 return 61; 571 } 572 if (abs 573 (lngamma(60.60 + 0.3000i) - 574 (186.9876880003631981031020807195926428903734785341818284 + 575 1.228807658719925269995511830298415601718771597558190350i)) > 576 __CZ__eps) { 577 epsilon(eps); 578 return 62; 579 } 580 if (abs 581 (lngamma(61.60 + 0.3000i) - 582 (191.0919951469889337316641602771633017764510692037723749 + 583 1.233758113328768712483862353815791968059294457847368072i)) > 584 __CZ__eps) { 585 epsilon(eps); 586 return 63; 587 } 588 if (abs 589 (lngamma(62.60 + 0.3000i) - 590 (195.2126688764702481772276457650023207176714432948785485 + 591 1.238628204695931980600482702688969918429374403006592554i)) > 592 __CZ__eps) { 593 epsilon(eps); 594 return 64; 595 } 596 if (abs 597 (lngamma(63.60 + 0.3000i) - 598 (199.3494456376687238313417632202369605922807314239672719 + 599 1.243420500277190605198320894289870930154643596582155076i)) > 600 __CZ__eps) { 601 epsilon(eps); 602 return 65; 603 } 604 if (abs 605 (lngamma(64.60 + 0.3000i) - 606 (203.5020702328465376706204035728796350972376926574607893 + 607 1.248137446425596312819515029227444652080011390838575181i)) > 608 __CZ__eps) { 609 epsilon(eps); 610 return 66; 611 } 612 if (abs 613 (lngamma(65.60 + 0.3000i) - 614 (207.6702954267142863859185793548246421433863939380928954 + 615 1.252781375889819416329161991660565854615382764835522506i)) > 616 __CZ__eps) { 617 epsilon(eps); 618 return 67; 619 } 620 if (abs 621 (lngamma(55.60 - 4.700i) - 622 (166.5221258272035253961542734005976077004749775938844000 - 623 18.84875483296568553194454925345602004591801239160222174i)) > 624 __CZ__eps) { 625 epsilon(eps); 626 return 68; 627 } 628 if (abs 629 (lngamma(56.60 - 3.700i) - 630 (170.6185921690853207517443064939778892985245375960964842 - 631 14.90313021223193465377855573208445845565931668639004077i)) > 632 __CZ__eps) { 633 epsilon(eps); 634 return 69; 635 } 636 if (abs 637 (lngamma(57.60 - 2.700i) - 638 (174.7127139121008307648437631979262499901446251937177073 - 639 10.92201102864604767334040466047947450750373806537116051i)) > 640 __CZ__eps) { 641 epsilon(eps); 642 return 70; 643 } 644 if (abs 645 (lngamma(58.60 - 1.700i) - 646 (178.8051797102056562439362100160978710660289490095968327 - 647 6.905945104548951236229262516275118301863000955218208856i)) > 648 __CZ__eps) { 649 epsilon(eps); 650 return 71; 651 } 652 if (abs 653 (lngamma(59.60 - 0.7000i) - 654 (182.8966358377199778625865269072085032936485484956150669 - 655 2.855486362253577342667404413778192112579790386732841204i)) > 656 __CZ__eps) { 657 epsilon(eps); 658 return 72; 659 } 660 if (abs 661 (lngamma(60.60 + 0.3000i) - 662 (186.9876880003631981031020807195926428903734785341818284 + 663 1.228807658719925269995511830298415601718771597558190350i)) > 664 __CZ__eps) { 665 epsilon(eps); 666 return 73; 667 } 668 if (abs 669 (lngamma(61.60 + 1.300i) - 670 (191.0789031896982469942903294770974306494712752019213395 + 671 5.346377998474074192830409565498522421021695288142347615i)) > 672 __CZ__eps) { 673 epsilon(eps); 674 return 74; 675 } 676 if (abs 677 (lngamma(62.60 + 2.300i) - 678 (195.1708115544608858783580589279983618518227865792619427 + 679 9.496666208022148051357709844128014322980249562957453155i)) > 680 __CZ__eps) { 681 epsilon(eps); 682 return 75; 683 } 684 if (abs 685 (lngamma(63.60 + 3.300i) - 686 (199.2639082667972359747356775354901044881033064193665592 + 687 13.67911603585439751926438073480939520547347569839795064i)) > 688 __CZ__eps) { 689 epsilon(eps); 690 return 76; 691 } 692 if (abs 693 (lngamma(64.60 + 4.300i) - 694 (203.3586553654963869814883298543618854726441450377694569 + 695 17.89317489050227754715433149549722038188972541358048335i)) > 696 __CZ__eps) { 697 epsilon(eps); 698 return 77; 699 } 700 if (abs 701 (lngamma(65.60 + 5.300i) - 702 (207.4554835618873492047512087924156663776620358356581503 + 703 22.13829509931977678201875089030163451926720764548437834i)) > 704 __CZ__eps) { 705 epsilon(eps); 706 return 78; 707 } 708 if (abs 709 (lngamma(0.6000 + 55.30i) - 710 (-85.54482235577983941284251852323648610691188392673393393 + 711 166.7640845362830899082977628513038941147191508645382670i)) > 712 __CZ__eps) { 713 epsilon(eps); 714 return 79; 715 } 716 if (abs 717 (lngamma(0.6000 + 56.30i) - 718 (-87.11382647385499402990266927218873826677912515510914330 + 719 170.7858332456548897964755419202916477033408200711519690i)) > 720 __CZ__eps) { 721 epsilon(eps); 722 return 80; 723 } 724 if (abs 725 (lngamma(0.6000 + 57.30i) - 726 (-88.68286214812485690627962462529848906043953388486922638 + 727 174.8253452895478184840703539752269094932785103410249518i)) > 728 __CZ__eps) { 729 epsilon(eps); 730 return 81; 731 } 732 if (abs 733 (lngamma(0.6000 + 58.30i) - 734 (-90.25192828651651583800480958344256221682554088740576313 + 735 178.8823106163841131771861511088137077830986146286084489i)) > 736 __CZ__eps) { 737 epsilon(eps); 738 return 82; 739 } 740 if (abs 741 (lngamma(0.6000 + 59.30i) - 742 (-91.82102385268587759734139136217993540696936010920994984 + 743 182.9564298132977973838333574465352695792546867284831679i)) > 744 __CZ__eps) { 745 epsilon(eps); 746 return 83; 747 } 748 if (abs 749 (lngamma(0.6000 + 60.30i) - 750 (-93.39014786228910598458529398231928177449383105033168028 + 751 187.0474135677690289293542062291360648608774972285628443i)) > 752 __CZ__eps) { 753 epsilon(eps); 754 return 84; 755 } 756 if (abs 757 (lngamma(0.6000 + 61.30i) - 758 (-94.95929937956076993888890535139227785932447324700640489 + 759 191.1549821649831349987910547767822679603735412036380108i)) > 760 __CZ__eps) { 761 epsilon(eps); 762 return 85; 763 } 764 if (abs 765 (lngamma(0.6000 + 62.30i) - 766 (-96.52847751416891464599424930795884732518087496093651555 + 767 195.2788650179992458972186470030422322640959550214072444i)) > 768 __CZ__eps) { 769 epsilon(eps); 770 return 86; 771 } 772 if (abs 773 (lngamma(0.6000 + 63.30i) - 774 (-98.09768141832058996231194071903760307280235519603364210 + 775 199.4188002280943140128727971292337826315387363387763786i)) > 776 __CZ__eps) { 777 epsilon(eps); 778 return 87; 779 } 780 if (abs 781 (lngamma(0.6000 + 64.30i) - 782 (-99.66691028409427522125385963825011409754630863598190917 + 783 203.5745341728981030650825963445356527935331129342248469i)) > 784 __CZ__eps) { 785 epsilon(eps); 786 return 88; 787 } 788 if (abs 789 (lngamma(0.6000 + 65.30i) - 790 (-101.2361633409781854893699037629524761308029390440175099 + 791 207.7458211201573236805249632667291754315339341665724958i)) > 792 __CZ__eps) { 793 epsilon(eps); 794 return 89; 795 } 796 if (abs 797 (lngamma(55.60 + 60.30i) - 798 (138.3405218869058217717201182836422027677382184890964165 + 799 250.9485307086751713133102893231808151265549690071705472i)) > 800 __CZ__eps) { 801 epsilon(eps); 802 return 90; 803 } 804 if (abs 805 (lngamma(56.60 + 60.30i) - 806 (142.7474976121018701984157500679190442966110797769323173 + 807 251.7744588650459198825346353772080509751313819470548658i)) > 808 __CZ__eps) { 809 epsilon(eps); 810 return 91; 811 } 812 if (abs 813 (lngamma(57.60 + 60.30i) - 814 (147.1627435319602425515209166358781832064023544924212637 + 815 252.5914974493805839443768868968642526869013797892608722i)) > 816 __CZ__eps) { 817 epsilon(eps); 818 return 92; 819 } 820 if (abs 821 (lngamma(58.60 + 60.30i) - 822 (151.5862689029682042031606617640450220740985775964639233 + 823 253.3997923739994162421416717294147634900873392644324912i)) > 824 __CZ__eps) { 825 epsilon(eps); 826 return 93; 827 } 828 if (abs 829 (lngamma(59.60 + 60.30i) - 830 (156.0180803184689022095120622630277425180433295653817951 + 831 254.1994872924291535134537002289372877256760561545266240i)) > 832 __CZ__eps) { 833 epsilon(eps); 834 return 94; 835 } 836 if (abs 837 (lngamma(60.60 + 60.30i) - 838 (160.4581818322128207752571131620498333645831099884594593 + 839 254.9907235879958949246830907372060458378867915677707498i)) > 840 __CZ__eps) { 841 epsilon(eps); 842 return 95; 843 } 844 if (abs 845 (lngamma(61.60 + 60.30i) - 846 (164.9065750781912363906196189745577497508505165621357938 + 847 255.7736403669080425654455012237246051402306640891736322i)) > 848 __CZ__eps) { 849 epsilon(eps); 850 return 96; 851 } 852 if (abs 853 (lngamma(62.60 + 60.30i) - 854 (169.3632593867220799863942253592790131010186217605278241 + 855 256.5483744554910528044048617005478717965073680654042053i)) > 856 __CZ__eps) { 857 epsilon(eps); 858 return 97; 859 } 860 if (abs 861 (lngamma(63.60 + 60.30i) - 862 (173.8282318967764198928263540479369804154959334380883398 + 863 257.3150604012511380535676929646281795055983167823336193i)) > 864 __CZ__eps) { 865 epsilon(eps); 866 return 98; 867 } 868 if (abs 869 (lngamma(64.60 + 60.30i) - 870 (178.3014876645497005489995740718100489155558324227755847 + 871 258.0738304774605436591436026066009539042787457216911291i)) > 872 __CZ__eps) { 873 epsilon(eps); 874 return 99; 875 } 876 if (abs 877 (lngamma(65.60 + 60.30i) - 878 (182.7830197682960267239662260557525833694506977039319737 + 879 258.8248146909724805417993325211754807069936951454932977i)) > 880 __CZ__eps) { 881 epsilon(eps); 882 return 100; 883 } 884 if (abs 885 (lngamma(55.60 + 55.30i) - 886 (142.3862162791589253462657451176275726003857264651343509 + 887 229.0474972316203435288188174128389032017308276896396827i)) > 888 __CZ__eps) { 889 epsilon(eps); 890 return 101; 891 } 892 if (abs 893 (lngamma(56.60 + 56.30i) - 894 (145.9655713474689753168556009847734887663033552824290632 + 895 234.2012259525622513896404861908422505950646506577988340i)) > 896 __CZ__eps) { 897 epsilon(eps); 898 return 102; 899 } 900 if (abs 901 (lngamma(57.60 + 57.30i) - 902 (149.5627523253413003508200851967083007076485608754907532 + 903 239.3727177204530395107173394215426561501560159557014103i)) > 904 __CZ__eps) { 905 epsilon(eps); 906 return 103; 907 } 908 if (abs 909 (lngamma(58.60 + 58.30i) - 910 (153.1774470047839472501216057736005131302626263510371392 + 911 244.5616624984797644536433102063654140139237547865421532i)) > 912 __CZ__eps) { 913 epsilon(eps); 914 return 104; 915 } 916 if (abs 917 (lngamma(59.60 + 59.30i) - 918 (156.8093539260984043245770025957276995010069796775703177 + 919 249.7677608875474964335171539461488545902215228674008981i)) > 920 __CZ__eps) { 921 epsilon(eps); 922 return 105; 923 } 924 if (abs 925 (lngamma(60.60 + 60.30i) - 926 (160.4581818322128207752571131620498333645831099884594593 + 927 254.9907235879958949246830907372060458378867915677707498i)) > 928 __CZ__eps) { 929 epsilon(eps); 930 return 106; 931 } 932 if (abs 933 (lngamma(61.60 + 61.30i) - 934 (164.1236491593380218382957487779642572534385362007999916 + 935 260.2302708970324395553848679531333038493595454481482560i)) > 936 __CZ__eps) { 937 epsilon(eps); 938 return 107; 939 } 940 if (abs 941 (lngamma(62.60 + 62.30i) - 942 (167.8054835609733823774016164868506426238263526697353479 + 943 265.4861322389681286058365065491944749198017327500214219i)) > 944 __CZ__eps) { 945 epsilon(eps); 946 return 108; 947 } 948 if (abs 949 (lngamma(63.60 + 63.30i) - 950 (171.5034214625769205528980449555097665172285302158028025 + 951 270.7580457256222186188843213325906832500862444373572311i)) > 952 __CZ__eps) { 953 epsilon(eps); 954 return 109; 955 } 956 if (abs 957 (lngamma(64.60 + 64.30i) - 958 (175.2172076444693933495200678808489471651335658562522069 + 959 276.0457577445122795003295082894754935609216218032287116i)) > 960 __CZ__eps) { 961 epsilon(eps); 962 return 110; 963 } 964 if (abs 965 (lngamma(65.60 + 65.30i) - 966 (178.9465948507696967449494536146172974534191430062324139 + 967 281.3490225726683461623186324992570909685317567794418009i)) > 968 __CZ__eps) { 969 epsilon(eps); 970 return 111; 971 } 972 if (abs 973 (lngamma(0.6000 + 4.700i) - 974 (-6.309230474426685182917699027589840248465208901823736044 + 975 2.738444603265429259406748249023722438146218314171151425i)) > 976 __CZ__eps) { 977 epsilon(eps); 978 return 112; 979 } 980 if (abs 981 (lngamma(0.6000 + 3.700i) - 982 (-4.762470602521331200619631143446813610218360030381255868 + 983 1.307861859626688811743330143389568763790196226980935860i)) > 984 __CZ__eps) { 985 epsilon(eps); 986 return 113; 987 } 988 if (abs 989 (lngamma(0.6000 + 2.700i) - 990 (-3.223449159729432378435059551332376261824297133470481664 + 991 0.1525473639596832094518944287785664759918133343972275457i)) > 992 __CZ__eps) { 993 epsilon(eps); 994 return 114; 995 } 996 if (abs 997 (lngamma(0.6000 + 1.700i) - 998 (-1.699851882736550416690203691424396333903393386464266356 - 999 0.6188153536675997046951505463300498363352953733225308151i)) > 1000 __CZ__eps) { 1001 epsilon(eps); 1002 return 115; 1003 } 1004 if (abs 1005 (lngamma(0.6000 + 0.7000i) - 1006 (-0.2316312495202586116986763277644377512618333134657045421 - 1007 0.7368909799768367142682353753277667339824288570492360448i)) > 1008 __CZ__eps) { 1009 epsilon(eps); 1010 return 116; 1011 } 1012 if (abs 1013 (lngamma(0.6000 - 0.3000i) - 1014 (0.2484000028946351584991362705412598434332854007039741619 + 1015 0.4227177743314176403219013995119576518240065994565821579i)) > 1016 __CZ__eps) { 1017 epsilon(eps); 1018 return 117; 1019 } 1020 if (abs 1021 (lngamma(0.6000 - 1.300i) - 1022 (-1.099689479936482253001126014071250387866864940802593030 + 1023 0.7725489931464399068598744386748572974573591452933440189i)) > 1024 __CZ__eps) { 1025 epsilon(eps); 1026 return 118; 1027 } 1028 if (abs 1029 (lngamma(0.6000 - 2.300i) - 1030 (-2.611386294578008388513457987969729601048026532835562114 + 1031 0.2111094845860104400425314901146665256344806614559790152i)) > 1032 __CZ__eps) { 1033 epsilon(eps); 1034 return 119; 1035 } 1036 if (abs 1037 (lngamma(0.6000 - 3.300i) - 1038 (-4.145670522984067490152016613422534092269675011415945298 - 1039 0.8081928951523762121254890981027647840025857144095024771i)) > 1040 __CZ__eps) { 1041 epsilon(eps); 1042 return 120; 1043 } 1044 if (abs 1045 (lngamma(0.6000 - 4.300i) - 1046 (-5.689842576036527320491763306963824853139907301029281610 - 1047 2.137677242374957442527694027866746053575410791317320138i)) > 1048 __CZ__eps) { 1049 epsilon(eps); 1050 return 121; 1051 } 1052 if (abs 1053 (lngamma(0.6000 - 5.300i) - 1054 (-7.239654605052715210182073623536904206104308839659326676 - 1055 3.702857758072432142072497796069521049678127217607403327i)) > 1056 __CZ__eps) { 1057 epsilon(eps); 1058 return 122; 1059 } 1060 if (abs 1061 (lngamma(-4.400 + 4.700i) - 1062 (-14.73413592903136179653960750100174060012531669119348359 - 1063 7.340768981905845672138265648506833394433043135824981559i)) > 1064 __CZ__eps) { 1065 epsilon(eps); 1066 return 123; 1067 } 1068 if (abs 1069 (lngamma(-3.400 + 3.700i) - 1070 (-10.55018529022399813119005433743831737900085357229525796 - 1071 6.763336971725381912118912702208512629733112628981673298i)) > 1072 __CZ__eps) { 1073 epsilon(eps); 1074 return 124; 1075 } 1076 if (abs 1077 (lngamma(-2.400 + 2.700i) - 1078 (-6.624262018571684573249747079902924251345023570085621326 - 1079 5.911914743873792313808731773611192661709672638901754910i)) > 1080 __CZ__eps) { 1081 epsilon(eps); 1082 return 125; 1083 } 1084 if (abs 1085 (lngamma(-1.400 + 1.700i) - 1086 (-3.046912030520906458689035477846643788289090086345259335 - 1087 4.680423062668151424886705499811285399248102868605621987i)) > 1088 __CZ__eps) { 1089 epsilon(eps); 1090 return 126; 1091 } 1092 if (abs 1093 (lngamma(-0.4000 + 0.7000i) - 1094 (-0.01623979147403148300780826047582666582616647435129398527 - 1095 2.826833421018256285271011446520969788549353956082297248i)) > 1096 __CZ__eps) { 1097 epsilon(eps); 1098 return 127; 1099 } 1100 if (abs 1101 (lngamma(0.6000 - 0.3000i) - 1102 (0.2484000028946351584991362705412598434332854007039741619 + 1103 0.4227177743314176403219013995119576518240065994565821579i)) > 1104 __CZ__eps) { 1105 epsilon(eps); 1106 return 128; 1107 } 1108 if (abs 1109 (lngamma(1.600 - 1.300i) - 1110 (-0.7407695833613238477853561156238169815169605175974563292 - 1111 0.3658395580779188724109027663961707196451841638334886679i)) > 1112 __CZ__eps) { 1113 epsilon(eps); 1114 return 129; 1115 } 1116 if (abs 1117 (lngamma(2.600 - 2.300i) - 1118 (-0.7153017561016750689453931991025219163388411460412682694 - 1119 2.067498782269003991801228117457494590355245722719424742i)) > 1120 __CZ__eps) { 1121 epsilon(eps); 1122 return 130; 1123 } 1124 if (abs 1125 (lngamma(3.600 - 3.300i) - 1126 (-0.2006290139452759775010107586460283514303264993274887714 - 1127 4.221969149213679168621678150696738907045553787288427746i)) > 1128 __CZ__eps) { 1129 epsilon(eps); 1130 return 131; 1131 } 1132 if (abs 1133 (lngamma(4.600 - 4.300i) - 1134 (0.6404767304085869581018213364351326853699331839312207180 - 1135 6.685149323469513776483323494807052342570441936959315816i)) > 1136 __CZ__eps) { 1137 epsilon(eps); 1138 return 132; 1139 } 1140 if (abs 1141 (lngamma(5.600 - 5.300i) - 1142 (1.727112476786098959996727579157495580048033035060833670 - 1143 9.383383918093155327986445451264543368751338171298232916i)) > 1144 __CZ__eps) { 1145 epsilon(eps); 1146 return 133; 1147 } 1148 if (abs 1149 (lngamma(55.60 - 0.3000i) - 1150 (166.7215150367733897769155930653789348483780044274716818 - 1151 1.202750513929718332820270669742686561426457642272968981i)) > 1152 __CZ__eps) { 1153 epsilon(eps); 1154 return 134; 1155 } 1156 if (abs 1157 (lngamma(56.60 - 0.3000i) - 1158 (170.7397127945179968376917410624766834622909691036136375 - 1159 1.208146145021640303895693686064781770317635078049891748i)) > 1160 __CZ__eps) { 1161 epsilon(eps); 1162 return 135; 1163 } 1164 if (abs 1165 (lngamma(57.60 - 0.3000i) - 1166 (174.7757358264026770962028712327193919190938819848539820 - 1167 1.213446448743774292811195505423481449339002192187714949i)) > 1168 __CZ__eps) { 1169 epsilon(eps); 1170 return 136; 1171 } 1172 if (abs 1173 (lngamma(58.60 - 0.3000i) - 1174 (178.8292719572886165808686582437464130998008894472168186 - 1175 1.218654734982846161251085553080214761347285268088604785i)) > 1176 __CZ__eps) { 1177 epsilon(eps); 1178 return 137; 1179 } 1180 if (abs 1181 (lngamma(59.60 - 0.3000i) - 1182 (182.9000197581041057641595126649840680882966589651420637 - 1183 1.223774144183534973445316592347337056808910609419286930i)) > 1184 __CZ__eps) { 1185 epsilon(eps); 1186 return 138; 1187 } 1188 if (abs 1189 (lngamma(60.60 - 0.3000i) - 1190 (186.9876880003631981031020807195926428903734785341818284 - 1191 1.228807658719925269995511830298415601718771597558190350i)) > 1192 __CZ__eps) { 1193 epsilon(eps); 1194 return 139; 1195 } 1196 if (abs 1197 (lngamma(61.60 - 0.3000i) - 1198 (191.0919951469889337316641602771633017764510692037723749 - 1199 1.233758113328768712483862353815791968059294457847368072i)) > 1200 __CZ__eps) { 1201 epsilon(eps); 1202 return 140; 1203 } 1204 if (abs 1205 (lngamma(62.60 - 0.3000i) - 1206 (195.2126688764702481772276457650023207176714432948785485 - 1207 1.238628204695931980600482702688969918429374403006592554i)) > 1208 __CZ__eps) { 1209 epsilon(eps); 1210 return 141; 1211 } 1212 if (abs 1213 (lngamma(63.60 - 0.3000i) - 1214 (199.3494456376687238313417632202369605922807314239672719 - 1215 1.243420500277190605198320894289870930154643596582155076i)) > 1216 __CZ__eps) { 1217 epsilon(eps); 1218 return 142; 1219 } 1220 if (abs 1221 (lngamma(64.60 - 0.3000i) - 1222 (203.5020702328465376706204035728796350972376926574607893 - 1223 1.248137446425596312819515029227444652080011390838575181i)) > 1224 __CZ__eps) { 1225 epsilon(eps); 1226 return 143; 1227 } 1228 if (abs 1229 (lngamma(65.60 - 0.3000i) - 1230 (207.6702954267142863859185793548246421433863939380928954 - 1231 1.252781375889819416329161991660565854615382764835522506i)) > 1232 __CZ__eps) { 1233 epsilon(eps); 1234 return 144; 1235 } 1236 if (abs 1237 (lngamma(55.60 - 4.700i) - 1238 (166.5221258272035253961542734005976077004749775938844000 - 1239 18.84875483296568553194454925345602004591801239160222174i)) > 1240 __CZ__eps) { 1241 epsilon(eps); 1242 return 145; 1243 } 1244 if (abs 1245 (lngamma(56.60 - 3.700i) - 1246 (170.6185921690853207517443064939778892985245375960964842 - 1247 14.90313021223193465377855573208445845565931668639004077i)) > 1248 __CZ__eps) { 1249 epsilon(eps); 1250 return 146; 1251 } 1252 if (abs 1253 (lngamma(57.60 - 2.700i) - 1254 (174.7127139121008307648437631979262499901446251937177073 - 1255 10.92201102864604767334040466047947450750373806537116051i)) > 1256 __CZ__eps) { 1257 epsilon(eps); 1258 return 147; 1259 } 1260 if (abs 1261 (lngamma(58.60 - 1.700i) - 1262 (178.8051797102056562439362100160978710660289490095968327 - 1263 6.905945104548951236229262516275118301863000955218208856i)) > 1264 __CZ__eps) { 1265 epsilon(eps); 1266 return 148; 1267 } 1268 if (abs 1269 (lngamma(59.60 - 0.7000i) - 1270 (182.8966358377199778625865269072085032936485484956150669 - 1271 2.855486362253577342667404413778192112579790386732841204i)) > 1272 __CZ__eps) { 1273 epsilon(eps); 1274 return 149; 1275 } 1276 if (abs 1277 (lngamma(60.60 + 0.3000i) - 1278 (186.9876880003631981031020807195926428903734785341818284 + 1279 1.228807658719925269995511830298415601718771597558190350i)) > 1280 __CZ__eps) { 1281 epsilon(eps); 1282 return 150; 1283 } 1284 if (abs 1285 (lngamma(61.60 + 1.300i) - 1286 (191.0789031896982469942903294770974306494712752019213395 + 1287 5.346377998474074192830409565498522421021695288142347615i)) > 1288 __CZ__eps) { 1289 epsilon(eps); 1290 return 151; 1291 } 1292 if (abs 1293 (lngamma(62.60 + 2.300i) - 1294 (195.1708115544608858783580589279983618518227865792619427 + 1295 9.496666208022148051357709844128014322980249562957453155i)) > 1296 __CZ__eps) { 1297 epsilon(eps); 1298 return 152; 1299 } 1300 if (abs 1301 (lngamma(63.60 + 3.300i) - 1302 (199.2639082667972359747356775354901044881033064193665592 + 1303 13.67911603585439751926438073480939520547347569839795064i)) > 1304 __CZ__eps) { 1305 epsilon(eps); 1306 return 153; 1307 } 1308 if (abs 1309 (lngamma(64.60 + 4.300i) - 1310 (203.3586553654963869814883298543618854726441450377694569 + 1311 17.89317489050227754715433149549722038188972541358048335i)) > 1312 __CZ__eps) { 1313 epsilon(eps); 1314 return 154; 1315 } 1316 if (abs 1317 (lngamma(65.60 + 5.300i) - 1318 (207.4554835618873492047512087924156663776620358356581503 + 1319 22.13829509931977678201875089030163451926720764548437834i)) > 1320 __CZ__eps) { 1321 epsilon(eps); 1322 return 155; 1323 } 1324 if (abs 1325 (lngamma(0.6000 - 55.30i) - 1326 (-85.54482235577983941284251852323648610691188392673393393 - 1327 166.7640845362830899082977628513038941147191508645382670i)) > 1328 __CZ__eps) { 1329 epsilon(eps); 1330 return 156; 1331 } 1332 if (abs 1333 (lngamma(0.6000 - 56.30i) - 1334 (-87.11382647385499402990266927218873826677912515510914330 - 1335 170.7858332456548897964755419202916477033408200711519690i)) > 1336 __CZ__eps) { 1337 epsilon(eps); 1338 return 157; 1339 } 1340 if (abs 1341 (lngamma(0.6000 - 57.30i) - 1342 (-88.68286214812485690627962462529848906043953388486922638 - 1343 174.8253452895478184840703539752269094932785103410249518i)) > 1344 __CZ__eps) { 1345 epsilon(eps); 1346 return 158; 1347 } 1348 if (abs 1349 (lngamma(0.6000 - 58.30i) - 1350 (-90.25192828651651583800480958344256221682554088740576313 - 1351 178.8823106163841131771861511088137077830986146286084489i)) > 1352 __CZ__eps) { 1353 epsilon(eps); 1354 return 159; 1355 } 1356 if (abs 1357 (lngamma(0.6000 - 59.30i) - 1358 (-91.82102385268587759734139136217993540696936010920994984 - 1359 182.9564298132977973838333574465352695792546867284831679i)) > 1360 __CZ__eps) { 1361 epsilon(eps); 1362 return 160; 1363 } 1364 if (abs 1365 (lngamma(0.6000 - 60.30i) - 1366 (-93.39014786228910598458529398231928177449383105033168028 - 1367 187.0474135677690289293542062291360648608774972285628443i)) > 1368 __CZ__eps) { 1369 epsilon(eps); 1370 return 161; 1371 } 1372 if (abs 1373 (lngamma(0.6000 - 61.30i) - 1374 (-94.95929937956076993888890535139227785932447324700640489 - 1375 191.1549821649831349987910547767822679603735412036380108i)) > 1376 __CZ__eps) { 1377 epsilon(eps); 1378 return 162; 1379 } 1380 if (abs 1381 (lngamma(0.6000 - 62.30i) - 1382 (-96.52847751416891464599424930795884732518087496093651555 - 1383 195.2788650179992458972186470030422322640959550214072444i)) > 1384 __CZ__eps) { 1385 epsilon(eps); 1386 return 163; 1387 } 1388 if (abs 1389 (lngamma(0.6000 - 63.30i) - 1390 (-98.09768141832058996231194071903760307280235519603364210 - 1391 199.4188002280943140128727971292337826315387363387763786i)) > 1392 __CZ__eps) { 1393 epsilon(eps); 1394 return 164; 1395 } 1396 if (abs 1397 (lngamma(0.6000 - 64.30i) - 1398 (-99.66691028409427522125385963825011409754630863598190917 - 1399 203.5745341728981030650825963445356527935331129342248469i)) > 1400 __CZ__eps) { 1401 epsilon(eps); 1402 return 165; 1403 } 1404 if (abs 1405 (lngamma(0.6000 - 65.30i) - 1406 (-101.2361633409781854893699037629524761308029390440175099 - 1407 207.7458211201573236805249632667291754315339341665724958i)) > 1408 __CZ__eps) { 1409 epsilon(eps); 1410 return 166; 1411 } 1412 if (abs 1413 (lngamma(55.60 - 60.30i) - 1414 (138.3405218869058217717201182836422027677382184890964165 - 1415 250.9485307086751713133102893231808151265549690071705472i)) > 1416 __CZ__eps) { 1417 epsilon(eps); 1418 return 167; 1419 } 1420 if (abs 1421 (lngamma(56.60 - 60.30i) - 1422 (142.7474976121018701984157500679190442966110797769323173 - 1423 251.7744588650459198825346353772080509751313819470548658i)) > 1424 __CZ__eps) { 1425 epsilon(eps); 1426 return 168; 1427 } 1428 if (abs 1429 (lngamma(57.60 - 60.30i) - 1430 (147.1627435319602425515209166358781832064023544924212637 - 1431 252.5914974493805839443768868968642526869013797892608722i)) > 1432 __CZ__eps) { 1433 epsilon(eps); 1434 return 169; 1435 } 1436 if (abs 1437 (lngamma(58.60 - 60.30i) - 1438 (151.5862689029682042031606617640450220740985775964639233 - 1439 253.3997923739994162421416717294147634900873392644324912i)) > 1440 __CZ__eps) { 1441 epsilon(eps); 1442 return 170; 1443 } 1444 if (abs 1445 (lngamma(59.60 - 60.30i) - 1446 (156.0180803184689022095120622630277425180433295653817951 - 1447 254.1994872924291535134537002289372877256760561545266240i)) > 1448 __CZ__eps) { 1449 epsilon(eps); 1450 return 171; 1451 } 1452 if (abs 1453 (lngamma(60.60 - 60.30i) - 1454 (160.4581818322128207752571131620498333645831099884594593 - 1455 254.9907235879958949246830907372060458378867915677707498i)) > 1456 __CZ__eps) { 1457 epsilon(eps); 1458 return 172; 1459 } 1460 if (abs 1461 (lngamma(61.60 - 60.30i) - 1462 (164.9065750781912363906196189745577497508505165621357938 - 1463 255.7736403669080425654455012237246051402306640891736322i)) > 1464 __CZ__eps) { 1465 epsilon(eps); 1466 return 173; 1467 } 1468 if (abs 1469 (lngamma(62.60 - 60.30i) - 1470 (169.3632593867220799863942253592790131010186217605278241 - 1471 256.5483744554910528044048617005478717965073680654042053i)) > 1472 __CZ__eps) { 1473 epsilon(eps); 1474 return 174; 1475 } 1476 if (abs 1477 (lngamma(63.60 - 60.30i) - 1478 (173.8282318967764198928263540479369804154959334380883398 - 1479 257.3150604012511380535676929646281795055983167823336193i)) > 1480 __CZ__eps) { 1481 epsilon(eps); 1482 return 175; 1483 } 1484 if (abs 1485 (lngamma(64.60 - 60.30i) - 1486 (178.3014876645497005489995740718100489155558324227755847 - 1487 258.0738304774605436591436026066009539042787457216911291i)) > 1488 __CZ__eps) { 1489 epsilon(eps); 1490 return 176; 1491 } 1492 if (abs 1493 (lngamma(65.60 - 60.30i) - 1494 (182.7830197682960267239662260557525833694506977039319737 - 1495 258.8248146909724805417993325211754807069936951454932977i)) > 1496 __CZ__eps) { 1497 epsilon(eps); 1498 return 177; 1499 } 1500 if (abs 1501 (lngamma(55.60 - 55.30i) - 1502 (142.3862162791589253462657451176275726003857264651343509 - 1503 229.0474972316203435288188174128389032017308276896396827i)) > 1504 __CZ__eps) { 1505 epsilon(eps); 1506 return 178; 1507 } 1508 if (abs 1509 (lngamma(56.60 - 56.30i) - 1510 (145.9655713474689753168556009847734887663033552824290632 - 1511 234.2012259525622513896404861908422505950646506577988340i)) > 1512 __CZ__eps) { 1513 epsilon(eps); 1514 return 179; 1515 } 1516 if (abs 1517 (lngamma(57.60 - 57.30i) - 1518 (149.5627523253413003508200851967083007076485608754907532 - 1519 239.3727177204530395107173394215426561501560159557014103i)) > 1520 __CZ__eps) { 1521 epsilon(eps); 1522 return 180; 1523 } 1524 if (abs 1525 (lngamma(58.60 - 58.30i) - 1526 (153.1774470047839472501216057736005131302626263510371392 - 1527 244.5616624984797644536433102063654140139237547865421532i)) > 1528 __CZ__eps) { 1529 epsilon(eps); 1530 return 181; 1531 } 1532 if (abs 1533 (lngamma(59.60 - 59.30i) - 1534 (156.8093539260984043245770025957276995010069796775703177 - 1535 249.7677608875474964335171539461488545902215228674008981i)) > 1536 __CZ__eps) { 1537 epsilon(eps); 1538 return 182; 1539 } 1540 if (abs 1541 (lngamma(60.60 - 60.30i) - 1542 (160.4581818322128207752571131620498333645831099884594593 - 1543 254.9907235879958949246830907372060458378867915677707498i)) > 1544 __CZ__eps) { 1545 epsilon(eps); 1546 return 183; 1547 } 1548 if (abs 1549 (lngamma(61.60 - 61.30i) - 1550 (164.1236491593380218382957487779642572534385362007999916 - 1551 260.2302708970324395553848679531333038493595454481482560i)) > 1552 __CZ__eps) { 1553 epsilon(eps); 1554 return 184; 1555 } 1556 if (abs 1557 (lngamma(62.60 - 62.30i) - 1558 (167.8054835609733823774016164868506426238263526697353479 - 1559 265.4861322389681286058365065491944749198017327500214219i)) > 1560 __CZ__eps) { 1561 epsilon(eps); 1562 return 185; 1563 } 1564 if (abs 1565 (lngamma(63.60 - 63.30i) - 1566 (171.5034214625769205528980449555097665172285302158028025 - 1567 270.7580457256222186188843213325906832500862444373572311i)) > 1568 __CZ__eps) { 1569 epsilon(eps); 1570 return 186; 1571 } 1572 if (abs 1573 (lngamma(64.60 - 64.30i) - 1574 (175.2172076444693933495200678808489471651335658562522069 - 1575 276.0457577445122795003295082894754935609216218032287116i)) > 1576 __CZ__eps) { 1577 epsilon(eps); 1578 return 187; 1579 } 1580 if (abs 1581 (lngamma(65.60 - 65.30i) - 1582 (178.9465948507696967449494536146172974534191430062324139 - 1583 281.3490225726683461623186324992570909685317567794418009i)) > 1584 __CZ__eps) { 1585 epsilon(eps); 1586 return 188; 1587 } 1588 1589 /* a large integer */ 1590 1591 if (abs(lngamma(10 ^ 2 + 1) - (ln((10 ^ 2) !))) > __CZ__eps) { 1592 epsilon(eps); 1593 return 189; 1594 } 1595 1596 epsilon(eps); 1597 if (isnull(type)) 1598 t02(1); 1599 1600 epsilon(eps); 1601 return 0; 1602} 1603 1604define t03() 1605{ 1606 local eps; 1607 eps = epsilon(1e-20); 1608 if (abs(psi(5) - 1.506117668431800472726821243) > __CZ__eps) { 1609 epsilon(eps); 1610 return 1; 1611 } 1612 if (!iserror(psi(-5))) { 1613 epsilon(eps); 1614 return 2; 1615 } 1616 if (abs(psi(-5.5) - (1.792911330399932941915445023)) > __CZ__eps) { 1617 epsilon(eps); 1618 return 3; 1619 } 1620 if (abs(psi(5.5) - (1.611093148581751123733626842)) > __CZ__eps) { 1621 epsilon(eps); 1622 return 4; 1623 } 1624 if (abs 1625 (psi(5.5 + 5.5i) - 1626 (2.005864860662911769895523042 + 0.8322301014098247099090843855i)) > 1627 __CZ__eps) { 1628 epsilon(eps); 1629 return 5; 1630 } 1631 if (abs 1632 (psi(-5.5 + 5.5i) - 1633 (2.096773951572002678986432133 + 2.400271643089053271126857721i)) > 1634 __CZ__eps) { 1635 epsilon(eps); 1636 return 6; 1637 } 1638 if (abs 1639 (psi(-5.5 - 5.5i) - 1640 (2.096773951572002678986432133 - 2.400271643089053271126857721i)) > 1641 __CZ__eps) { 1642 epsilon(eps); 1643 return 7; 1644 } 1645 epsilon(eps); 1646 return 0; 1647} 1648 1649/* test 04 tests polygamma(m,z) for the following values (m==0 gets computed 1650 * by psi()). 1651 * Values tested against were computed with Mathematica(TM) only 1652 * (z in the left complex half plane does not get computed yet) 1653 */ 1654define t04() 1655{ 1656 local eps; 1657 eps = epsilon(1e-20); 1658 if (abs(polygamma(2, 5) - (-0.048789732245114496725)) > __CZ__eps) { 1659 epsilon(eps); 1660 return 1; 1661 } 1662 if (!iserror(polygamma(2, -5))) { 1663 epsilon(eps); 1664 return 2; 1665 } 1666 if (abs(polygamma(2, -5.5) - (-0.02758791070687679879)) > __CZ__eps) { 1667 epsilon(eps); 1668 return 3; 1669 } 1670 if (abs(polygamma(2, 5.5) - (-0.03960894752130204297)) > __CZ__eps) { 1671 epsilon(eps); 1672 return 4; 1673 } 1674 if (abs 1675 (polygamma(2, 5.5 + 5.5i) - 1676 (0.00163921986957704426 + 0.01803230748452131112i)) > __CZ__eps) { 1677 epsilon(eps); 1678 return 5; 1679 } 1680 if (abs 1681 (polygamma(2, -5.5 + 5.5i) - 1682 (-0.00136603933402926677 - 0.015027048280671555719i)) > __CZ__eps) { 1683 epsilon(eps); 1684 return 6; 1685 } 1686 if (abs 1687 (polygamma(2, -5.5 - 5.5i) - 1688 (-0.00136603933402926677 + 0.015027048280671555719i)) > __CZ__eps) { 1689 epsilon(eps); 1690 return 7; 1691 } 1692 epsilon(eps); 1693 return 0; 1694} 1695 1696/* test 05 tests hurwitzzeta(s,a) for the following values. the first two test 1697 * if the arguments are in the right order. 1698 * test all combinations? 1699 */ 1700define t05() 1701{ 1702 local eps; 1703 eps = epsilon(1e-20); 1704 if (abs(hurwitzzeta(2, 5) - (0.2213229557371153253613040555)) > __CZ__eps) { 1705 epsilon(eps); 1706 return 1; 1707 } 1708 if (abs(hurwitzzeta(5, 2) - (0.03692775514336992633136548646)) > __CZ__eps){ 1709 epsilon(eps); 1710 return 2; 1711 } 1712 if (abs(hurwitzzeta(2.2, 5) - (0.1363459661171646798298971735))> __CZ__eps){ 1713 epsilon(eps); 1714 return 3; 1715 } 1716 if (abs(hurwitzzeta(2.2, 5.2) - (0.1294703948013920875737274341)) > 1717 __CZ__eps) { 1718 epsilon(eps); 1719 return 4; 1720 } 1721 if (abs(hurwitzzeta(-2.2, 5.2) - (-43.62740512741650992650645550)) > 1722 __CZ__eps) { 1723 epsilon(eps); 1724 return 5; 1725 } 1726 if (abs 1727 (hurwitzzeta(-2.2, -5.2) - 1728 (65.71970386778362403451264243 + 47.73828461458444658816112446i)) > 1729 __CZ__eps) { 1730 epsilon(eps); 1731 return 6; 1732 } 1733 if (abs 1734 (hurwitzzeta(2.2, 5.2 + 5.6i) - 1735 (0.038440773159665466748278144 - 0.0662501636737772199523476381i)) > 1736 __CZ__eps) { 1737 epsilon(eps); 1738 return 7; 1739 } 1740 if (abs 1741 (hurwitzzeta(2.2, 5.2 - 5.6i) - 1742 (0.038440773159665466748278144 + 0.06625016367377721995234763811i)) > 1743 __CZ__eps) { 1744 epsilon(eps); 1745 return 8; 1746 } 1747 if (abs 1748 (hurwitzzeta(2.2, -5.2 + 5.6i) - 1749 (-0.06570771621451414059240507315 - 1750 0.02045673968185922880458837166i)) > __CZ__eps) { 1751 epsilon(eps); 1752 return 9; 1753 } 1754 if (abs 1755 (hurwitzzeta(2.2, -5.2 - 5.6i) - 1756 (-0.06570771621451414059240507315 + 1757 0.02045673968185922880458837166i)) > __CZ__eps) { 1758 epsilon(eps); 1759 return 10; 1760 } 1761 if (abs 1762 (hurwitzzeta(-2.2, 5.2 + 5.6i) - 1763 (171.3023982201237034174265227 - 61.37099215219445965540875817i)) > 1764 __CZ__eps) { 1765 epsilon(eps); 1766 return 11; 1767 } 1768 if (abs 1769 (hurwitzzeta(-2.2, 5.2 - 5.6i) - 1770 (171.3023982201237034174265227 + 61.37099215219445965540875820i)) > 1771 __CZ__eps) { 1772 epsilon(eps); 1773 return 12; 1774 } 1775 if (abs 1776 (hurwitzzeta(-2.2, -5.2 + 5.6i) - 1777 (-69.18353604795857246443145272 - 231.4707567406623523296345557i)) > 1778 __CZ__eps) { 1779 epsilon(eps); 1780 return 13; 1781 } 1782 if (abs 1783 (hurwitzzeta(-2.2, -5.2 - 5.6i) - 1784 (-69.18353604795857246443145272 + 231.4707567406623523296345557i)) > 1785 __CZ__eps) { 1786 epsilon(eps); 1787 return 14; 1788 } 1789 if (abs 1790 (hurwitzzeta(5.2 + 5.6i, 2.2) - 1791 (-0.002865569533484339556271871050 + 1792 0.0148003604570643921348488531i)) > __CZ__eps) { 1793 epsilon(eps); 1794 return 15; 1795 } 1796 if (abs 1797 (hurwitzzeta(5.2 - 5.6i, 2.2) - 1798 (-0.002865569533484339556271871050 - 1799 0.0148003604570643921348488531i)) > __CZ__eps) { 1800 epsilon(eps); 1801 return 16; 1802 } 1803 if (abs 1804 (hurwitzzeta(-5.2 + 5.6i, 2.2) - 1805 (-1.837761873462765905576370048 + 3.192719531152431336748963871i)) > 1806 __CZ__eps) { 1807 epsilon(eps); 1808 return 17; 1809 } 1810 if (abs 1811 (hurwitzzeta(-5.2 - 5.6i, 2.2) - 1812 (-1.837761873462765905576346060 - 3.192719531152431336748963871i)) > 1813 __CZ__eps) { 1814 epsilon(eps); 1815 return 18; 1816 } 1817 1818 if (abs 1819 (hurwitzzeta(5.2 + 5.6i, -2.2) - 1820 (95348834359.70315397408796804 - 162510500631.4367394107265635i)) > 1821 __CZ__eps) { 1822 epsilon(eps); 1823##return 19; 1824 } 1825 if (abs 1826 (hurwitzzeta(5.2 - 5.6i, -2.2) - 1827 (0.9651349278612417712864108926 - 3.036274517135684343726981739i)) > 1828 __CZ__eps) { 1829 epsilon(eps); 1830 return 20; 1831 } 1832 1833 if (abs 1834 (hurwitzzeta(-5.2 + 5.6i, -2.2) - 1835 (2002299780.711849103677017204 - 1543130375.266699195007479145i)) > 1836 __CZ__eps) { 1837 epsilon(eps); 1838##return 21; 1839 } 1840 if (abs 1841 (hurwitzzeta(-5.2 - 5.6i, -2.2) - 1842 (-0.2104165672779048392846890114 + 1.106842659781205784424725697i)) > 1843 __CZ__eps) { 1844 epsilon(eps); 1845 return 22; 1846 } 1847 if (abs 1848 (hurwitzzeta(5.2 + 5.6i, 2.2 + 2.6i) - 1849 (0.10228577464688104933513226525 + 0.2344359367956833252781356235i)) > 1850 __CZ__eps) { 1851 epsilon(eps); 1852 return 23; 1853 } 1854 if (abs 1855 (hurwitzzeta(5.2 + 5.6i, 2.2 - 2.6i) - 1856 (-0.000005879828833971610476305738830 - 1857 0.000001047520361040864830120054308i)) > __CZ__eps) { 1858 epsilon(eps); 1859 return 24; 1860 } 1861 if (abs 1862 (hurwitzzeta(5.2 + 5.6i, -2.2 + 2.6i) - 1863 (330.37403168831191021183 + 207.41259747950966196661i)) > __CZ__eps) { 1864 epsilon(eps); 1865##return 25; 1866 } 1867 if (abs 1868 (hurwitzzeta(5.2 + 5.6i, -2.2 - 2.6i) - 1869 (-0.0000000696683752518857692716375 - 1870 0.0000000517200890759579067258627i)) > __CZ__eps) { 1871 epsilon(eps); 1872##return 26; 1873 } 1874 epsilon(eps); 1875 return 0; 1876} 1877 1878/* test 06 tests zeta(s) 1879 * 1880 * Zero with smallest imaginary part 1881 * 1/2+14.13472514173469379045725198i 0 1882 */ 1883define t06() 1884{ 1885 local eps; 1886 eps = epsilon(1e-20); 1887 if (abs(zeta(2) - (1.644934066848226436472415167)) > __CZ__eps) { 1888 epsilon(eps); 1889 return 1; 1890 } 1891 if (!iserror(zeta(1))) { 1892 epsilon(eps); 1893 return 2; 1894 } 1895 if (abs(zeta(3) - (1.202056903159594285399738162)) > __CZ__eps) { 1896 epsilon(eps); 1897 return 3; 1898 } 1899 if (abs(zeta(-3) - (1 / 120)) > __CZ__eps) { 1900 epsilon(eps); 1901 return 4; 1902 } 1903 if (abs 1904 (zeta(5.5 + 5.6i) - 1905 (0.985921045907062298613817 + 0.014724913951794894908415i)) > 1906 __CZ__eps) { 1907 epsilon(eps); 1908 return 5; 1909 } 1910 if (abs 1911 (zeta(5.2 - 5.6i) - 1912 (0.9829916458246897306781279065 - 0.01804690180657353497603622245i)) > 1913 __CZ__eps) { 1914 epsilon(eps); 1915 return 6; 1916 } 1917 if (abs 1918 (zeta(-5.2 + 5.6i) - 1919 (-1.101851386544252162781870264 - 0.1426833937495229821744935458i)) > 1920 __CZ__eps) { 1921 epsilon(eps); 1922 return 7; 1923 } 1924 if (abs 1925 (zeta(-5.2 - 5.6i) - 1926 (-1.101851386544252162781870264 + 0.1426833937495229821744935458i)) > 1927 __CZ__eps) { 1928 epsilon(eps); 1929 return 8; 1930 } 1931 epsilon(eps); 1932 return 0; 1933} 1934 1935define t07() 1936{ 1937 local eps; 1938 eps = epsilon(1e-20); 1939 if (!iserror(harmonic(0))) { 1940 epsilon(eps); 1941 return 1; 1942 } 1943 if (harmonic(1) - 1 != 0) { 1944 epsilon(eps); 1945 return 2; 1946 } 1947 if (harmonic(3) - 11 / 6 != 0) { 1948 epsilon(eps); 1949 return 3; 1950 } 1951 if (harmonic(10) - 7381 / 2520 != 0) { 1952 epsilon(eps); 1953 return 4; 1954 } 1955 if (harmonic(100) - (14466636279520351160221518043104131447711 / 1956 2788815009188499086581352357412492142272) != 0) { 1957 epsilon(eps); 1958 return 5; 1959 } 1960 epsilon(eps); 1961 return 0; 1962} 1963define t08() 1964{ 1965 local eps; 1966 eps = epsilon(1e-20); 1967 if ((doublefactorial(10) - 3840) != 0) { 1968 epsilon(eps); 1969 return 1; 1970 } 1971 1972 if ((doublefactorial(11) - 10395) != 0) { 1973 epsilon(eps); 1974 return 2; 1975 } 1976 1977 if (abs((doublefactorial(-11) - (-1 / 945))) > __CZ__eps) { 1978 epsilon(eps); 1979 return 3; 1980 } 1981 1982 if (!iserror(doublefactorial(-10))) { 1983 epsilon(eps); 1984 return 4; 1985 } 1986 1987 if (abs 1988 ((doublefactorial(5.2) - 1989 18.37288214375756118207669378072506887684550012806364822857845)) > 1990 __CZ__eps) { 1991 epsilon(eps); 1992 return 7; 1993 } 1994 if (abs 1995 ((doublefactorial(-5.2) - 1996 0.310704476688173329838586027938765271259515590892296917353047)) > 1997 __CZ__eps) { 1998 epsilon(eps); 1999 return 8; 2000 } 2001 epsilon(eps); 2002 return 0; 2003} 2004define t09() 2005{ 2006 local eps; 2007 eps = epsilon(1e-20); 2008 if ((stirling1(10, 0) - (0)) != 0) { 2009 epsilon(eps); 2010 return 1; 2011 } 2012 if ((stirling1(0, 10) - (0)) != 0) { 2013 epsilon(eps); 2014 return 2; 2015 } 2016 if ((stirling1(0, 0) - (1)) != 0) { 2017 epsilon(eps); 2018 return 3; 2019 } 2020 if ((stirling1(10, 10) - (1)) != 0) { 2021 epsilon(eps); 2022 return 4; 2023 } 2024 if ((stirling1(10, 1) - (-362880)) != 0) { 2025 epsilon(eps); 2026 return 5; 2027 } 2028 if ((stirling1(10, 5) - (-269325)) != 0) { 2029 epsilon(eps); 2030 return 6; 2031 } 2032 epsilon(eps); 2033 return 0; 2034} 2035 2036define t010() 2037{ 2038 local eps; 2039 eps = epsilon(1e-20); 2040 if ((stirling2(10, 0) - (0)) != 0) { 2041 epsilon(eps); 2042 return 1; 2043 } 2044 if ((stirling2(0, 10) - (0)) != 0) { 2045 epsilon(eps); 2046 return 2; 2047 } 2048 if ((stirling2(0, 0) - (1)) != 0) { 2049 epsilon(eps); 2050 return 3; 2051 } 2052 if ((stirling2(10, 10) - (1)) != 0) { 2053 epsilon(eps); 2054 return 4; 2055 } 2056 if ((stirling2(10, 1) - (1)) != 0) { 2057 epsilon(eps); 2058 return 5; 2059 } 2060 /* 2061 * Once, when an expression such as 0^(6-6) returned 0, 2062 * then stirling2(10, 5) == 42525. However when we made9 2063 * 0^(6-6) == 0^0 == 1, then stirling2(10, 5) == 5102999/120. 2064 */ 2065 if ((stirling2(10, 5) - (5102999/120)) != 0) { 2066 epsilon(eps); 2067 return 6; 2068 } 2069 epsilon(eps); 2070 return 0; 2071} 2072define t011() 2073{ 2074 local eps; 2075 eps = epsilon(1e-20); 2076 if ((stirling2caching(10, 0) - (0)) != 0) { 2077 epsilon(eps); 2078 return 1; 2079 } 2080 if ((stirling2caching(0, 10) - (0)) != 0) { 2081 epsilon(eps); 2082 return 2; 2083 } 2084 if ((stirling2caching(0, 0) - (1)) != 0) { 2085 epsilon(eps); 2086 return 3; 2087 } 2088 if ((stirling2caching(10, 10) - (1)) != 0) { 2089 epsilon(eps); 2090 return 4; 2091 } 2092 if ((stirling2caching(10, 1) - (1)) != 0) { 2093 epsilon(eps); 2094 return 5; 2095 } 2096 if ((stirling2caching(10, 5) - (42525)) != 0) { 2097 epsilon(eps); 2098 return 6; 2099 } 2100 epsilon(eps); 2101 return 0; 2102} 2103 2104define t012() 2105{ 2106 local eps; 2107 eps = epsilon(1e-20); 2108 if ((bell(0) - (1)) != 0) { 2109 epsilon(eps); 2110 return 1; 2111 } 2112 if ((bell(1) - (1)) != 0) { 2113 epsilon(eps); 2114 return 2; 2115 } 2116 epsilon(eps); 2117 if ((bell(2) - (2)) != 0) { 2118 epsilon(eps); 2119 return 3; 2120 } 2121 if ((bell(5) - (52)) != 0) { 2122 epsilon(eps); 2123 return 4; 2124 } 2125 if ((bell(10) - (115975)) != 0) { 2126 epsilon(eps); 2127 return 5; 2128 } 2129 return 0; 2130} 2131 2132define t013() 2133{ 2134 local eps; 2135 eps = epsilon(1e-20); 2136 if ((subfactorial(0) - (1)) != 0) { 2137 epsilon(eps); 2138 return 1; 2139 } 2140 if ((subfactorial(1) - (0)) != 0) { 2141 epsilon(eps); 2142 return 2; 2143 } 2144 if ((subfactorial(10) - (1334961)) != 0) { 2145 epsilon(eps); 2146 return 3; 2147 } 2148 epsilon(eps); 2149 return 0; 2150} 2151 2152define t014() 2153{ 2154 local eps; 2155 eps = epsilon(1e-20); 2156 if ((risingfactorial(1, 0) - (1)) != 0) { 2157 epsilon(eps); 2158 return 1; 2159 } 2160 if ((risingfactorial(10, 5) - (240240)) != 0) { 2161 epsilon(eps); 2162 return 2; 2163 } 2164 if (abs(risingfactorial(10.5, 5.5) - (1153886.265503555482030983579)) > 2165 __CZ__eps) { 2166 epsilon(eps); 2167##return 3; 2168 } 2169 if (abs 2170 (risingfactorial(5.5 + 5.6i, 2.2 + 2.6i) - 2171 (3.368463696973104283045428256 + 14.07030243790744467421234172i)) > 2172 __CZ__eps) { 2173 epsilon(eps); 2174 return 4; 2175 } 2176 epsilon(eps); 2177 return 0; 2178} 2179 2180define t015() 2181{ 2182 local eps; 2183 eps = epsilon(1e-20); 2184 if ((bigcatalan(0) - (1)) != 0) { 2185 epsilon(eps); 2186 return 1; 2187 } 2188 if ((bigcatalan(1) - (1)) != 0) { 2189 epsilon(eps); 2190 return 2; 2191 } 2192 if ((bigcatalan(10) - (16796)) != 0) { 2193 epsilon(eps); 2194 return 3; 2195 } 2196 if ((bigcatalan(100) - 2197 (896519947090131496687170070074100632420837521538745909320)) != 0) { 2198 epsilon(eps); 2199 return 4; 2200 } 2201 epsilon(eps); 2202 return 0; 2203} 2204 2205define t016() 2206{ 2207 local eps; 2208 eps = epsilon(1e-20); 2209 if ((binomial(0, 0) - (1)) != 0) { 2210 epsilon(eps); 2211 return 1; 2212 } 2213 if ((binomial(1, 0) - (1)) != 0) { 2214 epsilon(eps); 2215 return 2; 2216 } 2217 if ((binomial(10, 5) - (252)) != 0) { 2218 epsilon(eps); 2219 return 3; 2220 } 2221 if ((binomial(100, 50) - (100891344545564193334812497256)) != 0) { 2222 epsilon(eps); 2223 return 4; 2224 } 2225 if ((binomial(1000, 500) - (comb(1000, 500))) != 0) { 2226 epsilon(eps); 2227 return 5; 2228 } 2229 epsilon(eps); 2230 return 0; 2231} 2232 2233define t017() 2234{ 2235 local eps; 2236 eps = epsilon(1e-20); 2237 2238 if ((factorial(20) - (2432902008176640000)) != 0) { 2239 epsilon(eps); 2240 return 1; 2241 } 2242 if ((factorial(100) - (100 !)) != 0) { 2243 epsilon(eps); 2244 return 2; 2245 } 2246 epsilon(eps); 2247 return 0; 2248} 2249 2250define t018() 2251{ 2252 local eps; 2253 eps = epsilon(1e-20); 2254 if ((primorial(3, 100) - (1152783981972759212376551073665878035)) != 0) { 2255 epsilon(eps); 2256 return 1; 2257 } 2258 if ((primorial(0, 20000) - (pfact(20000))) != 0) { 2259 epsilon(eps); 2260 return 2; 2261 } 2262 if ((primorial(50, 100) - (3749562977351496827)) != 0) { 2263 epsilon(eps); 2264 return 3; 2265 } 2266 epsilon(eps); 2267 return 0; 2268} 2269 2270define t019() 2271{ 2272 local eps; 2273 eps = epsilon(1e-20); 2274 if ((toomcook3(161 !, 171 !) - (161 ! *171 !)) != 0) { 2275 epsilon(eps); 2276 return 1; 2277 } 2278 epsilon(eps); 2279 return 0; 2280} 2281 2282define t020() 2283{ 2284 local eps; 2285 eps = epsilon(1e-20); 2286 if ((toomcook3square(161 !) - (161 ! ^2)) != 0) { 2287 epsilon(eps); 2288 return 1; 2289 } 2290 epsilon(eps); 2291 return 0; 2292} 2293 2294define t021() 2295{ 2296 local eps; 2297 eps = epsilon(1e-20); 2298 if ((toomcook4(561 !, 571 !) - (561 ! *571 !)) != 0) { 2299 epsilon(eps); 2300 return 1; 2301 } 2302 epsilon(eps); 2303 return 0; 2304} 2305 2306define t022() 2307{ 2308 local eps; 2309 eps = epsilon(1e-20); 2310 if ((toomcook4square(561 !) - (561 ! ^2)) != 0) { 2311 epsilon(eps); 2312 return 1; 2313 } 2314 epsilon(eps); 2315 return 0; 2316} 2317 2318define t023() 2319{ 2320 local eps; 2321 eps = epsilon(1e-20); 2322 if ((fallingfactorial(1, 0) - (1)) != 0) { 2323 epsilon(eps); 2324 return 1; 2325 } 2326 if ((fallingfactorial(10, 5) - (30240)) != 0) { 2327 epsilon(eps); 2328 return 2; 2329 } 2330 if (abs(fallingfactorial(10.5, 5.5) - (99161.85903301873714177523949)) > 2331 __CZ__eps) { 2332 epsilon(eps); 2333 return 3; 2334 } 2335 if (abs 2336 (fallingfactorial(5.5 + 5.6i, 2.2 + 2.6i) - 2337 (9.29931208830258420309197062886 + 1.28691176641462072673306933720i)) > 2338 __CZ__eps) { 2339 epsilon(eps); 2340 return 4; 2341 } 2342 epsilon(eps); 2343 return 0; 2344} 2345 2346define t024() 2347{ 2348 local eps; 2349 eps = epsilon(1e-20); 2350 if (abs 2351 (gammainc(10.5, 5.5) - 2352 (1.0911054922884267714587707298319763515031034460618e6)) > __CZ__eps) { 2353 epsilon(eps); 2354 return 1; 2355 } 2356 2357 if (abs 2358 (gammainc(-10.5, 5.5) - 2359 (4.2078651459391823080015064331563180161168802280640e-12)) > 2360 __CZ__eps) { 2361 epsilon(eps); 2362 return 2; 2363 } 2364 2365 if (abs 2366 (gammainc(-10.5, -5.5) - 2367 (-2.6401218205477163162463853253112404396824684325226e-7 - 2368 9.9525091595256241288827723005552353976489914201570e-7i)) > 2369 __CZ__eps) { 2370 epsilon(eps); 2371 return 3; 2372 } 2373 if (abs 2374 (gammainc(1.5, .5) - 2375 (0.71009105827755696037984229929040777357378308627454)) > __CZ__eps) { 2376 epsilon(eps); 2377 return 4; 2378 } 2379 if (abs 2380 (gammainc(1.5, -.5) - 2381 (0.88622692545275801364908374167057259139877472806119 + 2382 0.32085932483101833896117715124223338525178610972460i)) > __CZ__eps) { 2383 epsilon(eps); 2384 return 5; 2385 } 2386 if (abs 2387 (gammainc(-1.5, -.5) - 2388 (2.3632718012073547030642233111215269103967326081632 + 2389 3.9644835083455478417145204862038235291784113581824i)) > __CZ__eps) { 2390 epsilon(eps); 2391 return 6; 2392 } 2393 if (abs 2394 (gammainc(1.6 + 2.3i, 2.3 + 1.4i) - 2395 (-0.023112977574442024349110845737131658924522434973607 + 2396 0.070013601354006150597855752670117927127985847641410i)) > 2397 __CZ__eps) { 2398 epsilon(eps); 2399 return 7; 2400 } 2401 if (abs 2402 (gammainc(-1.6 + 2.3i, 2.3 + 1.4i) - 2403 (0.00129628045952650890786497724124399230099593819048313 + 2404 0.00015977289383944841440851534670535231366264702893907i)) > 2405 __CZ__eps) { 2406 epsilon(eps); 2407 return 8; 2408 } 2409 if (abs 2410 (gammainc(1.6 + 2.3i, -2.3 + 1.4i) - 2411 (0.08011526555206793146266272247818512925483090324121 + 2412 0.18864341054002800687777400618294098230871057870324i)) > __CZ__eps) { 2413 epsilon(eps); 2414 return 9; 2415 } 2416 if (abs 2417 (gammainc(-1.6 + 2.3i, -2.3 + 1.4i) - 2418 (-0.0011066646302249434949283340601015297970855623709232 + 2419 0.0066140667340761534747256896056105993963563038859892i)) > 2420 __CZ__eps) { 2421 epsilon(eps); 2422 return 10; 2423 } 2424 if (abs 2425 (gammainc(-1.6 + 2.3i, -2.3 - 1.4i) - 2426 (-192.26502410894853081990761345498010642885875566887 - 2427 9.20687819570448375251655049593050937346609469761i)) > __CZ__eps) { 2428 epsilon(eps); 2429 return 11; 2430 } 2431 if (abs 2432 (gammainc(-1.6 - 2.3i, -2.3 - 1.4i) - 2433 (-0.0011066646302249434949283340601015297970855623709232 - 2434 0.0066140667340761534747256896056105993963563038859892i)) > 2435 __CZ__eps) { 2436 epsilon(eps); 2437 return 11; 2438 } 2439 epsilon(eps); 2440 return 0; 2441} 2442 2443define t025() 2444{ 2445 local eps; 2446 eps = epsilon(1e-20); 2447 if (abs 2448 (expoint(12) - (14959.5326663975288522924618760575328096988328805595)) > 2449 __CZ__eps) { 2450 epsilon(eps); 2451 return 1; 2452 } 2453 if (abs 2454 (expoint(-12) - 2455 (-4.75108182467249393259461269666144183573679127590926e-7)) > 2456 __CZ__eps) { 2457 epsilon(eps); 2458 return 2; 2459 } 2460 if (abs 2461 (expoint(1.2) - 2462 (2.44209228519265163972909726430649285323724645317842)) > __CZ__eps) { 2463 epsilon(eps); 2464 return 3; 2465 } 2466 if (abs 2467 (expoint(-1.2) - 2468 (-0.158408436851462561424955970710861738534157976840579)) > 2469 __CZ__eps) { 2470 epsilon(eps); 2471 return 4; 2472 } 2473 if (abs 2474 (expoint(12 + 12i) - 2475 (1705.83261134074122070523718220504604600321580158721 - 2476 9839.85856317985996646693634577761869375870438645474i)) > __CZ__eps) { 2477 epsilon(eps); 2478 return 5; 2479 } 2480 if (abs 2481 (expoint(12 - 12i) - 2482 (1705.83261134074122070523718220504604600321580158721 + 2483 9839.85856317985996646693634577761869375870438645474i)) > __CZ__eps) { 2484 epsilon(eps); 2485 return 6; 2486 } 2487 if (abs 2488 (expoint(-12 + 12i) - 2489 (-3.4169734885007076190668662199892409755505147e-7 + 2490 3.14159259071528119035402366471290026841357196537325i)) > __CZ__eps) { 2491 epsilon(eps); 2492 return 7; 2493 } 2494 if (abs 2495 (expoint(12i) - 2496 (-0.04978000688411367559592120873699061022711118653376 + 2497 3.07576756832126998975847022375791405102780057904392i)) > __CZ__eps) { 2498 epsilon(eps); 2499 return 8; 2500 } 2501 if (abs 2502 (expoint(-12i) - 2503 (-0.04978000688411367559592120873699061022711118653376 - 2504 3.07576756832126998975847022375791405102780057904392i)) > __CZ__eps) { 2505 epsilon(eps); 2506 return 9; 2507 } 2508 /* problem with checking, result is correct for more than 20 dec. 2509 digits starting from the left */ 2510 if (abs 2511 (expoint(120 + 12i) - 2512 (8.56859444638801538211461026892024105606765234361709e49 - 2513 6.74517461831409343681783273107064901497483026647260e49i)) > 2514 __CZ__eps) { 2515##epsilon(eps); 2516##return 10; 2517 } 2518 if (abs 2519 (expoint(-120 + 12i) - 2520 (+3.14159265358979323846264338327950288419716939937511i)) > 2521 __CZ__eps) { 2522 epsilon(eps); 2523 return 11; 2524 } 2525 if (abs 2526 (expoint(-120 - 12i) - 2527 (-3.14159265358979323846264338327950288419716939937511i)) > 2528 __CZ__eps) { 2529 epsilon(eps); 2530 return 12; 2531 } 2532 epsilon(eps); 2533 return 0; 2534} 2535 2536define t026() 2537{ 2538 local eps; 2539 eps = epsilon(1e-20); 2540 2541 if (abs(erf(-120 - 12i) - (-1)) > __CZ__eps) { 2542 epsilon(eps); 2543 return 1; 2544 } 2545 if (abs(erf(99.99) - (1)) > __CZ__eps) { 2546 epsilon(eps); 2547 return 2; 2548 } 2549 /* 45 dec. digits for eps=1e-50 */ 2550 if (abs(erf(9.99) - (0.9999999999999999999999999999999999999999999974468)) > 2551 __CZ__eps) { 2552 epsilon(eps); 2553 return 3; 2554 } 2555 if (abs 2556 (erf(-2.3 - 1.4i) - 2557 (-0.99424424422056398724487886415624629344477362313756 - 2558 0.00438943284364679943396666714992729629504347523747i)) > __CZ__eps) { 2559 epsilon(eps); 2560 return 4; 2561 } 2562 if (abs(erf(-2.3) - (-0.99885682340264334853465254061923085980585130855731)) 2563 > __CZ__eps) { 2564 epsilon(eps); 2565 return 5; 2566 } 2567 if (abs(erf(2.3) - (0.99885682340264334853465254061923085980585130855731)) > 2568 __CZ__eps) { 2569 epsilon(eps); 2570 return 6; 2571 } 2572 if (abs(erf(.99) - (0.83850806955536980357979023052992329627081601140813)) > 2573 __CZ__eps) { 2574 epsilon(eps); 2575 return 7; 2576 } 2577 2578 epsilon(eps); 2579 return 0; 2580} 2581 2582/* The rest of the error functions are just slight variations and get only one 2583 test to check if they are implemented at all. */ 2584define t027() 2585{ 2586 local eps; 2587 eps = epsilon(1e-20); 2588 if (abs(erfc(.99) - (0.16149193044463019642020976947007670372918398859187)) 2589 > __CZ__eps) { 2590 epsilon(eps); 2591 return 1; 2592 } 2593 epsilon(eps); 2594 return 0; 2595} 2596 2597define t028() 2598{ 2599 local eps; 2600 eps = epsilon(1e-20); 2601 if (abs(erfi(.99) - (1.6200569163157349040754017322766470558922229178510)) > 2602 __CZ__eps) { 2603 epsilon(eps); 2604 return 1; 2605 } 2606 epsilon(eps); 2607 return 0; 2608} 2609 2610define t029() 2611{ 2612 local eps; 2613 eps = epsilon(1e-20); 2614 if (abs 2615 (faddeeva(.99) - 2616 (0.37527356961800734273134990254630990179418484551111 + 2617 0.60796454197014723823608088189149188617146675891187i)) > __CZ__eps) { 2618 epsilon(eps); 2619 return 1; 2620 } 2621 epsilon(eps); 2622 return 0; 2623} 2624 2625/* 2626 The beta function is implemented by way of the gamma function, so only one 2627 check if it is implemented at all. 2628 Such the author thought but had the surprise of an rounding error and had to 2629 raise the precision internally for the beta function. 2630 And the moral of the story is... 2631*/ 2632define t030() 2633{ 2634 local eps; 2635 eps = epsilon(1e-20); 2636 if (abs 2637 (beta(1.3 + 2.4i, -4.5 - 5.6i) - 2638 (0.000034922633369217658778094854951087306276597448077494 - 2639 0.000016960351329535510681653275397511166236842713819260i)) > 2640 __CZ__eps) { 2641 epsilon(eps); 2642 return 1; 2643 } 2644 epsilon(eps); 2645 return 0; 2646} 2647 2648define t031() 2649{ 2650 local eps; 2651 eps = epsilon(1e-20); 2652 if (abs(betainc(1 / 2, 3, 2) - (5 / 16)) > __CZ__eps) { 2653 epsilon(eps); 2654 return 1; 2655 } 2656 if (abs 2657 (betainc(1 / 2, 3.2, 2.2) - 2658 (0.32023348284114229739228778858728452204329664688830)) > __CZ__eps) { 2659 epsilon(eps); 2660 return 2; 2661 } 2662 if (abs 2663 (betainc(1 / exp(1), 3.2, 2.2) - 2664 (0.143501414415760044882767192140002923147960247904570923787840)) > 2665 __CZ__eps) { 2666 epsilon(eps); 2667 return 3; 2668 } 2669 if (abs 2670 (betainc(1 / exp(1), 3.2 + 2.2i, 2.2 + 3.2i) - 2671 (0.1920631154241732316251688573913064389571283459161802570675 + 2672 0.05732686873367104592514061113957628848615221217965454321767i)) > 2673 __CZ__eps) { 2674 epsilon(eps); 2675 return 4; 2676 } 2677 if (abs 2678 (betainc(1 / exp(1), 3.2 - 2.2i, 2.2 + 3.2i) - 2679 (-1.607827926223643076788007453936176458240169077851360442476 + 2680 0.3252661246098073645694057662278573284778244036835313591942i)) > 2681 __CZ__eps) { 2682 epsilon(eps); 2683 return 5; 2684 } 2685 if (abs 2686 (betainc(1 / exp(1), 3.2 - 2.2i, 2.2 - 3.2i) - 2687 (0.1920631154241732316251688573913064389571283459161802570675 - 2688 0.05732686873367104592514061113957628848615221217965454321767i)) > 2689 __CZ__eps) { 2690 epsilon(eps); 2691 return 6; 2692 } 2693 2694 if (abs 2695 (betainc(.3 + .2i, 3.2 - 2.2i, 2.2 - 3.2i) - 2696 (0.14627145927962494526466549157120107465791647692488861570015 + 2697 0.34598256304551640762453165549710979002810660424791884148625i)) > 2698 __CZ__eps) { 2699 epsilon(eps); 2700 return 7; 2701 } 2702 epsilon(eps); 2703 return 0; 2704} 2705 2706define t032() 2707{ 2708 local eps; 2709 eps = epsilon(1e-20); 2710 if (abs(bernpoly(1, 10)) - (19 / 2) > __CZ__eps) { 2711 epsilon(eps); 2712 return 1; 2713 } 2714 if (abs(bernpoly(10, 10)) - (379041290105 / 66) > __CZ__eps) { 2715 epsilon(eps); 2716 return 2; 2717 } 2718 if (abs(bernpoly(-10, 10)) - 2719 (0.00000000015893950304018571788968681852452102762225) > __CZ__eps) { 2720 epsilon(eps); 2721 return 3; 2722 } 2723 if (abs(bernpoly(1.1, 10)) - 2724 (11.89799882840077795855328366923295539944336494342302) > __CZ__eps) { 2725 epsilon(eps); 2726 return 4; 2727 } 2728 if (abs(bernpoly(3, 1.1)) - (33 / 500) > __CZ__eps) { 2729 epsilon(eps); 2730 return 5; 2731 } 2732 if (abs(bernpoly(3, 1.1 + 2.2i)) - (-8.646 - 8.822i) > __CZ__eps) { 2733 epsilon(eps); 2734 return 6; 2735 } 2736 2737 epsilon(eps); 2738 return 0; 2739} 2740 2741define t033() 2742{ 2743 local eps epsexp EM1; 2744 eps = epsilon(1e-20); 2745 /* The Omega-constant */ 2746 if (abs 2747 (lambertw(1, 0) - 2748 (0.567143290409783872999968662210355549753815787186512508135131)) > 2749 __CZ__eps) { 2750 epsilon(eps); 2751 return 1; 2752 } 2753 if (abs 2754 (lambertw(-1, 0) - 2755 (-0.3181315052047641353126542515876645172035176138713998669223 + 2756 1.337235701430689408901162143193710612539502138460512418876i)) > 2757 __CZ__eps) { 2758 epsilon(eps); 2759 return 2; 2760 } 2761 if (abs(lambertw(-exp(-1), 0) - (-1)) > __CZ__eps) { 2762 epsilon(eps); 2763 return 3; 2764 } 2765/* 2766 We have to calculate -exp(1-) with higher precision here because the 2767 numbers we test against have been calculated with Mathematica(tm) and, 2768 where possible, with the series, too, with epsilon = 1e-200. 2769*/ 2770 epsexp = epsilon(epsilon() * 1e-10); 2771 EM1 = -exp(-1); 2772 epsilon(epsexp); 2773 if (abs 2774 (lambertw(EM1 + .001, 0) - 2775 (-0.92802015005456704876004302525492122474886334787070023086031)) > 2776 __CZ__eps) { 2777 epsilon(eps); 2778 return 4; 2779 } 2780 2781 if (abs 2782 (lambertw(EM1 - .001, 0) - 2783 (-0.998190161498609890007959968479276047800779184376006463826 + 2784 0.0736719118893463857740469900181632551190421844567768514726i)) > 2785 __CZ__eps) { 2786 epsilon(eps); 2787 return 5; 2788 } 2789 2790 if (abs 2791 (lambertw_series(EM1 - .001, epsilon(), 0) - 2792 (-0.998190161498609890007959968479276047800779184376006463826 + 2793 0.0736719118893463857740469900181632551190421844567768514726i)) > 2794 __CZ__eps) { 2795 epsilon(eps); 2796 return 6; 2797 } 2798 if (abs 2799 (lambertw(-2.2 - 3.2i, -3) - 2800 (-1.6104280970561586263262514675217857074068306154494786722437 - 2801 19.368888979715570028505505411206710993669557347359767961957i)) > 2802 __CZ__eps) { 2803 epsilon(eps); 2804 return 1; 2805 } 2806 epsilon(eps); 2807 return 0; 2808} 2809 2810/* Test the logarithm list, a bit different from the tests above.*/ 2811define t034() 2812{ 2813 local eps sum k; 2814 eps = epsilon(1e-20); 2815 2816 sum = 0; 2817 lnseries(10000); 2818 for (k = 1; k < 10000; k++) { 2819 sum += lnfromseries(k); 2820 } 2821 2822 if (abs(sum - lngamma(10000)) > __CZ__eps) { 2823 epsilon(eps); 2824 return 1; 2825 } 2826 epsilon(eps); 2827 return 0; 2828} 2829 2830define t035() 2831{ 2832 local eps; 2833 eps = epsilon(1e-20); 2834 if (abs(invbetainc(0, 1, 2) - (0)) > __CZ__eps) { 2835 epsilon(eps); 2836 return 1; 2837 } 2838 if (abs(invbetainc(1, 1, 2) - (1)) > __CZ__eps) { 2839 epsilon(eps); 2840 return 2; 2841 } 2842 if (abs 2843 (invbetainc(.6, 2, 2) - 2844 (0.567068922852268236254340214074933386511229358602804986856523)) > 2845 __CZ__eps) { 2846 epsilon(eps); 2847 return 3; 2848 } 2849 if (abs 2850 (invbetainc(.6, 200, 200) - 2851 0.50633738276018061834297937341956576111427477636401902379793) > 2852 __CZ__eps) { 2853 epsilon(eps); 2854 return 4; 2855 } 2856 if (abs 2857 (invbetainc(.6, 200, 100) - 2858 0.673912010450469394843418496081985274734344595591643614514860) > 2859 __CZ__eps) { 2860 epsilon(eps); 2861 return 5; 2862 } 2863 if (abs 2864 (invbetainc(.6, 100, 200) - 2865 0.339884769324050809456643025345905001680568878491743324211449) > 2866 __CZ__eps) { 2867 epsilon(eps); 2868 return 6; 2869 } 2870/* Percentiles. Numbers shamelessly stolen from a question at stackoverflow */ 2871 if (abs 2872 (invbetainc(0.025, 10008, 151744) - 2873 0.060703546312525377697082321820950758320207425674954679415395) > 2874 __CZ__eps) { 2875 epsilon(eps); 2876 return 7; 2877 } 2878 if (abs 2879 (invbetainc(0.5, 10008, 151744) - 2880 0.061870690413044293003568412977601333629269461143858842860376) > 2881 __CZ__eps) { 2882 epsilon(eps); 2883 return 8; 2884 } 2885 if (abs 2886 (invbetainc(0.975, 10008, 151744) - 2887 0.063051707940007549704137764265896313422520123493324715525400) > 2888 __CZ__eps) { 2889 epsilon(eps); 2890 return 9; 2891 } 2892 /* 3 sigma. But _way_ too slow. */ 2893 if (abs 2894 (invbetainc(0.997, 10008, 151744) - 2895 0.06353033717730117616403237097166742264875876591597) > __CZ__eps) { 2896 epsilon(eps); 2897 return 10; 2898 } 2899 2900 epsilon(eps); 2901 return 0; 2902} 2903 2904/* Quadrature. Test values stolen, without any shame, from mpmath*/ 2905define f(x){return sin(x);} 2906define t036(){ 2907 local eps; 2908 eps = epsilon(1e-20); 2909 2910 if( abs( quadts(0,pi()) - 2 )> __CZ__eps){ 2911 epsilon(eps); 2912 return 1; 2913 } 2914 if( abs( quadts(0,pi()) - 2 )> __CZ__eps){ 2915 epsilon(eps); 2916 return 2; 2917 } 2918 epsilon(eps); 2919 return 0; 2920} 2921/* every test would need an extra file 2922define f(x){ return 2/(x**2+1);} 2923define t037(){ 2924 local eps; 2925 eps = epsilon(1e-20); 2926 2927 if( abs( quadts(0,pinf()) - pi() )> __CZ__eps){ 2928 2929 epsilon(eps); 2930 return 1; 2931 } 2932 if( abs( quadgl(0,pinf()) - pi() )> __CZ__eps){ 2933 2934 epsilon(eps); 2935 return 2; 2936 } 2937 undefine f; 2938 epsilon(eps); 2939 return 0; 2940} 2941define f(x){ return exp(-x^2);} 2942define t038(){ 2943 local eps; 2944 eps = epsilon(1e-20); 2945 if( abs( quadgl(ninf(),pinf()) - sqrt(pi()) )> __CZ__eps){ 2946 2947 epsilon(eps); 2948 return 1; 2949 } 2950 if( abs( quadts(ninf(),pinf()) - sqrt(pi()) )> __CZ__eps){ 2951 2952 epsilon(eps); 2953 return 2; 2954 } 2955 undefine f; 2956 epsilon(eps); 2957 return 0; 2958} 2959define f(x){ return 1/x; } 2960define t039(){ 2961 local eps; 2962 eps = epsilon(1e-20); 2963 if( abs( quadts(1,1,mat[3]={1i,-1,-1i}) - 2i*pi() )> __CZ__eps){ 2964 2965 epsilon(eps); 2966 return 1; 2967 } 2968 if( abs( quadgl(1,1,mat[3]={1i,-1,-1i}) - 2i*pi() )> __CZ__eps){ 2969 2970 epsilon(eps); 2971 return 2; 2972 } 2973 undefine f; 2974 epsilon(eps); 2975 return 0; 2976} 2977define f(x){ return abs(sin(x));} 2978define t040(){ 2979 local eps; 2980 eps = epsilon(1e-20); 2981 if( abs( quadts(0,2*pi(),mat[1]={pi()}) - 4 )> __CZ__eps){ 2982 2983 epsilon(eps); 2984 return 9; 2985 } 2986 if( abs( quadgl(0,2*pi(),mat[1]={pi()}) - 4 )> __CZ__eps){ 2987 2988 epsilon(eps); 2989 return 10; 2990 } 2991 undefine f; 2992 epsilon(eps); 2993 return 0; 2994} 2995*/ 2996/* Symbolic infinities */ 2997define t037(){ 2998 local eps; 2999 eps = epsilon(1e-20); 3000 if( !isinfinite(cinf()) ){ 3001 epsilon(eps); 3002 return 1; 3003 } 3004 if( !isinfinite(pinf()) ){ 3005 epsilon(eps); 3006 return 2; 3007 } 3008 if( !isinfinite(ninf())){ 3009 epsilon(eps); 3010 return 3; 3011 } 3012 if(!iscinf(cinf()) ){ 3013 epsilon(eps); 3014 return 4; 3015 } 3016 if( !ispinf(pinf())){ 3017 epsilon(eps); 3018 return 5; 3019 } 3020 if(!isninf(ninf()) ){ 3021 epsilon(eps); 3022 return 6; 3023 } 3024 3025 epsilon(eps); 3026 return 0; 3027} 3028 3029/* */ 3030/*define t038(){ 3031 local eps; 3032 eps = epsilon(1e-20); 3033 if( abs( ) - ( )> __CZ__eps){ 3034 epsilon(eps); 3035 return 1; 3036 } 3037 3038 epsilon(eps); 3039 return 0; 3040}*/ 3041 3042 3043/* 3044 * The main test8900 test section harness 3045 * 3046 * The regress.cal calls this function as: 3047 * 3048 * testnum = test8900(1,, 8903); 3049 */ 3050define test8900(verbose = 0, tnum, testnum = 8903) 3051{ 3052 local n; 3053 local err; /* do not forget to delete! */ 3054 local i, old_errmax; 3055 3056 /* 3057 * parse args 3058 */ 3059 n = 37; /* number of subtests */ 3060 if (isnull(verbose)) { 3061 verbose = 0; 3062 } 3063 if (isnull(tnum)) { 3064 tnum = 1; /* initial test number */ 3065 } 3066 3067 /* 3068 * run just one test 3069 */ 3070 else { 3071 err = eval(strcat("t0", str(tnum), "()")); 3072 if (verbose) { 3073 if (err) { 3074 print "*** error", err, 3075 ": found in test8900.cal function test", strcat("t0", 3076 str(tnum)); 3077 } else { 3078 print "no errors in test", strcat("t0", str(tnum)); 3079 } 3080 } 3081 return tnum; 3082 } 3083 3084 /* We will cause errors intentionally. A lot of them. */ 3085 old_errmax = errmax(-1); 3086 3087 /* 3088 * test a lot of stuff 3089 */ 3090 for (i = 0; i < n; ++i) { 3091 3092 /* run a test */ 3093 err += eval(strcat("t0", str(tnum++), "()")); 3094 3095 if (verbose) { 3096 if (err) { 3097 print "*** error", err, "in test", testnum:":", strcat("t0", 3098 str(tnum - 1), "()"), 3099 " - ", 3100 eval(strcat("t0", str(tnum - 1), "()")); 3101 } else { 3102 print testnum:": no errors in test", strcat("t0", 3103 str(tnum - 1)); 3104 } 3105 } 3106 ++testnum; 3107 } 3108 if (verbose) { 3109 if (err) { 3110 print "***", testnum:":", err, 3111 "error(s) found in test8900.cal"; 3112 } else { 3113 print testnum:":", "no errors in test8900.cal"; 3114 } 3115 } 3116 ++testnum; 3117 3118 /* restore error maximum */ 3119 errmax(old_errmax); 3120 return testnum; 3121} 3122