Files
calc/cal/test8900.cal
Landon Curt Noll a31078bbec Remove all RCS @(#) lines and RCS strings
Some folks might think: “you still use RCS”?!?  And we will say,
hey, at least we switched from SCCS to RCS back in … I think it was
around 1994 ... at least we are keeping up! :-) :-) :-)

Logs say that SCCS version 18 became RCS version 19 on 1994 March 18.

RCS served us well.  But now it is time to move on.   And so we are
switching to git.

Calc releases produce a lot of file changes.  In the 125 releases
of calc since 1996, when I started managing calc releases, there
have been 15473 file mods!
2017-05-23 01:33:23 -07:00

3117 lines
72 KiB
Plaintext

/*
* test8900 - 8900 series of the regress.cal test suite
*
* Copyright (C) 2013 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 contribued 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
* independant 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 halfplane 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;
}
if ((stirling2(10, 5) - (42525)) != 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;
}