/* * test8900 - 8900 series of the regress.cal test suite * * Copyright (C) 2013,2021 Christoph Zurnieden * * Calc is open software; you can redistribute it and/or modify it under * the terms of the version 2.1 of the GNU Lesser General Public License * as published by the Free Software Foundation. * * Calc is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * Public License for more details. * * A copy of version 2.1 of the GNU Lesser General Public License is * distributed with calc under the filename COPYING-LGPL. You should have * received a copy with calc; if not, write to Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Under source code control: 2013/08/11 01:31:28 * File existed as early as: 2013 */ static __CZ__eps = 1e-20; /* * load once, the calc resource functions contributed by Christoph Zurnieden */ read -once bernpoly.cal; read -once brentsolve.cal; read -once constants.cal; read -once factorial.cal; read -once factorial2.cal; read -once lambertw.cal; read -once lnseries.cal; read -once specialfunctions.cal; read -once statistics.cal; read -once toomcook.cal; read -once zeta2.cal; read -once intnum.cal; /* * tests of correctness of the functions implemented by the above listed * author. All values tested against have been computed with at least two * independent algorithms where possible (indicated if not). */ define t01() { local eps; eps = epsilon(1e-20); if (gamma(5) != 24) { epsilon(eps); return 1; } if (!iserror(gamma(-5))) { epsilon(eps); return 2; } if (abs(gamma(-5.5) - 0.01091265478190986298673234429) > __CZ__eps) { epsilon(eps); return 3; } if (abs (gamma(5.5 + 5.5i) - (-3.760669488993539011972109411 - 1.068828791178021218008599278i)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (gamma(-5.5 + 5.5i) - (-0.0000000031513765339396 - 0.00000000565396294185819i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (gamma(-5.5 - 5.5i) - (-0.0000000031513765339396 + 0.00000000565396294185819i)) > __CZ__eps) { epsilon(eps); return 5; } epsilon(eps); return 0; } /* test 02 tests lngamma(z) as ln(gamma(z))for a lot of values. Twice. */ define t02(type) { local eps k; eps = epsilon(1e-20); if (!isnull(type)) { /* test lngamma to higher precision */ epsilon(1e-50) } if (!iserror(lngamma(-5))) { epsilon(eps); return 1; } if (abs (lngamma(-4.400) - (-2.602796356578054085860353775504851660134124890968895 + 9.424777960769379715387930149838508652591508198125317i)) > __CZ__eps) { epsilon(eps); return 2; } if (abs (lngamma(-3.400) - (-1.121191815653838606981937409307733431762519256939740 + 12.566370614359172953850573533118011536788677597500423i)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (lngamma(-2.400) - (0.1025836159682770986668378753392054643000824013774864 + 3.1415926535897932384626433832795028841971693993751058i)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (lngamma(-1.400) - (0.9780523533221770342957880219518966655729718736522287 + 6.2831853071795864769252867665590057683943387987502116i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (lngamma(-0.4000) - (1.3145245899433899648003814321688887556844552489655721 - 3.1415926535897932384626433832795028841971693993751058i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (lngamma(0.6000) - (0.3982338580692348996168542204008776842343540290573096)) > __CZ__eps) { epsilon(eps); return 7; } if (abs (lngamma(1.600) - (-0.112591765696755783588659875902784250643756767388458)) > __CZ__eps) { epsilon(eps); return 8; } if (abs (lngamma(2.600) - (0.3574118635489797700622771552455578140571422814237894)) > __CZ__eps) { epsilon(eps); return 9; } if (abs (lngamma(3.600) - (1.3129233085764161315150052635846887793368088719154788)) > __CZ__eps) { epsilon(eps); return 10; } if (abs (lngamma(4.600) - (2.5938571540384804491219685256617291171816887676527152)) > __CZ__eps) { epsilon(eps); return 11; } if (abs (lngamma(5.600) - (4.1199134575335297653279620242457375960984677282246333)) > __CZ__eps) { epsilon(eps); return 12; } if (abs (lngamma(55.60) - (166.72233170723938827069082693550384745200937091660266)) > __CZ__eps) { epsilon(eps); return 13; } if (abs (lngamma(56.60) - (170.74051490849592496269608464261138016300186635704956)) > __CZ__eps) { epsilon(eps); return 14; } if (abs (lngamma(57.60) - (174.77652389370506221274131245618033272827669850568250)) > __CZ__eps) { epsilon(eps); return 15; } if (abs (lngamma(58.60) - (178.83004646140690776801720420409007933842357893886075)) > __CZ__eps) { epsilon(eps); return 16; } if (abs (lngamma(59.60) - (182.90078115798987469935628513367638988912775224248394)) > __CZ__eps) { epsilon(eps); return 17; } if (abs (lngamma(60.60) - (186.98843673206117877516518619701249930553373579376865)) > __CZ__eps) { epsilon(eps); return 18; } if (abs (lngamma(61.60) - (191.09273162513644754284387036762182652754650758452049)) > __CZ__eps) { epsilon(eps); return 19; } if (abs (lngamma(62.60) - (195.21339349567592163624487159872030105363069808249176)) > __CZ__eps) { epsilon(eps); return 20; } if (abs (lngamma(63.60) - (199.35015877378197447832287757475132376767819599656051)) > __CZ__eps) { epsilon(eps); return 21; } if (abs (lngamma(64.60) - (203.50277224412805093867906473893489617123556308738621)) > __CZ__eps) { epsilon(eps); return 22; } if (abs (lngamma(65.60) - (207.67098665491660710433686745546968860453554400700257)) > __CZ__eps) { epsilon(eps); return 23; } if (abs (lngamma(-4.400 + 0.3000i) - (-3.012170168780542935643977654089900903230224118194902 - 14.995647773931851220184151830452947610096345479769497i)) > __CZ__eps) { epsilon(eps); return 24; } if (abs (lngamma(-3.400 + 0.3000i) - (-1.528246633748315285937279325345084965509129720585190 - 11.922131578600057457117323569444702920656889937242177i)) > __CZ__eps) { epsilon(eps); return 25; } if (abs (lngamma(-2.400 + 0.3000i) - (-0.300593543742460500003778676081911614052942606849246 - 8.8685462985380049870334027293206734277553648141421909i)) > __CZ__eps) { epsilon(eps); return 26; } if (abs (lngamma(-1.400 + 0.3000i) - (0.5826272868794220627005984935520030051588811118590927 - 5.8513086394949731836021141952050415691313656065368892i)) > __CZ__eps) { epsilon(eps); return 27; } if (abs (lngamma(-0.4000 + 0.3000i) - (0.9415471834545804679163683919994364115087855350642294 - 2.9208093191279264919817355540741378979796654077163755i)) > __CZ__eps) { epsilon(eps); return 28; } if (abs (lngamma(0.6000 + 0.3000i) - (0.2484000028946351584991362705412598434332854007039741 - 0.4227177743314176403219013995119576518240065994565821i)) > __CZ__eps) { epsilon(eps); return 29; } if (abs (lngamma(1.600 + 0.3000i) - (-0.150853845214250646823230280607484839757524852967790 + 0.0409298346693884758923548319492567502045304548295381i)) > __CZ__eps) { epsilon(eps); return 30; } if (abs (lngamma(2.600 + 0.3000i) - (0.3364259747848147735313925008357736575841632119933041 + 0.2262777846650832407783807931778013947197968935401072i)) > __CZ__eps) { epsilon(eps); return 31; } if (abs (lngamma(3.600 + 0.3000i) - (1.2985503009218817344713757767544359650274299875210727 + 0.3411543900819823748030570769218348455327276444896884i)) > __CZ__eps) { epsilon(eps); return 32; } if (abs (lngamma(4.600 + 0.3000i) - (2.582944367806232942740645241786647084583876190810680103 + 0.4242956219704236047137253915726161430638589851177078492i)) > __CZ__eps) { epsilon(eps); return 33; } if (abs (lngamma(5.600 + 0.3000i) - (4.111122815491445860748560095878127604065278239877556104 + 0.4894207853048094882972548755277837179650295466696997973i)) > __CZ__eps) { epsilon(eps); return 34; } if (abs (lngamma(0.6000 - 4.700i) - (-6.309230474426685182917699027589840248465208901823736044 - 2.738444603265429259406748249023722438146218314171151425i)) > __CZ__eps) { epsilon(eps); return 35; } if (abs (lngamma(0.6000 - 3.700i) - (-4.762470602521331200619631143446813610218360030381255868 - 1.307861859626688811743330143389568763790196226980935860i)) > __CZ__eps) { epsilon(eps); return 36; } if (abs (lngamma(0.6000 - 2.700i) - (-3.223449159729432378435059551332376261824297133470481664 - 0.1525473639596832094518944287785664759918133343972275457i)) > __CZ__eps) { epsilon(eps); return 37; } if (abs (lngamma(0.6000 - 1.700i) - (-1.699851882736550416690203691424396333903393386464266356 + 0.6188153536675997046951505463300498363352953733225308151i)) > __CZ__eps) { epsilon(eps); return 38; } if (abs (lngamma(0.6000 - 0.7000i) - (-0.2316312495202586116986763277644377512618333134657045421 + 0.7368909799768367142682353753277667339824288570492360448i)) > __CZ__eps) { epsilon(eps); return 39; } if (abs (lngamma(0.6000 + 0.3000i) - (0.2484000028946351584991362705412598434332854007039741619 - 0.4227177743314176403219013995119576518240065994565821579i)) > __CZ__eps) { epsilon(eps); return 40; } if (abs (lngamma(0.6000 + 1.300i) - (-1.099689479936482253001126014071250387866864940802593030 - 0.7725489931464399068598744386748572974573591452933440189i)) > __CZ__eps) { epsilon(eps); return 41; } if (abs (lngamma(0.6000 + 2.300i) - (-2.611386294578008388513457987969729601048026532835562114 - 0.2111094845860104400425314901146665256344806614559790152i)) > __CZ__eps) { epsilon(eps); return 42; } if (abs (lngamma(0.6000 + 3.300i) - (-4.145670522984067490152016613422534092269675011415945298 + 0.8081928951523762121254890981027647840025857144095024771i)) > __CZ__eps) { epsilon(eps); return 43; } if (abs (lngamma(0.6000 + 4.300i) - (-5.689842576036527320491763306963824853139907301029281610 + 2.137677242374957442527694027866746053575410791317320138i)) > __CZ__eps) { epsilon(eps); return 44; } if (abs (lngamma(0.6000 + 5.300i) - (-7.239654605052715210182073623536904206104308839659326676 + 3.702857758072432142072497796069521049678127217607403327i)) > __CZ__eps) { epsilon(eps); return 45; } if (abs (lngamma(-4.400 - 4.700i) - (-14.73413592903136179653960750100174060012531669119348359 + 7.340768981905845672138265648506833394433043135824981559i)) > __CZ__eps) { epsilon(eps); return 46; } if (abs (lngamma(-3.400 - 3.700i) - (-10.55018529022399813119005433743831737900085357229525796 + 6.763336971725381912118912702208512629733112628981673298i)) > __CZ__eps) { epsilon(eps); return 47; } if (abs (lngamma(-2.400 - 2.700i) - (-6.624262018571684573249747079902924251345023570085621326 + 5.911914743873792313808731773611192661709672638901754910i)) > __CZ__eps) { epsilon(eps); return 48; } if (abs (lngamma(-1.400 - 1.700i) - (-3.046912030520906458689035477846643788289090086345259335 + 4.680423062668151424886705499811285399248102868605621987i)) > __CZ__eps) { epsilon(eps); return 49; } if (abs (lngamma(-0.4000 - 0.7000i) - (-0.01623979147403148300780826047582666582616647435129398527 + 2.826833421018256285271011446520969788549353956082297248i)) > __CZ__eps) { epsilon(eps); return 50; } if (abs (lngamma(0.6000 + 0.3000i) - (0.2484000028946351584991362705412598434332854007039741619 - 0.4227177743314176403219013995119576518240065994565821579i)) > __CZ__eps) { epsilon(eps); return 51; } if (abs (lngamma(1.600 + 1.300i) - (-0.7407695833613238477853561156238169815169605175974563292 + 0.3658395580779188724109027663961707196451841638334886679i)) > __CZ__eps) { epsilon(eps); return 52; } if (abs (lngamma(2.600 + 2.300i) - (-0.7153017561016750689453931991025219163388411460412682694 + 2.067498782269003991801228117457494590355245722719424742i)) > __CZ__eps) { epsilon(eps); return 53; } if (abs (lngamma(3.600 + 3.300i) - (-0.2006290139452759775010107586460283514303264993274887714 + 4.221969149213679168621678150696738907045553787288427746i)) > __CZ__eps) { epsilon(eps); return 54; } if (abs (lngamma(4.600 + 4.300i) - (0.6404767304085869581018213364351326853699331839312207180 + 6.685149323469513776483323494807052342570441936959315816i)) > __CZ__eps) { epsilon(eps); return 55; } if (abs (lngamma(5.600 + 5.300i) - (1.727112476786098959996727579157495580048033035060833670 + 9.383383918093155327986445451264543368751338171298232916i)) > __CZ__eps) { epsilon(eps); return 56; } if (abs (lngamma(55.60 + 0.3000i) - (166.7215150367733897769155930653789348483780044274716818 + 1.202750513929718332820270669742686561426457642272968981i)) > __CZ__eps) { epsilon(eps); return 57; } if (abs (lngamma(56.60 + 0.3000i) - (170.7397127945179968376917410624766834622909691036136375 + 1.208146145021640303895693686064781770317635078049891748i)) > __CZ__eps) { epsilon(eps); return 58; } if (abs (lngamma(57.60 + 0.3000i) - (174.7757358264026770962028712327193919190938819848539820 + 1.213446448743774292811195505423481449339002192187714949i)) > __CZ__eps) { epsilon(eps); return 59; } if (abs (lngamma(58.60 + 0.3000i) - (178.8292719572886165808686582437464130998008894472168186 + 1.218654734982846161251085553080214761347285268088604785i)) > __CZ__eps) { epsilon(eps); return 60; } if (abs (lngamma(59.60 + 0.3000i) - (182.9000197581041057641595126649840680882966589651420637 + 1.223774144183534973445316592347337056808910609419286930i)) > __CZ__eps) { epsilon(eps); return 61; } if (abs (lngamma(60.60 + 0.3000i) - (186.9876880003631981031020807195926428903734785341818284 + 1.228807658719925269995511830298415601718771597558190350i)) > __CZ__eps) { epsilon(eps); return 62; } if (abs (lngamma(61.60 + 0.3000i) - (191.0919951469889337316641602771633017764510692037723749 + 1.233758113328768712483862353815791968059294457847368072i)) > __CZ__eps) { epsilon(eps); return 63; } if (abs (lngamma(62.60 + 0.3000i) - (195.2126688764702481772276457650023207176714432948785485 + 1.238628204695931980600482702688969918429374403006592554i)) > __CZ__eps) { epsilon(eps); return 64; } if (abs (lngamma(63.60 + 0.3000i) - (199.3494456376687238313417632202369605922807314239672719 + 1.243420500277190605198320894289870930154643596582155076i)) > __CZ__eps) { epsilon(eps); return 65; } if (abs (lngamma(64.60 + 0.3000i) - (203.5020702328465376706204035728796350972376926574607893 + 1.248137446425596312819515029227444652080011390838575181i)) > __CZ__eps) { epsilon(eps); return 66; } if (abs (lngamma(65.60 + 0.3000i) - (207.6702954267142863859185793548246421433863939380928954 + 1.252781375889819416329161991660565854615382764835522506i)) > __CZ__eps) { epsilon(eps); return 67; } if (abs (lngamma(55.60 - 4.700i) - (166.5221258272035253961542734005976077004749775938844000 - 18.84875483296568553194454925345602004591801239160222174i)) > __CZ__eps) { epsilon(eps); return 68; } if (abs (lngamma(56.60 - 3.700i) - (170.6185921690853207517443064939778892985245375960964842 - 14.90313021223193465377855573208445845565931668639004077i)) > __CZ__eps) { epsilon(eps); return 69; } if (abs (lngamma(57.60 - 2.700i) - (174.7127139121008307648437631979262499901446251937177073 - 10.92201102864604767334040466047947450750373806537116051i)) > __CZ__eps) { epsilon(eps); return 70; } if (abs (lngamma(58.60 - 1.700i) - (178.8051797102056562439362100160978710660289490095968327 - 6.905945104548951236229262516275118301863000955218208856i)) > __CZ__eps) { epsilon(eps); return 71; } if (abs (lngamma(59.60 - 0.7000i) - (182.8966358377199778625865269072085032936485484956150669 - 2.855486362253577342667404413778192112579790386732841204i)) > __CZ__eps) { epsilon(eps); return 72; } if (abs (lngamma(60.60 + 0.3000i) - (186.9876880003631981031020807195926428903734785341818284 + 1.228807658719925269995511830298415601718771597558190350i)) > __CZ__eps) { epsilon(eps); return 73; } if (abs (lngamma(61.60 + 1.300i) - (191.0789031896982469942903294770974306494712752019213395 + 5.346377998474074192830409565498522421021695288142347615i)) > __CZ__eps) { epsilon(eps); return 74; } if (abs (lngamma(62.60 + 2.300i) - (195.1708115544608858783580589279983618518227865792619427 + 9.496666208022148051357709844128014322980249562957453155i)) > __CZ__eps) { epsilon(eps); return 75; } if (abs (lngamma(63.60 + 3.300i) - (199.2639082667972359747356775354901044881033064193665592 + 13.67911603585439751926438073480939520547347569839795064i)) > __CZ__eps) { epsilon(eps); return 76; } if (abs (lngamma(64.60 + 4.300i) - (203.3586553654963869814883298543618854726441450377694569 + 17.89317489050227754715433149549722038188972541358048335i)) > __CZ__eps) { epsilon(eps); return 77; } if (abs (lngamma(65.60 + 5.300i) - (207.4554835618873492047512087924156663776620358356581503 + 22.13829509931977678201875089030163451926720764548437834i)) > __CZ__eps) { epsilon(eps); return 78; } if (abs (lngamma(0.6000 + 55.30i) - (-85.54482235577983941284251852323648610691188392673393393 + 166.7640845362830899082977628513038941147191508645382670i)) > __CZ__eps) { epsilon(eps); return 79; } if (abs (lngamma(0.6000 + 56.30i) - (-87.11382647385499402990266927218873826677912515510914330 + 170.7858332456548897964755419202916477033408200711519690i)) > __CZ__eps) { epsilon(eps); return 80; } if (abs (lngamma(0.6000 + 57.30i) - (-88.68286214812485690627962462529848906043953388486922638 + 174.8253452895478184840703539752269094932785103410249518i)) > __CZ__eps) { epsilon(eps); return 81; } if (abs (lngamma(0.6000 + 58.30i) - (-90.25192828651651583800480958344256221682554088740576313 + 178.8823106163841131771861511088137077830986146286084489i)) > __CZ__eps) { epsilon(eps); return 82; } if (abs (lngamma(0.6000 + 59.30i) - (-91.82102385268587759734139136217993540696936010920994984 + 182.9564298132977973838333574465352695792546867284831679i)) > __CZ__eps) { epsilon(eps); return 83; } if (abs (lngamma(0.6000 + 60.30i) - (-93.39014786228910598458529398231928177449383105033168028 + 187.0474135677690289293542062291360648608774972285628443i)) > __CZ__eps) { epsilon(eps); return 84; } if (abs (lngamma(0.6000 + 61.30i) - (-94.95929937956076993888890535139227785932447324700640489 + 191.1549821649831349987910547767822679603735412036380108i)) > __CZ__eps) { epsilon(eps); return 85; } if (abs (lngamma(0.6000 + 62.30i) - (-96.52847751416891464599424930795884732518087496093651555 + 195.2788650179992458972186470030422322640959550214072444i)) > __CZ__eps) { epsilon(eps); return 86; } if (abs (lngamma(0.6000 + 63.30i) - (-98.09768141832058996231194071903760307280235519603364210 + 199.4188002280943140128727971292337826315387363387763786i)) > __CZ__eps) { epsilon(eps); return 87; } if (abs (lngamma(0.6000 + 64.30i) - (-99.66691028409427522125385963825011409754630863598190917 + 203.5745341728981030650825963445356527935331129342248469i)) > __CZ__eps) { epsilon(eps); return 88; } if (abs (lngamma(0.6000 + 65.30i) - (-101.2361633409781854893699037629524761308029390440175099 + 207.7458211201573236805249632667291754315339341665724958i)) > __CZ__eps) { epsilon(eps); return 89; } if (abs (lngamma(55.60 + 60.30i) - (138.3405218869058217717201182836422027677382184890964165 + 250.9485307086751713133102893231808151265549690071705472i)) > __CZ__eps) { epsilon(eps); return 90; } if (abs (lngamma(56.60 + 60.30i) - (142.7474976121018701984157500679190442966110797769323173 + 251.7744588650459198825346353772080509751313819470548658i)) > __CZ__eps) { epsilon(eps); return 91; } if (abs (lngamma(57.60 + 60.30i) - (147.1627435319602425515209166358781832064023544924212637 + 252.5914974493805839443768868968642526869013797892608722i)) > __CZ__eps) { epsilon(eps); return 92; } if (abs (lngamma(58.60 + 60.30i) - (151.5862689029682042031606617640450220740985775964639233 + 253.3997923739994162421416717294147634900873392644324912i)) > __CZ__eps) { epsilon(eps); return 93; } if (abs (lngamma(59.60 + 60.30i) - (156.0180803184689022095120622630277425180433295653817951 + 254.1994872924291535134537002289372877256760561545266240i)) > __CZ__eps) { epsilon(eps); return 94; } if (abs (lngamma(60.60 + 60.30i) - (160.4581818322128207752571131620498333645831099884594593 + 254.9907235879958949246830907372060458378867915677707498i)) > __CZ__eps) { epsilon(eps); return 95; } if (abs (lngamma(61.60 + 60.30i) - (164.9065750781912363906196189745577497508505165621357938 + 255.7736403669080425654455012237246051402306640891736322i)) > __CZ__eps) { epsilon(eps); return 96; } if (abs (lngamma(62.60 + 60.30i) - (169.3632593867220799863942253592790131010186217605278241 + 256.5483744554910528044048617005478717965073680654042053i)) > __CZ__eps) { epsilon(eps); return 97; } if (abs (lngamma(63.60 + 60.30i) - (173.8282318967764198928263540479369804154959334380883398 + 257.3150604012511380535676929646281795055983167823336193i)) > __CZ__eps) { epsilon(eps); return 98; } if (abs (lngamma(64.60 + 60.30i) - (178.3014876645497005489995740718100489155558324227755847 + 258.0738304774605436591436026066009539042787457216911291i)) > __CZ__eps) { epsilon(eps); return 99; } if (abs (lngamma(65.60 + 60.30i) - (182.7830197682960267239662260557525833694506977039319737 + 258.8248146909724805417993325211754807069936951454932977i)) > __CZ__eps) { epsilon(eps); return 100; } if (abs (lngamma(55.60 + 55.30i) - (142.3862162791589253462657451176275726003857264651343509 + 229.0474972316203435288188174128389032017308276896396827i)) > __CZ__eps) { epsilon(eps); return 101; } if (abs (lngamma(56.60 + 56.30i) - (145.9655713474689753168556009847734887663033552824290632 + 234.2012259525622513896404861908422505950646506577988340i)) > __CZ__eps) { epsilon(eps); return 102; } if (abs (lngamma(57.60 + 57.30i) - (149.5627523253413003508200851967083007076485608754907532 + 239.3727177204530395107173394215426561501560159557014103i)) > __CZ__eps) { epsilon(eps); return 103; } if (abs (lngamma(58.60 + 58.30i) - (153.1774470047839472501216057736005131302626263510371392 + 244.5616624984797644536433102063654140139237547865421532i)) > __CZ__eps) { epsilon(eps); return 104; } if (abs (lngamma(59.60 + 59.30i) - (156.8093539260984043245770025957276995010069796775703177 + 249.7677608875474964335171539461488545902215228674008981i)) > __CZ__eps) { epsilon(eps); return 105; } if (abs (lngamma(60.60 + 60.30i) - (160.4581818322128207752571131620498333645831099884594593 + 254.9907235879958949246830907372060458378867915677707498i)) > __CZ__eps) { epsilon(eps); return 106; } if (abs (lngamma(61.60 + 61.30i) - (164.1236491593380218382957487779642572534385362007999916 + 260.2302708970324395553848679531333038493595454481482560i)) > __CZ__eps) { epsilon(eps); return 107; } if (abs (lngamma(62.60 + 62.30i) - (167.8054835609733823774016164868506426238263526697353479 + 265.4861322389681286058365065491944749198017327500214219i)) > __CZ__eps) { epsilon(eps); return 108; } if (abs (lngamma(63.60 + 63.30i) - (171.5034214625769205528980449555097665172285302158028025 + 270.7580457256222186188843213325906832500862444373572311i)) > __CZ__eps) { epsilon(eps); return 109; } if (abs (lngamma(64.60 + 64.30i) - (175.2172076444693933495200678808489471651335658562522069 + 276.0457577445122795003295082894754935609216218032287116i)) > __CZ__eps) { epsilon(eps); return 110; } if (abs (lngamma(65.60 + 65.30i) - (178.9465948507696967449494536146172974534191430062324139 + 281.3490225726683461623186324992570909685317567794418009i)) > __CZ__eps) { epsilon(eps); return 111; } if (abs (lngamma(0.6000 + 4.700i) - (-6.309230474426685182917699027589840248465208901823736044 + 2.738444603265429259406748249023722438146218314171151425i)) > __CZ__eps) { epsilon(eps); return 112; } if (abs (lngamma(0.6000 + 3.700i) - (-4.762470602521331200619631143446813610218360030381255868 + 1.307861859626688811743330143389568763790196226980935860i)) > __CZ__eps) { epsilon(eps); return 113; } if (abs (lngamma(0.6000 + 2.700i) - (-3.223449159729432378435059551332376261824297133470481664 + 0.1525473639596832094518944287785664759918133343972275457i)) > __CZ__eps) { epsilon(eps); return 114; } if (abs (lngamma(0.6000 + 1.700i) - (-1.699851882736550416690203691424396333903393386464266356 - 0.6188153536675997046951505463300498363352953733225308151i)) > __CZ__eps) { epsilon(eps); return 115; } if (abs (lngamma(0.6000 + 0.7000i) - (-0.2316312495202586116986763277644377512618333134657045421 - 0.7368909799768367142682353753277667339824288570492360448i)) > __CZ__eps) { epsilon(eps); return 116; } if (abs (lngamma(0.6000 - 0.3000i) - (0.2484000028946351584991362705412598434332854007039741619 + 0.4227177743314176403219013995119576518240065994565821579i)) > __CZ__eps) { epsilon(eps); return 117; } if (abs (lngamma(0.6000 - 1.300i) - (-1.099689479936482253001126014071250387866864940802593030 + 0.7725489931464399068598744386748572974573591452933440189i)) > __CZ__eps) { epsilon(eps); return 118; } if (abs (lngamma(0.6000 - 2.300i) - (-2.611386294578008388513457987969729601048026532835562114 + 0.2111094845860104400425314901146665256344806614559790152i)) > __CZ__eps) { epsilon(eps); return 119; } if (abs (lngamma(0.6000 - 3.300i) - (-4.145670522984067490152016613422534092269675011415945298 - 0.8081928951523762121254890981027647840025857144095024771i)) > __CZ__eps) { epsilon(eps); return 120; } if (abs (lngamma(0.6000 - 4.300i) - (-5.689842576036527320491763306963824853139907301029281610 - 2.137677242374957442527694027866746053575410791317320138i)) > __CZ__eps) { epsilon(eps); return 121; } if (abs (lngamma(0.6000 - 5.300i) - (-7.239654605052715210182073623536904206104308839659326676 - 3.702857758072432142072497796069521049678127217607403327i)) > __CZ__eps) { epsilon(eps); return 122; } if (abs (lngamma(-4.400 + 4.700i) - (-14.73413592903136179653960750100174060012531669119348359 - 7.340768981905845672138265648506833394433043135824981559i)) > __CZ__eps) { epsilon(eps); return 123; } if (abs (lngamma(-3.400 + 3.700i) - (-10.55018529022399813119005433743831737900085357229525796 - 6.763336971725381912118912702208512629733112628981673298i)) > __CZ__eps) { epsilon(eps); return 124; } if (abs (lngamma(-2.400 + 2.700i) - (-6.624262018571684573249747079902924251345023570085621326 - 5.911914743873792313808731773611192661709672638901754910i)) > __CZ__eps) { epsilon(eps); return 125; } if (abs (lngamma(-1.400 + 1.700i) - (-3.046912030520906458689035477846643788289090086345259335 - 4.680423062668151424886705499811285399248102868605621987i)) > __CZ__eps) { epsilon(eps); return 126; } if (abs (lngamma(-0.4000 + 0.7000i) - (-0.01623979147403148300780826047582666582616647435129398527 - 2.826833421018256285271011446520969788549353956082297248i)) > __CZ__eps) { epsilon(eps); return 127; } if (abs (lngamma(0.6000 - 0.3000i) - (0.2484000028946351584991362705412598434332854007039741619 + 0.4227177743314176403219013995119576518240065994565821579i)) > __CZ__eps) { epsilon(eps); return 128; } if (abs (lngamma(1.600 - 1.300i) - (-0.7407695833613238477853561156238169815169605175974563292 - 0.3658395580779188724109027663961707196451841638334886679i)) > __CZ__eps) { epsilon(eps); return 129; } if (abs (lngamma(2.600 - 2.300i) - (-0.7153017561016750689453931991025219163388411460412682694 - 2.067498782269003991801228117457494590355245722719424742i)) > __CZ__eps) { epsilon(eps); return 130; } if (abs (lngamma(3.600 - 3.300i) - (-0.2006290139452759775010107586460283514303264993274887714 - 4.221969149213679168621678150696738907045553787288427746i)) > __CZ__eps) { epsilon(eps); return 131; } if (abs (lngamma(4.600 - 4.300i) - (0.6404767304085869581018213364351326853699331839312207180 - 6.685149323469513776483323494807052342570441936959315816i)) > __CZ__eps) { epsilon(eps); return 132; } if (abs (lngamma(5.600 - 5.300i) - (1.727112476786098959996727579157495580048033035060833670 - 9.383383918093155327986445451264543368751338171298232916i)) > __CZ__eps) { epsilon(eps); return 133; } if (abs (lngamma(55.60 - 0.3000i) - (166.7215150367733897769155930653789348483780044274716818 - 1.202750513929718332820270669742686561426457642272968981i)) > __CZ__eps) { epsilon(eps); return 134; } if (abs (lngamma(56.60 - 0.3000i) - (170.7397127945179968376917410624766834622909691036136375 - 1.208146145021640303895693686064781770317635078049891748i)) > __CZ__eps) { epsilon(eps); return 135; } if (abs (lngamma(57.60 - 0.3000i) - (174.7757358264026770962028712327193919190938819848539820 - 1.213446448743774292811195505423481449339002192187714949i)) > __CZ__eps) { epsilon(eps); return 136; } if (abs (lngamma(58.60 - 0.3000i) - (178.8292719572886165808686582437464130998008894472168186 - 1.218654734982846161251085553080214761347285268088604785i)) > __CZ__eps) { epsilon(eps); return 137; } if (abs (lngamma(59.60 - 0.3000i) - (182.9000197581041057641595126649840680882966589651420637 - 1.223774144183534973445316592347337056808910609419286930i)) > __CZ__eps) { epsilon(eps); return 138; } if (abs (lngamma(60.60 - 0.3000i) - (186.9876880003631981031020807195926428903734785341818284 - 1.228807658719925269995511830298415601718771597558190350i)) > __CZ__eps) { epsilon(eps); return 139; } if (abs (lngamma(61.60 - 0.3000i) - (191.0919951469889337316641602771633017764510692037723749 - 1.233758113328768712483862353815791968059294457847368072i)) > __CZ__eps) { epsilon(eps); return 140; } if (abs (lngamma(62.60 - 0.3000i) - (195.2126688764702481772276457650023207176714432948785485 - 1.238628204695931980600482702688969918429374403006592554i)) > __CZ__eps) { epsilon(eps); return 141; } if (abs (lngamma(63.60 - 0.3000i) - (199.3494456376687238313417632202369605922807314239672719 - 1.243420500277190605198320894289870930154643596582155076i)) > __CZ__eps) { epsilon(eps); return 142; } if (abs (lngamma(64.60 - 0.3000i) - (203.5020702328465376706204035728796350972376926574607893 - 1.248137446425596312819515029227444652080011390838575181i)) > __CZ__eps) { epsilon(eps); return 143; } if (abs (lngamma(65.60 - 0.3000i) - (207.6702954267142863859185793548246421433863939380928954 - 1.252781375889819416329161991660565854615382764835522506i)) > __CZ__eps) { epsilon(eps); return 144; } if (abs (lngamma(55.60 - 4.700i) - (166.5221258272035253961542734005976077004749775938844000 - 18.84875483296568553194454925345602004591801239160222174i)) > __CZ__eps) { epsilon(eps); return 145; } if (abs (lngamma(56.60 - 3.700i) - (170.6185921690853207517443064939778892985245375960964842 - 14.90313021223193465377855573208445845565931668639004077i)) > __CZ__eps) { epsilon(eps); return 146; } if (abs (lngamma(57.60 - 2.700i) - (174.7127139121008307648437631979262499901446251937177073 - 10.92201102864604767334040466047947450750373806537116051i)) > __CZ__eps) { epsilon(eps); return 147; } if (abs (lngamma(58.60 - 1.700i) - (178.8051797102056562439362100160978710660289490095968327 - 6.905945104548951236229262516275118301863000955218208856i)) > __CZ__eps) { epsilon(eps); return 148; } if (abs (lngamma(59.60 - 0.7000i) - (182.8966358377199778625865269072085032936485484956150669 - 2.855486362253577342667404413778192112579790386732841204i)) > __CZ__eps) { epsilon(eps); return 149; } if (abs (lngamma(60.60 + 0.3000i) - (186.9876880003631981031020807195926428903734785341818284 + 1.228807658719925269995511830298415601718771597558190350i)) > __CZ__eps) { epsilon(eps); return 150; } if (abs (lngamma(61.60 + 1.300i) - (191.0789031896982469942903294770974306494712752019213395 + 5.346377998474074192830409565498522421021695288142347615i)) > __CZ__eps) { epsilon(eps); return 151; } if (abs (lngamma(62.60 + 2.300i) - (195.1708115544608858783580589279983618518227865792619427 + 9.496666208022148051357709844128014322980249562957453155i)) > __CZ__eps) { epsilon(eps); return 152; } if (abs (lngamma(63.60 + 3.300i) - (199.2639082667972359747356775354901044881033064193665592 + 13.67911603585439751926438073480939520547347569839795064i)) > __CZ__eps) { epsilon(eps); return 153; } if (abs (lngamma(64.60 + 4.300i) - (203.3586553654963869814883298543618854726441450377694569 + 17.89317489050227754715433149549722038188972541358048335i)) > __CZ__eps) { epsilon(eps); return 154; } if (abs (lngamma(65.60 + 5.300i) - (207.4554835618873492047512087924156663776620358356581503 + 22.13829509931977678201875089030163451926720764548437834i)) > __CZ__eps) { epsilon(eps); return 155; } if (abs (lngamma(0.6000 - 55.30i) - (-85.54482235577983941284251852323648610691188392673393393 - 166.7640845362830899082977628513038941147191508645382670i)) > __CZ__eps) { epsilon(eps); return 156; } if (abs (lngamma(0.6000 - 56.30i) - (-87.11382647385499402990266927218873826677912515510914330 - 170.7858332456548897964755419202916477033408200711519690i)) > __CZ__eps) { epsilon(eps); return 157; } if (abs (lngamma(0.6000 - 57.30i) - (-88.68286214812485690627962462529848906043953388486922638 - 174.8253452895478184840703539752269094932785103410249518i)) > __CZ__eps) { epsilon(eps); return 158; } if (abs (lngamma(0.6000 - 58.30i) - (-90.25192828651651583800480958344256221682554088740576313 - 178.8823106163841131771861511088137077830986146286084489i)) > __CZ__eps) { epsilon(eps); return 159; } if (abs (lngamma(0.6000 - 59.30i) - (-91.82102385268587759734139136217993540696936010920994984 - 182.9564298132977973838333574465352695792546867284831679i)) > __CZ__eps) { epsilon(eps); return 160; } if (abs (lngamma(0.6000 - 60.30i) - (-93.39014786228910598458529398231928177449383105033168028 - 187.0474135677690289293542062291360648608774972285628443i)) > __CZ__eps) { epsilon(eps); return 161; } if (abs (lngamma(0.6000 - 61.30i) - (-94.95929937956076993888890535139227785932447324700640489 - 191.1549821649831349987910547767822679603735412036380108i)) > __CZ__eps) { epsilon(eps); return 162; } if (abs (lngamma(0.6000 - 62.30i) - (-96.52847751416891464599424930795884732518087496093651555 - 195.2788650179992458972186470030422322640959550214072444i)) > __CZ__eps) { epsilon(eps); return 163; } if (abs (lngamma(0.6000 - 63.30i) - (-98.09768141832058996231194071903760307280235519603364210 - 199.4188002280943140128727971292337826315387363387763786i)) > __CZ__eps) { epsilon(eps); return 164; } if (abs (lngamma(0.6000 - 64.30i) - (-99.66691028409427522125385963825011409754630863598190917 - 203.5745341728981030650825963445356527935331129342248469i)) > __CZ__eps) { epsilon(eps); return 165; } if (abs (lngamma(0.6000 - 65.30i) - (-101.2361633409781854893699037629524761308029390440175099 - 207.7458211201573236805249632667291754315339341665724958i)) > __CZ__eps) { epsilon(eps); return 166; } if (abs (lngamma(55.60 - 60.30i) - (138.3405218869058217717201182836422027677382184890964165 - 250.9485307086751713133102893231808151265549690071705472i)) > __CZ__eps) { epsilon(eps); return 167; } if (abs (lngamma(56.60 - 60.30i) - (142.7474976121018701984157500679190442966110797769323173 - 251.7744588650459198825346353772080509751313819470548658i)) > __CZ__eps) { epsilon(eps); return 168; } if (abs (lngamma(57.60 - 60.30i) - (147.1627435319602425515209166358781832064023544924212637 - 252.5914974493805839443768868968642526869013797892608722i)) > __CZ__eps) { epsilon(eps); return 169; } if (abs (lngamma(58.60 - 60.30i) - (151.5862689029682042031606617640450220740985775964639233 - 253.3997923739994162421416717294147634900873392644324912i)) > __CZ__eps) { epsilon(eps); return 170; } if (abs (lngamma(59.60 - 60.30i) - (156.0180803184689022095120622630277425180433295653817951 - 254.1994872924291535134537002289372877256760561545266240i)) > __CZ__eps) { epsilon(eps); return 171; } if (abs (lngamma(60.60 - 60.30i) - (160.4581818322128207752571131620498333645831099884594593 - 254.9907235879958949246830907372060458378867915677707498i)) > __CZ__eps) { epsilon(eps); return 172; } if (abs (lngamma(61.60 - 60.30i) - (164.9065750781912363906196189745577497508505165621357938 - 255.7736403669080425654455012237246051402306640891736322i)) > __CZ__eps) { epsilon(eps); return 173; } if (abs (lngamma(62.60 - 60.30i) - (169.3632593867220799863942253592790131010186217605278241 - 256.5483744554910528044048617005478717965073680654042053i)) > __CZ__eps) { epsilon(eps); return 174; } if (abs (lngamma(63.60 - 60.30i) - (173.8282318967764198928263540479369804154959334380883398 - 257.3150604012511380535676929646281795055983167823336193i)) > __CZ__eps) { epsilon(eps); return 175; } if (abs (lngamma(64.60 - 60.30i) - (178.3014876645497005489995740718100489155558324227755847 - 258.0738304774605436591436026066009539042787457216911291i)) > __CZ__eps) { epsilon(eps); return 176; } if (abs (lngamma(65.60 - 60.30i) - (182.7830197682960267239662260557525833694506977039319737 - 258.8248146909724805417993325211754807069936951454932977i)) > __CZ__eps) { epsilon(eps); return 177; } if (abs (lngamma(55.60 - 55.30i) - (142.3862162791589253462657451176275726003857264651343509 - 229.0474972316203435288188174128389032017308276896396827i)) > __CZ__eps) { epsilon(eps); return 178; } if (abs (lngamma(56.60 - 56.30i) - (145.9655713474689753168556009847734887663033552824290632 - 234.2012259525622513896404861908422505950646506577988340i)) > __CZ__eps) { epsilon(eps); return 179; } if (abs (lngamma(57.60 - 57.30i) - (149.5627523253413003508200851967083007076485608754907532 - 239.3727177204530395107173394215426561501560159557014103i)) > __CZ__eps) { epsilon(eps); return 180; } if (abs (lngamma(58.60 - 58.30i) - (153.1774470047839472501216057736005131302626263510371392 - 244.5616624984797644536433102063654140139237547865421532i)) > __CZ__eps) { epsilon(eps); return 181; } if (abs (lngamma(59.60 - 59.30i) - (156.8093539260984043245770025957276995010069796775703177 - 249.7677608875474964335171539461488545902215228674008981i)) > __CZ__eps) { epsilon(eps); return 182; } if (abs (lngamma(60.60 - 60.30i) - (160.4581818322128207752571131620498333645831099884594593 - 254.9907235879958949246830907372060458378867915677707498i)) > __CZ__eps) { epsilon(eps); return 183; } if (abs (lngamma(61.60 - 61.30i) - (164.1236491593380218382957487779642572534385362007999916 - 260.2302708970324395553848679531333038493595454481482560i)) > __CZ__eps) { epsilon(eps); return 184; } if (abs (lngamma(62.60 - 62.30i) - (167.8054835609733823774016164868506426238263526697353479 - 265.4861322389681286058365065491944749198017327500214219i)) > __CZ__eps) { epsilon(eps); return 185; } if (abs (lngamma(63.60 - 63.30i) - (171.5034214625769205528980449555097665172285302158028025 - 270.7580457256222186188843213325906832500862444373572311i)) > __CZ__eps) { epsilon(eps); return 186; } if (abs (lngamma(64.60 - 64.30i) - (175.2172076444693933495200678808489471651335658562522069 - 276.0457577445122795003295082894754935609216218032287116i)) > __CZ__eps) { epsilon(eps); return 187; } if (abs (lngamma(65.60 - 65.30i) - (178.9465948507696967449494536146172974534191430062324139 - 281.3490225726683461623186324992570909685317567794418009i)) > __CZ__eps) { epsilon(eps); return 188; } /* a large integer */ if (abs(lngamma(10 ^ 2 + 1) - (ln((10 ^ 2) !))) > __CZ__eps) { epsilon(eps); return 189; } epsilon(eps); if (isnull(type)) t02(1); epsilon(eps); return 0; } define t03() { local eps; eps = epsilon(1e-20); if (abs(psi(5) - 1.506117668431800472726821243) > __CZ__eps) { epsilon(eps); return 1; } if (!iserror(psi(-5))) { epsilon(eps); return 2; } if (abs(psi(-5.5) - (1.792911330399932941915445023)) > __CZ__eps) { epsilon(eps); return 3; } if (abs(psi(5.5) - (1.611093148581751123733626842)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (psi(5.5 + 5.5i) - (2.005864860662911769895523042 + 0.8322301014098247099090843855i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (psi(-5.5 + 5.5i) - (2.096773951572002678986432133 + 2.400271643089053271126857721i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (psi(-5.5 - 5.5i) - (2.096773951572002678986432133 - 2.400271643089053271126857721i)) > __CZ__eps) { epsilon(eps); return 7; } epsilon(eps); return 0; } /* test 04 tests polygamma(m,z) for the following values (m==0 gets computed * by psi()). * Values tested against were computed with Mathematica(TM) only * (z in the left complex half plane does not get computed yet) */ define t04() { local eps; eps = epsilon(1e-20); if (abs(polygamma(2, 5) - (-0.048789732245114496725)) > __CZ__eps) { epsilon(eps); return 1; } if (!iserror(polygamma(2, -5))) { epsilon(eps); return 2; } if (abs(polygamma(2, -5.5) - (-0.02758791070687679879)) > __CZ__eps) { epsilon(eps); return 3; } if (abs(polygamma(2, 5.5) - (-0.03960894752130204297)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (polygamma(2, 5.5 + 5.5i) - (0.00163921986957704426 + 0.01803230748452131112i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (polygamma(2, -5.5 + 5.5i) - (-0.00136603933402926677 - 0.015027048280671555719i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (polygamma(2, -5.5 - 5.5i) - (-0.00136603933402926677 + 0.015027048280671555719i)) > __CZ__eps) { epsilon(eps); return 7; } epsilon(eps); return 0; } /* test 05 tests hurwitzzeta(s,a) for the following values. the first two test * if the arguments are in the right order. * test all combinations? */ define t05() { local eps; eps = epsilon(1e-20); if (abs(hurwitzzeta(2, 5) - (0.2213229557371153253613040555)) > __CZ__eps) { epsilon(eps); return 1; } if (abs(hurwitzzeta(5, 2) - (0.03692775514336992633136548646)) > __CZ__eps){ epsilon(eps); return 2; } if (abs(hurwitzzeta(2.2, 5) - (0.1363459661171646798298971735))> __CZ__eps){ epsilon(eps); return 3; } if (abs(hurwitzzeta(2.2, 5.2) - (0.1294703948013920875737274341)) > __CZ__eps) { epsilon(eps); return 4; } if (abs(hurwitzzeta(-2.2, 5.2) - (-43.62740512741650992650645550)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (hurwitzzeta(-2.2, -5.2) - (65.71970386778362403451264243 + 47.73828461458444658816112446i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (hurwitzzeta(2.2, 5.2 + 5.6i) - (0.038440773159665466748278144 - 0.0662501636737772199523476381i)) > __CZ__eps) { epsilon(eps); return 7; } if (abs (hurwitzzeta(2.2, 5.2 - 5.6i) - (0.038440773159665466748278144 + 0.06625016367377721995234763811i)) > __CZ__eps) { epsilon(eps); return 8; } if (abs (hurwitzzeta(2.2, -5.2 + 5.6i) - (-0.06570771621451414059240507315 - 0.02045673968185922880458837166i)) > __CZ__eps) { epsilon(eps); return 9; } if (abs (hurwitzzeta(2.2, -5.2 - 5.6i) - (-0.06570771621451414059240507315 + 0.02045673968185922880458837166i)) > __CZ__eps) { epsilon(eps); return 10; } if (abs (hurwitzzeta(-2.2, 5.2 + 5.6i) - (171.3023982201237034174265227 - 61.37099215219445965540875817i)) > __CZ__eps) { epsilon(eps); return 11; } if (abs (hurwitzzeta(-2.2, 5.2 - 5.6i) - (171.3023982201237034174265227 + 61.37099215219445965540875820i)) > __CZ__eps) { epsilon(eps); return 12; } if (abs (hurwitzzeta(-2.2, -5.2 + 5.6i) - (-69.18353604795857246443145272 - 231.4707567406623523296345557i)) > __CZ__eps) { epsilon(eps); return 13; } if (abs (hurwitzzeta(-2.2, -5.2 - 5.6i) - (-69.18353604795857246443145272 + 231.4707567406623523296345557i)) > __CZ__eps) { epsilon(eps); return 14; } if (abs (hurwitzzeta(5.2 + 5.6i, 2.2) - (-0.002865569533484339556271871050 + 0.0148003604570643921348488531i)) > __CZ__eps) { epsilon(eps); return 15; } if (abs (hurwitzzeta(5.2 - 5.6i, 2.2) - (-0.002865569533484339556271871050 - 0.0148003604570643921348488531i)) > __CZ__eps) { epsilon(eps); return 16; } if (abs (hurwitzzeta(-5.2 + 5.6i, 2.2) - (-1.837761873462765905576370048 + 3.192719531152431336748963871i)) > __CZ__eps) { epsilon(eps); return 17; } if (abs (hurwitzzeta(-5.2 - 5.6i, 2.2) - (-1.837761873462765905576346060 - 3.192719531152431336748963871i)) > __CZ__eps) { epsilon(eps); return 18; } if (abs (hurwitzzeta(5.2 + 5.6i, -2.2) - (95348834359.70315397408796804 - 162510500631.4367394107265635i)) > __CZ__eps) { epsilon(eps); ##return 19; } if (abs (hurwitzzeta(5.2 - 5.6i, -2.2) - (0.9651349278612417712864108926 - 3.036274517135684343726981739i)) > __CZ__eps) { epsilon(eps); return 20; } if (abs (hurwitzzeta(-5.2 + 5.6i, -2.2) - (2002299780.711849103677017204 - 1543130375.266699195007479145i)) > __CZ__eps) { epsilon(eps); ##return 21; } if (abs (hurwitzzeta(-5.2 - 5.6i, -2.2) - (-0.2104165672779048392846890114 + 1.106842659781205784424725697i)) > __CZ__eps) { epsilon(eps); return 22; } if (abs (hurwitzzeta(5.2 + 5.6i, 2.2 + 2.6i) - (0.10228577464688104933513226525 + 0.2344359367956833252781356235i)) > __CZ__eps) { epsilon(eps); return 23; } if (abs (hurwitzzeta(5.2 + 5.6i, 2.2 - 2.6i) - (-0.000005879828833971610476305738830 - 0.000001047520361040864830120054308i)) > __CZ__eps) { epsilon(eps); return 24; } if (abs (hurwitzzeta(5.2 + 5.6i, -2.2 + 2.6i) - (330.37403168831191021183 + 207.41259747950966196661i)) > __CZ__eps) { epsilon(eps); ##return 25; } if (abs (hurwitzzeta(5.2 + 5.6i, -2.2 - 2.6i) - (-0.0000000696683752518857692716375 - 0.0000000517200890759579067258627i)) > __CZ__eps) { epsilon(eps); ##return 26; } epsilon(eps); return 0; } /* test 06 tests zeta(s) * * Zero with smallest imaginary part * 1/2+14.13472514173469379045725198i 0 */ define t06() { local eps; eps = epsilon(1e-20); if (abs(zeta(2) - (1.644934066848226436472415167)) > __CZ__eps) { epsilon(eps); return 1; } if (!iserror(zeta(1))) { epsilon(eps); return 2; } if (abs(zeta(3) - (1.202056903159594285399738162)) > __CZ__eps) { epsilon(eps); return 3; } if (abs(zeta(-3) - (1 / 120)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (zeta(5.5 + 5.6i) - (0.985921045907062298613817 + 0.014724913951794894908415i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (zeta(5.2 - 5.6i) - (0.9829916458246897306781279065 - 0.01804690180657353497603622245i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (zeta(-5.2 + 5.6i) - (-1.101851386544252162781870264 - 0.1426833937495229821744935458i)) > __CZ__eps) { epsilon(eps); return 7; } if (abs (zeta(-5.2 - 5.6i) - (-1.101851386544252162781870264 + 0.1426833937495229821744935458i)) > __CZ__eps) { epsilon(eps); return 8; } epsilon(eps); return 0; } define t07() { local eps; eps = epsilon(1e-20); if (!iserror(harmonic(0))) { epsilon(eps); return 1; } if (harmonic(1) - 1 != 0) { epsilon(eps); return 2; } if (harmonic(3) - 11 / 6 != 0) { epsilon(eps); return 3; } if (harmonic(10) - 7381 / 2520 != 0) { epsilon(eps); return 4; } if (harmonic(100) - (14466636279520351160221518043104131447711 / 2788815009188499086581352357412492142272) != 0) { epsilon(eps); return 5; } epsilon(eps); return 0; } define t08() { local eps; eps = epsilon(1e-20); if ((doublefactorial(10) - 3840) != 0) { epsilon(eps); return 1; } if ((doublefactorial(11) - 10395) != 0) { epsilon(eps); return 2; } if (abs((doublefactorial(-11) - (-1 / 945))) > __CZ__eps) { epsilon(eps); return 3; } if (!iserror(doublefactorial(-10))) { epsilon(eps); return 4; } if (abs ((doublefactorial(5.2) - 18.37288214375756118207669378072506887684550012806364822857845)) > __CZ__eps) { epsilon(eps); return 7; } if (abs ((doublefactorial(-5.2) - 0.310704476688173329838586027938765271259515590892296917353047)) > __CZ__eps) { epsilon(eps); return 8; } epsilon(eps); return 0; } define t09() { local eps; eps = epsilon(1e-20); if ((stirling1(10, 0) - (0)) != 0) { epsilon(eps); return 1; } if ((stirling1(0, 10) - (0)) != 0) { epsilon(eps); return 2; } if ((stirling1(0, 0) - (1)) != 0) { epsilon(eps); return 3; } if ((stirling1(10, 10) - (1)) != 0) { epsilon(eps); return 4; } if ((stirling1(10, 1) - (-362880)) != 0) { epsilon(eps); return 5; } if ((stirling1(10, 5) - (-269325)) != 0) { epsilon(eps); return 6; } epsilon(eps); return 0; } define t010() { local eps; eps = epsilon(1e-20); if ((stirling2(10, 0) - (0)) != 0) { epsilon(eps); return 1; } if ((stirling2(0, 10) - (0)) != 0) { epsilon(eps); return 2; } if ((stirling2(0, 0) - (1)) != 0) { epsilon(eps); return 3; } if ((stirling2(10, 10) - (1)) != 0) { epsilon(eps); return 4; } if ((stirling2(10, 1) - (1)) != 0) { epsilon(eps); return 5; } /* * Once, when an expression such as 0^(6-6) returned 0, * then stirling2(10, 5) == 42525. However when we made9 * 0^(6-6) == 0^0 == 1, then stirling2(10, 5) == 5102999/120. */ if ((stirling2(10, 5) - (5102999/120)) != 0) { epsilon(eps); return 6; } epsilon(eps); return 0; } define t011() { local eps; eps = epsilon(1e-20); if ((stirling2caching(10, 0) - (0)) != 0) { epsilon(eps); return 1; } if ((stirling2caching(0, 10) - (0)) != 0) { epsilon(eps); return 2; } if ((stirling2caching(0, 0) - (1)) != 0) { epsilon(eps); return 3; } if ((stirling2caching(10, 10) - (1)) != 0) { epsilon(eps); return 4; } if ((stirling2caching(10, 1) - (1)) != 0) { epsilon(eps); return 5; } if ((stirling2caching(10, 5) - (42525)) != 0) { epsilon(eps); return 6; } epsilon(eps); return 0; } define t012() { local eps; eps = epsilon(1e-20); if ((bell(0) - (1)) != 0) { epsilon(eps); return 1; } if ((bell(1) - (1)) != 0) { epsilon(eps); return 2; } epsilon(eps); if ((bell(2) - (2)) != 0) { epsilon(eps); return 3; } if ((bell(5) - (52)) != 0) { epsilon(eps); return 4; } if ((bell(10) - (115975)) != 0) { epsilon(eps); return 5; } return 0; } define t013() { local eps; eps = epsilon(1e-20); if ((subfactorial(0) - (1)) != 0) { epsilon(eps); return 1; } if ((subfactorial(1) - (0)) != 0) { epsilon(eps); return 2; } if ((subfactorial(10) - (1334961)) != 0) { epsilon(eps); return 3; } epsilon(eps); return 0; } define t014() { local eps; eps = epsilon(1e-20); if ((risingfactorial(1, 0) - (1)) != 0) { epsilon(eps); return 1; } if ((risingfactorial(10, 5) - (240240)) != 0) { epsilon(eps); return 2; } if (abs(risingfactorial(10.5, 5.5) - (1153886.265503555482030983579)) > __CZ__eps) { epsilon(eps); ##return 3; } if (abs (risingfactorial(5.5 + 5.6i, 2.2 + 2.6i) - (3.368463696973104283045428256 + 14.07030243790744467421234172i)) > __CZ__eps) { epsilon(eps); return 4; } epsilon(eps); return 0; } define t015() { local eps; eps = epsilon(1e-20); if ((bigcatalan(0) - (1)) != 0) { epsilon(eps); return 1; } if ((bigcatalan(1) - (1)) != 0) { epsilon(eps); return 2; } if ((bigcatalan(10) - (16796)) != 0) { epsilon(eps); return 3; } if ((bigcatalan(100) - (896519947090131496687170070074100632420837521538745909320)) != 0) { epsilon(eps); return 4; } epsilon(eps); return 0; } define t016() { local eps; eps = epsilon(1e-20); if ((binomial(0, 0) - (1)) != 0) { epsilon(eps); return 1; } if ((binomial(1, 0) - (1)) != 0) { epsilon(eps); return 2; } if ((binomial(10, 5) - (252)) != 0) { epsilon(eps); return 3; } if ((binomial(100, 50) - (100891344545564193334812497256)) != 0) { epsilon(eps); return 4; } if ((binomial(1000, 500) - (comb(1000, 500))) != 0) { epsilon(eps); return 5; } epsilon(eps); return 0; } define t017() { local eps; eps = epsilon(1e-20); if ((factorial(20) - (2432902008176640000)) != 0) { epsilon(eps); return 1; } if ((factorial(100) - (100 !)) != 0) { epsilon(eps); return 2; } epsilon(eps); return 0; } define t018() { local eps; eps = epsilon(1e-20); if ((primorial(3, 100) - (1152783981972759212376551073665878035)) != 0) { epsilon(eps); return 1; } if ((primorial(0, 20000) - (pfact(20000))) != 0) { epsilon(eps); return 2; } if ((primorial(50, 100) - (3749562977351496827)) != 0) { epsilon(eps); return 3; } epsilon(eps); return 0; } define t019() { local eps; eps = epsilon(1e-20); if ((toomcook3(161 !, 171 !) - (161 ! *171 !)) != 0) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t020() { local eps; eps = epsilon(1e-20); if ((toomcook3square(161 !) - (161 ! ^2)) != 0) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t021() { local eps; eps = epsilon(1e-20); if ((toomcook4(561 !, 571 !) - (561 ! *571 !)) != 0) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t022() { local eps; eps = epsilon(1e-20); if ((toomcook4square(561 !) - (561 ! ^2)) != 0) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t023() { local eps; eps = epsilon(1e-20); if ((fallingfactorial(1, 0) - (1)) != 0) { epsilon(eps); return 1; } if ((fallingfactorial(10, 5) - (30240)) != 0) { epsilon(eps); return 2; } if (abs(fallingfactorial(10.5, 5.5) - (99161.85903301873714177523949)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (fallingfactorial(5.5 + 5.6i, 2.2 + 2.6i) - (9.29931208830258420309197062886 + 1.28691176641462072673306933720i)) > __CZ__eps) { epsilon(eps); return 4; } epsilon(eps); return 0; } define t024() { local eps; eps = epsilon(1e-20); if (abs (gammainc(10.5, 5.5) - (1.0911054922884267714587707298319763515031034460618e6)) > __CZ__eps) { epsilon(eps); return 1; } if (abs (gammainc(-10.5, 5.5) - (4.2078651459391823080015064331563180161168802280640e-12)) > __CZ__eps) { epsilon(eps); return 2; } if (abs (gammainc(-10.5, -5.5) - (-2.6401218205477163162463853253112404396824684325226e-7 - 9.9525091595256241288827723005552353976489914201570e-7i)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (gammainc(1.5, .5) - (0.71009105827755696037984229929040777357378308627454)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (gammainc(1.5, -.5) - (0.88622692545275801364908374167057259139877472806119 + 0.32085932483101833896117715124223338525178610972460i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (gammainc(-1.5, -.5) - (2.3632718012073547030642233111215269103967326081632 + 3.9644835083455478417145204862038235291784113581824i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (gammainc(1.6 + 2.3i, 2.3 + 1.4i) - (-0.023112977574442024349110845737131658924522434973607 + 0.070013601354006150597855752670117927127985847641410i)) > __CZ__eps) { epsilon(eps); return 7; } if (abs (gammainc(-1.6 + 2.3i, 2.3 + 1.4i) - (0.00129628045952650890786497724124399230099593819048313 + 0.00015977289383944841440851534670535231366264702893907i)) > __CZ__eps) { epsilon(eps); return 8; } if (abs (gammainc(1.6 + 2.3i, -2.3 + 1.4i) - (0.08011526555206793146266272247818512925483090324121 + 0.18864341054002800687777400618294098230871057870324i)) > __CZ__eps) { epsilon(eps); return 9; } if (abs (gammainc(-1.6 + 2.3i, -2.3 + 1.4i) - (-0.0011066646302249434949283340601015297970855623709232 + 0.0066140667340761534747256896056105993963563038859892i)) > __CZ__eps) { epsilon(eps); return 10; } if (abs (gammainc(-1.6 + 2.3i, -2.3 - 1.4i) - (-192.26502410894853081990761345498010642885875566887 - 9.20687819570448375251655049593050937346609469761i)) > __CZ__eps) { epsilon(eps); return 11; } if (abs (gammainc(-1.6 - 2.3i, -2.3 - 1.4i) - (-0.0011066646302249434949283340601015297970855623709232 - 0.0066140667340761534747256896056105993963563038859892i)) > __CZ__eps) { epsilon(eps); return 11; } epsilon(eps); return 0; } define t025() { local eps; eps = epsilon(1e-20); if (abs (expoint(12) - (14959.5326663975288522924618760575328096988328805595)) > __CZ__eps) { epsilon(eps); return 1; } if (abs (expoint(-12) - (-4.75108182467249393259461269666144183573679127590926e-7)) > __CZ__eps) { epsilon(eps); return 2; } if (abs (expoint(1.2) - (2.44209228519265163972909726430649285323724645317842)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (expoint(-1.2) - (-0.158408436851462561424955970710861738534157976840579)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (expoint(12 + 12i) - (1705.83261134074122070523718220504604600321580158721 - 9839.85856317985996646693634577761869375870438645474i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (expoint(12 - 12i) - (1705.83261134074122070523718220504604600321580158721 + 9839.85856317985996646693634577761869375870438645474i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (expoint(-12 + 12i) - (-3.4169734885007076190668662199892409755505147e-7 + 3.14159259071528119035402366471290026841357196537325i)) > __CZ__eps) { epsilon(eps); return 7; } if (abs (expoint(12i) - (-0.04978000688411367559592120873699061022711118653376 + 3.07576756832126998975847022375791405102780057904392i)) > __CZ__eps) { epsilon(eps); return 8; } if (abs (expoint(-12i) - (-0.04978000688411367559592120873699061022711118653376 - 3.07576756832126998975847022375791405102780057904392i)) > __CZ__eps) { epsilon(eps); return 9; } /* problem with checking, result is correct for more than 20 dec. digits starting from the left */ if (abs (expoint(120 + 12i) - (8.56859444638801538211461026892024105606765234361709e49 - 6.74517461831409343681783273107064901497483026647260e49i)) > __CZ__eps) { ##epsilon(eps); ##return 10; } if (abs (expoint(-120 + 12i) - (+3.14159265358979323846264338327950288419716939937511i)) > __CZ__eps) { epsilon(eps); return 11; } if (abs (expoint(-120 - 12i) - (-3.14159265358979323846264338327950288419716939937511i)) > __CZ__eps) { epsilon(eps); return 12; } epsilon(eps); return 0; } define t026() { local eps; eps = epsilon(1e-20); if (abs(erf(-120 - 12i) - (-1)) > __CZ__eps) { epsilon(eps); return 1; } if (abs(erf(99.99) - (1)) > __CZ__eps) { epsilon(eps); return 2; } /* 45 dec. digits for eps=1e-50 */ if (abs(erf(9.99) - (0.9999999999999999999999999999999999999999999974468)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (erf(-2.3 - 1.4i) - (-0.99424424422056398724487886415624629344477362313756 - 0.00438943284364679943396666714992729629504347523747i)) > __CZ__eps) { epsilon(eps); return 4; } if (abs(erf(-2.3) - (-0.99885682340264334853465254061923085980585130855731)) > __CZ__eps) { epsilon(eps); return 5; } if (abs(erf(2.3) - (0.99885682340264334853465254061923085980585130855731)) > __CZ__eps) { epsilon(eps); return 6; } if (abs(erf(.99) - (0.83850806955536980357979023052992329627081601140813)) > __CZ__eps) { epsilon(eps); return 7; } epsilon(eps); return 0; } /* The rest of the error functions are just slight variations and get only one test to check if they are implemented at all. */ define t027() { local eps; eps = epsilon(1e-20); if (abs(erfc(.99) - (0.16149193044463019642020976947007670372918398859187)) > __CZ__eps) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t028() { local eps; eps = epsilon(1e-20); if (abs(erfi(.99) - (1.6200569163157349040754017322766470558922229178510)) > __CZ__eps) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t029() { local eps; eps = epsilon(1e-20); if (abs (faddeeva(.99) - (0.37527356961800734273134990254630990179418484551111 + 0.60796454197014723823608088189149188617146675891187i)) > __CZ__eps) { epsilon(eps); return 1; } epsilon(eps); return 0; } /* The beta function is implemented by way of the gamma function, so only one check if it is implemented at all. Such the author thought but had the surprise of an rounding error and had to raise the precision internally for the beta function. And the moral of the story is... */ define t030() { local eps; eps = epsilon(1e-20); if (abs (beta(1.3 + 2.4i, -4.5 - 5.6i) - (0.000034922633369217658778094854951087306276597448077494 - 0.000016960351329535510681653275397511166236842713819260i)) > __CZ__eps) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t031() { local eps; eps = epsilon(1e-20); if (abs(betainc(1 / 2, 3, 2) - (5 / 16)) > __CZ__eps) { epsilon(eps); return 1; } if (abs (betainc(1 / 2, 3.2, 2.2) - (0.32023348284114229739228778858728452204329664688830)) > __CZ__eps) { epsilon(eps); return 2; } if (abs (betainc(1 / exp(1), 3.2, 2.2) - (0.143501414415760044882767192140002923147960247904570923787840)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (betainc(1 / exp(1), 3.2 + 2.2i, 2.2 + 3.2i) - (0.1920631154241732316251688573913064389571283459161802570675 + 0.05732686873367104592514061113957628848615221217965454321767i)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (betainc(1 / exp(1), 3.2 - 2.2i, 2.2 + 3.2i) - (-1.607827926223643076788007453936176458240169077851360442476 + 0.3252661246098073645694057662278573284778244036835313591942i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (betainc(1 / exp(1), 3.2 - 2.2i, 2.2 - 3.2i) - (0.1920631154241732316251688573913064389571283459161802570675 - 0.05732686873367104592514061113957628848615221217965454321767i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (betainc(.3 + .2i, 3.2 - 2.2i, 2.2 - 3.2i) - (0.14627145927962494526466549157120107465791647692488861570015 + 0.34598256304551640762453165549710979002810660424791884148625i)) > __CZ__eps) { epsilon(eps); return 7; } epsilon(eps); return 0; } define t032() { local eps; eps = epsilon(1e-20); if (abs(bernpoly(1, 10)) - (19 / 2) > __CZ__eps) { epsilon(eps); return 1; } if (abs(bernpoly(10, 10)) - (379041290105 / 66) > __CZ__eps) { epsilon(eps); return 2; } if (abs(bernpoly(-10, 10)) - (0.00000000015893950304018571788968681852452102762225) > __CZ__eps) { epsilon(eps); return 3; } if (abs(bernpoly(1.1, 10)) - (11.89799882840077795855328366923295539944336494342302) > __CZ__eps) { epsilon(eps); return 4; } if (abs(bernpoly(3, 1.1)) - (33 / 500) > __CZ__eps) { epsilon(eps); return 5; } if (abs(bernpoly(3, 1.1 + 2.2i)) - (-8.646 - 8.822i) > __CZ__eps) { epsilon(eps); return 6; } epsilon(eps); return 0; } define t033() { local eps epsexp EM1; eps = epsilon(1e-20); /* The Omega-constant */ if (abs (lambertw(1, 0) - (0.567143290409783872999968662210355549753815787186512508135131)) > __CZ__eps) { epsilon(eps); return 1; } if (abs (lambertw(-1, 0) - (-0.3181315052047641353126542515876645172035176138713998669223 + 1.337235701430689408901162143193710612539502138460512418876i)) > __CZ__eps) { epsilon(eps); return 2; } if (abs(lambertw(-exp(-1), 0) - (-1)) > __CZ__eps) { epsilon(eps); return 3; } /* We have to calculate -exp(1-) with higher precision here because the numbers we test against have been calculated with Mathematica(tm) and, where possible, with the series, too, with epsilon = 1e-200. */ epsexp = epsilon(epsilon() * 1e-10); EM1 = -exp(-1); epsilon(epsexp); if (abs (lambertw(EM1 + .001, 0) - (-0.92802015005456704876004302525492122474886334787070023086031)) > __CZ__eps) { epsilon(eps); return 4; } if (abs (lambertw(EM1 - .001, 0) - (-0.998190161498609890007959968479276047800779184376006463826 + 0.0736719118893463857740469900181632551190421844567768514726i)) > __CZ__eps) { epsilon(eps); return 5; } if (abs (lambertw_series(EM1 - .001, epsilon(), 0) - (-0.998190161498609890007959968479276047800779184376006463826 + 0.0736719118893463857740469900181632551190421844567768514726i)) > __CZ__eps) { epsilon(eps); return 6; } if (abs (lambertw(-2.2 - 3.2i, -3) - (-1.6104280970561586263262514675217857074068306154494786722437 - 19.368888979715570028505505411206710993669557347359767961957i)) > __CZ__eps) { epsilon(eps); return 1; } epsilon(eps); return 0; } /* Test the logarithm list, a bit different from the tests above.*/ define t034() { local eps sum k; eps = epsilon(1e-20); sum = 0; lnseries(10000); for (k = 1; k < 10000; k++) { sum += lnfromseries(k); } if (abs(sum - lngamma(10000)) > __CZ__eps) { epsilon(eps); return 1; } epsilon(eps); return 0; } define t035() { local eps; eps = epsilon(1e-20); if (abs(invbetainc(0, 1, 2) - (0)) > __CZ__eps) { epsilon(eps); return 1; } if (abs(invbetainc(1, 1, 2) - (1)) > __CZ__eps) { epsilon(eps); return 2; } if (abs (invbetainc(.6, 2, 2) - (0.567068922852268236254340214074933386511229358602804986856523)) > __CZ__eps) { epsilon(eps); return 3; } if (abs (invbetainc(.6, 200, 200) - 0.50633738276018061834297937341956576111427477636401902379793) > __CZ__eps) { epsilon(eps); return 4; } if (abs (invbetainc(.6, 200, 100) - 0.673912010450469394843418496081985274734344595591643614514860) > __CZ__eps) { epsilon(eps); return 5; } if (abs (invbetainc(.6, 100, 200) - 0.339884769324050809456643025345905001680568878491743324211449) > __CZ__eps) { epsilon(eps); return 6; } /* Percentiles. Numbers shamlessly stolen from a question at stackoverflow*/ if (abs (invbetainc(0.025, 10008, 151744) - 0.060703546312525377697082321820950758320207425674954679415395) > __CZ__eps) { epsilon(eps); return 7; } if (abs (invbetainc(0.5, 10008, 151744) - 0.061870690413044293003568412977601333629269461143858842860376) > __CZ__eps) { epsilon(eps); return 8; } if (abs (invbetainc(0.975, 10008, 151744) - 0.063051707940007549704137764265896313422520123493324715525400) > __CZ__eps) { epsilon(eps); return 9; } /* 3 sigma. But _way_ too slow. */ if (abs (invbetainc(0.997, 10008, 151744) - 0.06353033717730117616403237097166742264875876591597) > __CZ__eps) { epsilon(eps); return 10; } epsilon(eps); return 0; } /* Quadrature. Test values stolen, without any shame, from mpmath*/ define f(x){return sin(x);} define t036(){ local eps; eps = epsilon(1e-20); if( abs( quadts(0,pi()) - 2 )> __CZ__eps){ epsilon(eps); return 1; } if( abs( quadts(0,pi()) - 2 )> __CZ__eps){ epsilon(eps); return 2; } epsilon(eps); return 0; } /* every test would need an extra file define f(x){ return 2/(x**2+1);} define t037(){ local eps; eps = epsilon(1e-20); if( abs( quadts(0,pinf()) - pi() )> __CZ__eps){ epsilon(eps); return 1; } if( abs( quadgl(0,pinf()) - pi() )> __CZ__eps){ epsilon(eps); return 2; } undefine f; epsilon(eps); return 0; } define f(x){ return exp(-x^2);} define t038(){ local eps; eps = epsilon(1e-20); if( abs( quadgl(ninf(),pinf()) - sqrt(pi()) )> __CZ__eps){ epsilon(eps); return 1; } if( abs( quadts(ninf(),pinf()) - sqrt(pi()) )> __CZ__eps){ epsilon(eps); return 2; } undefine f; epsilon(eps); return 0; } define f(x){ return 1/x; } define t039(){ local eps; eps = epsilon(1e-20); if( abs( quadts(1,1,mat[3]={1i,-1,-1i}) - 2i*pi() )> __CZ__eps){ epsilon(eps); return 1; } if( abs( quadgl(1,1,mat[3]={1i,-1,-1i}) - 2i*pi() )> __CZ__eps){ epsilon(eps); return 2; } undefine f; epsilon(eps); return 0; } define f(x){ return abs(sin(x));} define t040(){ local eps; eps = epsilon(1e-20); if( abs( quadts(0,2*pi(),mat[1]={pi()}) - 4 )> __CZ__eps){ epsilon(eps); return 9; } if( abs( quadgl(0,2*pi(),mat[1]={pi()}) - 4 )> __CZ__eps){ epsilon(eps); return 10; } undefine f; epsilon(eps); return 0; } */ /* Symbolic infinities */ define t037(){ local eps; eps = epsilon(1e-20); if( !isinfinite(cinf()) ){ epsilon(eps); return 1; } if( !isinfinite(pinf()) ){ epsilon(eps); return 2; } if( !isinfinite(ninf())){ epsilon(eps); return 3; } if(!iscinf(cinf()) ){ epsilon(eps); return 4; } if( !ispinf(pinf())){ epsilon(eps); return 5; } if(!isninf(ninf()) ){ epsilon(eps); return 6; } epsilon(eps); return 0; } /* */ /*define t038(){ local eps; eps = epsilon(1e-20); if( abs( ) - ( )> __CZ__eps){ epsilon(eps); return 1; } epsilon(eps); return 0; }*/ /* * The main test8900 test section harness * * The regress.cal calls this function as: * * testnum = test8900(1,, 8903); */ define test8900(verbose = 0, tnum, testnum = 8903) { local n; local err; /* do not forget to delete! */ local i, old_errmax; /* * parse args */ n = 37; /* number of subtests */ if (isnull(verbose)) { verbose = 0; } if (isnull(tnum)) { tnum = 1; /* initial test number */ } /* * run just one test */ else { err = eval(strcat("t0", str(tnum), "()")); if (verbose) { if (err) { print "*** error", err, ": found in test8900.cal function test", strcat("t0", str(tnum)); } else { print "no errors in test", strcat("t0", str(tnum)); } } return tnum; } /* We will cause erors intentionally. A lot of them. */ old_errmax = errmax(-1); /* * test a lot of stuff */ for (i = 0; i < n; ++i) { /* run a test */ err += eval(strcat("t0", str(tnum++), "()")); if (verbose) { if (err) { print "*** error", err, "in test", testnum:":", strcat("t0", str(tnum - 1), "()"), " - ", eval(strcat("t0", str(tnum - 1), "()")); } else { print testnum:": no errors in test", strcat("t0", str(tnum - 1)); } } ++testnum; } if (verbose) { if (err) { print "***", testnum:":", err, "error(s) found in test8900.cal"; } else { print testnum:":", "no errors in test8900.cal"; } } ++testnum; /* restore error maximum */ errmax(old_errmax); return testnum; }