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