1 // { dg-do run { target c++11 } }
2 // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
3 //
4 // Copyright (C) 2016-2021 Free Software Foundation, Inc.
5 //
6 // This file is part of the GNU ISO C++ Library.  This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 3, or (at your option)
10 // any later version.
11 //
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING3.  If not see
19 // <http://www.gnu.org/licenses/>.
20 
21 //  assoc_laguerre
22 //  Compare against values generated by the GNU Scientific Library.
23 //  The GSL can be found on the web: http://www.gnu.org/software/gsl/
24 #include <limits>
25 #include <cmath>
26 #if defined(__TEST_DEBUG)
27 #  include <iostream>
28 #  define VERIFY(A) \
29   if (!(A)) \
30     { \
31       std::cout << "line " << __LINE__ \
32 	<< "  max_abs_frac = " << max_abs_frac \
33 	<< std::endl; \
34     }
35 #else
36 #  include <testsuite_hooks.h>
37 #endif
38 #include <specfun_testcase.h>
39 
40 // Test data for n=0, m=0.
41 // max(|f - f_GSL|): 0.0000000000000000 at index 0
42 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
43 // mean(f - f_GSL): 0.0000000000000000
44 // variance(f - f_GSL): 0.0000000000000000
45 // stddev(f - f_GSL): 0.0000000000000000
46 const testcase_assoc_laguerre<double>
47 data001[11] =
48 {
49   { 1.0000000000000000, 0, 0,
50 	  0.0000000000000000, 0.0 },
51   { 1.0000000000000000, 0, 0,
52 	  10.000000000000000, 0.0 },
53   { 1.0000000000000000, 0, 0,
54 	  20.000000000000000, 0.0 },
55   { 1.0000000000000000, 0, 0,
56 	  30.000000000000000, 0.0 },
57   { 1.0000000000000000, 0, 0,
58 	  40.000000000000000, 0.0 },
59   { 1.0000000000000000, 0, 0,
60 	  50.000000000000000, 0.0 },
61   { 1.0000000000000000, 0, 0,
62 	  60.000000000000000, 0.0 },
63   { 1.0000000000000000, 0, 0,
64 	  70.000000000000000, 0.0 },
65   { 1.0000000000000000, 0, 0,
66 	  80.000000000000000, 0.0 },
67   { 1.0000000000000000, 0, 0,
68 	  90.000000000000000, 0.0 },
69   { 1.0000000000000000, 0, 0,
70 	  100.00000000000000, 0.0 },
71 };
72 const double toler001 = 2.5000000000000020e-13;
73 
74 // Test data for n=0, m=1.
75 // max(|f - f_GSL|): 0.0000000000000000 at index 0
76 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
77 // mean(f - f_GSL): 0.0000000000000000
78 // variance(f - f_GSL): 0.0000000000000000
79 // stddev(f - f_GSL): 0.0000000000000000
80 const testcase_assoc_laguerre<double>
81 data002[11] =
82 {
83   { 1.0000000000000000, 0, 1,
84 	  0.0000000000000000, 0.0 },
85   { 1.0000000000000000, 0, 1,
86 	  10.000000000000000, 0.0 },
87   { 1.0000000000000000, 0, 1,
88 	  20.000000000000000, 0.0 },
89   { 1.0000000000000000, 0, 1,
90 	  30.000000000000000, 0.0 },
91   { 1.0000000000000000, 0, 1,
92 	  40.000000000000000, 0.0 },
93   { 1.0000000000000000, 0, 1,
94 	  50.000000000000000, 0.0 },
95   { 1.0000000000000000, 0, 1,
96 	  60.000000000000000, 0.0 },
97   { 1.0000000000000000, 0, 1,
98 	  70.000000000000000, 0.0 },
99   { 1.0000000000000000, 0, 1,
100 	  80.000000000000000, 0.0 },
101   { 1.0000000000000000, 0, 1,
102 	  90.000000000000000, 0.0 },
103   { 1.0000000000000000, 0, 1,
104 	  100.00000000000000, 0.0 },
105 };
106 const double toler002 = 2.5000000000000020e-13;
107 
108 // Test data for n=0, m=2.
109 // max(|f - f_GSL|): 0.0000000000000000 at index 0
110 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
111 // mean(f - f_GSL): 0.0000000000000000
112 // variance(f - f_GSL): 0.0000000000000000
113 // stddev(f - f_GSL): 0.0000000000000000
114 const testcase_assoc_laguerre<double>
115 data003[11] =
116 {
117   { 1.0000000000000000, 0, 2,
118 	  0.0000000000000000, 0.0 },
119   { 1.0000000000000000, 0, 2,
120 	  10.000000000000000, 0.0 },
121   { 1.0000000000000000, 0, 2,
122 	  20.000000000000000, 0.0 },
123   { 1.0000000000000000, 0, 2,
124 	  30.000000000000000, 0.0 },
125   { 1.0000000000000000, 0, 2,
126 	  40.000000000000000, 0.0 },
127   { 1.0000000000000000, 0, 2,
128 	  50.000000000000000, 0.0 },
129   { 1.0000000000000000, 0, 2,
130 	  60.000000000000000, 0.0 },
131   { 1.0000000000000000, 0, 2,
132 	  70.000000000000000, 0.0 },
133   { 1.0000000000000000, 0, 2,
134 	  80.000000000000000, 0.0 },
135   { 1.0000000000000000, 0, 2,
136 	  90.000000000000000, 0.0 },
137   { 1.0000000000000000, 0, 2,
138 	  100.00000000000000, 0.0 },
139 };
140 const double toler003 = 2.5000000000000020e-13;
141 
142 // Test data for n=0, m=5.
143 // max(|f - f_GSL|): 0.0000000000000000 at index 0
144 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
145 // mean(f - f_GSL): 0.0000000000000000
146 // variance(f - f_GSL): 0.0000000000000000
147 // stddev(f - f_GSL): 0.0000000000000000
148 const testcase_assoc_laguerre<double>
149 data004[11] =
150 {
151   { 1.0000000000000000, 0, 5,
152 	  0.0000000000000000, 0.0 },
153   { 1.0000000000000000, 0, 5,
154 	  10.000000000000000, 0.0 },
155   { 1.0000000000000000, 0, 5,
156 	  20.000000000000000, 0.0 },
157   { 1.0000000000000000, 0, 5,
158 	  30.000000000000000, 0.0 },
159   { 1.0000000000000000, 0, 5,
160 	  40.000000000000000, 0.0 },
161   { 1.0000000000000000, 0, 5,
162 	  50.000000000000000, 0.0 },
163   { 1.0000000000000000, 0, 5,
164 	  60.000000000000000, 0.0 },
165   { 1.0000000000000000, 0, 5,
166 	  70.000000000000000, 0.0 },
167   { 1.0000000000000000, 0, 5,
168 	  80.000000000000000, 0.0 },
169   { 1.0000000000000000, 0, 5,
170 	  90.000000000000000, 0.0 },
171   { 1.0000000000000000, 0, 5,
172 	  100.00000000000000, 0.0 },
173 };
174 const double toler004 = 2.5000000000000020e-13;
175 
176 // Test data for n=0, m=10.
177 // max(|f - f_GSL|): 0.0000000000000000 at index 0
178 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
179 // mean(f - f_GSL): 0.0000000000000000
180 // variance(f - f_GSL): 0.0000000000000000
181 // stddev(f - f_GSL): 0.0000000000000000
182 const testcase_assoc_laguerre<double>
183 data005[11] =
184 {
185   { 1.0000000000000000, 0, 10,
186 	  0.0000000000000000, 0.0 },
187   { 1.0000000000000000, 0, 10,
188 	  10.000000000000000, 0.0 },
189   { 1.0000000000000000, 0, 10,
190 	  20.000000000000000, 0.0 },
191   { 1.0000000000000000, 0, 10,
192 	  30.000000000000000, 0.0 },
193   { 1.0000000000000000, 0, 10,
194 	  40.000000000000000, 0.0 },
195   { 1.0000000000000000, 0, 10,
196 	  50.000000000000000, 0.0 },
197   { 1.0000000000000000, 0, 10,
198 	  60.000000000000000, 0.0 },
199   { 1.0000000000000000, 0, 10,
200 	  70.000000000000000, 0.0 },
201   { 1.0000000000000000, 0, 10,
202 	  80.000000000000000, 0.0 },
203   { 1.0000000000000000, 0, 10,
204 	  90.000000000000000, 0.0 },
205   { 1.0000000000000000, 0, 10,
206 	  100.00000000000000, 0.0 },
207 };
208 const double toler005 = 2.5000000000000020e-13;
209 
210 // Test data for n=0, m=20.
211 // max(|f - f_GSL|): 0.0000000000000000 at index 0
212 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
213 // mean(f - f_GSL): 0.0000000000000000
214 // variance(f - f_GSL): 0.0000000000000000
215 // stddev(f - f_GSL): 0.0000000000000000
216 const testcase_assoc_laguerre<double>
217 data006[11] =
218 {
219   { 1.0000000000000000, 0, 20,
220 	  0.0000000000000000, 0.0 },
221   { 1.0000000000000000, 0, 20,
222 	  10.000000000000000, 0.0 },
223   { 1.0000000000000000, 0, 20,
224 	  20.000000000000000, 0.0 },
225   { 1.0000000000000000, 0, 20,
226 	  30.000000000000000, 0.0 },
227   { 1.0000000000000000, 0, 20,
228 	  40.000000000000000, 0.0 },
229   { 1.0000000000000000, 0, 20,
230 	  50.000000000000000, 0.0 },
231   { 1.0000000000000000, 0, 20,
232 	  60.000000000000000, 0.0 },
233   { 1.0000000000000000, 0, 20,
234 	  70.000000000000000, 0.0 },
235   { 1.0000000000000000, 0, 20,
236 	  80.000000000000000, 0.0 },
237   { 1.0000000000000000, 0, 20,
238 	  90.000000000000000, 0.0 },
239   { 1.0000000000000000, 0, 20,
240 	  100.00000000000000, 0.0 },
241 };
242 const double toler006 = 2.5000000000000020e-13;
243 
244 // Test data for n=0, m=50.
245 // max(|f - f_GSL|): 0.0000000000000000 at index 0
246 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
247 // mean(f - f_GSL): 0.0000000000000000
248 // variance(f - f_GSL): 0.0000000000000000
249 // stddev(f - f_GSL): 0.0000000000000000
250 const testcase_assoc_laguerre<double>
251 data007[11] =
252 {
253   { 1.0000000000000000, 0, 50,
254 	  0.0000000000000000, 0.0 },
255   { 1.0000000000000000, 0, 50,
256 	  10.000000000000000, 0.0 },
257   { 1.0000000000000000, 0, 50,
258 	  20.000000000000000, 0.0 },
259   { 1.0000000000000000, 0, 50,
260 	  30.000000000000000, 0.0 },
261   { 1.0000000000000000, 0, 50,
262 	  40.000000000000000, 0.0 },
263   { 1.0000000000000000, 0, 50,
264 	  50.000000000000000, 0.0 },
265   { 1.0000000000000000, 0, 50,
266 	  60.000000000000000, 0.0 },
267   { 1.0000000000000000, 0, 50,
268 	  70.000000000000000, 0.0 },
269   { 1.0000000000000000, 0, 50,
270 	  80.000000000000000, 0.0 },
271   { 1.0000000000000000, 0, 50,
272 	  90.000000000000000, 0.0 },
273   { 1.0000000000000000, 0, 50,
274 	  100.00000000000000, 0.0 },
275 };
276 const double toler007 = 2.5000000000000020e-13;
277 
278 // Test data for n=0, m=100.
279 // max(|f - f_GSL|): 0.0000000000000000 at index 0
280 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
281 // mean(f - f_GSL): 0.0000000000000000
282 // variance(f - f_GSL): 0.0000000000000000
283 // stddev(f - f_GSL): 0.0000000000000000
284 const testcase_assoc_laguerre<double>
285 data008[11] =
286 {
287   { 1.0000000000000000, 0, 100,
288 	  0.0000000000000000, 0.0 },
289   { 1.0000000000000000, 0, 100,
290 	  10.000000000000000, 0.0 },
291   { 1.0000000000000000, 0, 100,
292 	  20.000000000000000, 0.0 },
293   { 1.0000000000000000, 0, 100,
294 	  30.000000000000000, 0.0 },
295   { 1.0000000000000000, 0, 100,
296 	  40.000000000000000, 0.0 },
297   { 1.0000000000000000, 0, 100,
298 	  50.000000000000000, 0.0 },
299   { 1.0000000000000000, 0, 100,
300 	  60.000000000000000, 0.0 },
301   { 1.0000000000000000, 0, 100,
302 	  70.000000000000000, 0.0 },
303   { 1.0000000000000000, 0, 100,
304 	  80.000000000000000, 0.0 },
305   { 1.0000000000000000, 0, 100,
306 	  90.000000000000000, 0.0 },
307   { 1.0000000000000000, 0, 100,
308 	  100.00000000000000, 0.0 },
309 };
310 const double toler008 = 2.5000000000000020e-13;
311 
312 // Test data for n=1, m=0.
313 // max(|f - f_GSL|): 0.0000000000000000 at index 0
314 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
315 // mean(f - f_GSL): 0.0000000000000000
316 // variance(f - f_GSL): 0.0000000000000000
317 // stddev(f - f_GSL): 0.0000000000000000
318 const testcase_assoc_laguerre<double>
319 data009[11] =
320 {
321   { 1.0000000000000000, 1, 0,
322 	  0.0000000000000000, 0.0 },
323   { -9.0000000000000000, 1, 0,
324 	  10.000000000000000, 0.0 },
325   { -19.000000000000000, 1, 0,
326 	  20.000000000000000, 0.0 },
327   { -29.000000000000000, 1, 0,
328 	  30.000000000000000, 0.0 },
329   { -39.000000000000000, 1, 0,
330 	  40.000000000000000, 0.0 },
331   { -49.000000000000000, 1, 0,
332 	  50.000000000000000, 0.0 },
333   { -59.000000000000000, 1, 0,
334 	  60.000000000000000, 0.0 },
335   { -69.000000000000000, 1, 0,
336 	  70.000000000000000, 0.0 },
337   { -79.000000000000000, 1, 0,
338 	  80.000000000000000, 0.0 },
339   { -89.000000000000000, 1, 0,
340 	  90.000000000000000, 0.0 },
341   { -99.000000000000000, 1, 0,
342 	  100.00000000000000, 0.0 },
343 };
344 const double toler009 = 2.5000000000000020e-13;
345 
346 // Test data for n=1, m=1.
347 // max(|f - f_GSL|): 0.0000000000000000 at index 0
348 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
349 // mean(f - f_GSL): 0.0000000000000000
350 // variance(f - f_GSL): 0.0000000000000000
351 // stddev(f - f_GSL): 0.0000000000000000
352 const testcase_assoc_laguerre<double>
353 data010[11] =
354 {
355   { 2.0000000000000000, 1, 1,
356 	  0.0000000000000000, 0.0 },
357   { -8.0000000000000000, 1, 1,
358 	  10.000000000000000, 0.0 },
359   { -18.000000000000000, 1, 1,
360 	  20.000000000000000, 0.0 },
361   { -28.000000000000000, 1, 1,
362 	  30.000000000000000, 0.0 },
363   { -38.000000000000000, 1, 1,
364 	  40.000000000000000, 0.0 },
365   { -48.000000000000000, 1, 1,
366 	  50.000000000000000, 0.0 },
367   { -58.000000000000000, 1, 1,
368 	  60.000000000000000, 0.0 },
369   { -68.000000000000000, 1, 1,
370 	  70.000000000000000, 0.0 },
371   { -78.000000000000000, 1, 1,
372 	  80.000000000000000, 0.0 },
373   { -88.000000000000000, 1, 1,
374 	  90.000000000000000, 0.0 },
375   { -98.000000000000000, 1, 1,
376 	  100.00000000000000, 0.0 },
377 };
378 const double toler010 = 2.5000000000000020e-13;
379 
380 // Test data for n=1, m=2.
381 // max(|f - f_GSL|): 0.0000000000000000 at index 0
382 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
383 // mean(f - f_GSL): 0.0000000000000000
384 // variance(f - f_GSL): 0.0000000000000000
385 // stddev(f - f_GSL): 0.0000000000000000
386 const testcase_assoc_laguerre<double>
387 data011[11] =
388 {
389   { 3.0000000000000000, 1, 2,
390 	  0.0000000000000000, 0.0 },
391   { -7.0000000000000000, 1, 2,
392 	  10.000000000000000, 0.0 },
393   { -17.000000000000000, 1, 2,
394 	  20.000000000000000, 0.0 },
395   { -27.000000000000000, 1, 2,
396 	  30.000000000000000, 0.0 },
397   { -37.000000000000000, 1, 2,
398 	  40.000000000000000, 0.0 },
399   { -47.000000000000000, 1, 2,
400 	  50.000000000000000, 0.0 },
401   { -57.000000000000000, 1, 2,
402 	  60.000000000000000, 0.0 },
403   { -67.000000000000000, 1, 2,
404 	  70.000000000000000, 0.0 },
405   { -77.000000000000000, 1, 2,
406 	  80.000000000000000, 0.0 },
407   { -87.000000000000000, 1, 2,
408 	  90.000000000000000, 0.0 },
409   { -97.000000000000000, 1, 2,
410 	  100.00000000000000, 0.0 },
411 };
412 const double toler011 = 2.5000000000000020e-13;
413 
414 // Test data for n=1, m=5.
415 // max(|f - f_GSL|): 0.0000000000000000 at index 0
416 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
417 // mean(f - f_GSL): 0.0000000000000000
418 // variance(f - f_GSL): 0.0000000000000000
419 // stddev(f - f_GSL): 0.0000000000000000
420 const testcase_assoc_laguerre<double>
421 data012[11] =
422 {
423   { 6.0000000000000000, 1, 5,
424 	  0.0000000000000000, 0.0 },
425   { -4.0000000000000000, 1, 5,
426 	  10.000000000000000, 0.0 },
427   { -14.000000000000000, 1, 5,
428 	  20.000000000000000, 0.0 },
429   { -24.000000000000000, 1, 5,
430 	  30.000000000000000, 0.0 },
431   { -34.000000000000000, 1, 5,
432 	  40.000000000000000, 0.0 },
433   { -44.000000000000000, 1, 5,
434 	  50.000000000000000, 0.0 },
435   { -54.000000000000000, 1, 5,
436 	  60.000000000000000, 0.0 },
437   { -64.000000000000000, 1, 5,
438 	  70.000000000000000, 0.0 },
439   { -74.000000000000000, 1, 5,
440 	  80.000000000000000, 0.0 },
441   { -84.000000000000000, 1, 5,
442 	  90.000000000000000, 0.0 },
443   { -94.000000000000000, 1, 5,
444 	  100.00000000000000, 0.0 },
445 };
446 const double toler012 = 2.5000000000000020e-13;
447 
448 // Test data for n=1, m=10.
449 // max(|f - f_GSL|): 0.0000000000000000 at index 0
450 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
451 // mean(f - f_GSL): 0.0000000000000000
452 // variance(f - f_GSL): 0.0000000000000000
453 // stddev(f - f_GSL): 0.0000000000000000
454 const testcase_assoc_laguerre<double>
455 data013[11] =
456 {
457   { 11.000000000000000, 1, 10,
458 	  0.0000000000000000, 0.0 },
459   { 1.0000000000000000, 1, 10,
460 	  10.000000000000000, 0.0 },
461   { -9.0000000000000000, 1, 10,
462 	  20.000000000000000, 0.0 },
463   { -19.000000000000000, 1, 10,
464 	  30.000000000000000, 0.0 },
465   { -29.000000000000000, 1, 10,
466 	  40.000000000000000, 0.0 },
467   { -39.000000000000000, 1, 10,
468 	  50.000000000000000, 0.0 },
469   { -49.000000000000000, 1, 10,
470 	  60.000000000000000, 0.0 },
471   { -59.000000000000000, 1, 10,
472 	  70.000000000000000, 0.0 },
473   { -69.000000000000000, 1, 10,
474 	  80.000000000000000, 0.0 },
475   { -79.000000000000000, 1, 10,
476 	  90.000000000000000, 0.0 },
477   { -89.000000000000000, 1, 10,
478 	  100.00000000000000, 0.0 },
479 };
480 const double toler013 = 2.5000000000000020e-13;
481 
482 // Test data for n=1, m=20.
483 // max(|f - f_GSL|): 0.0000000000000000 at index 0
484 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
485 // mean(f - f_GSL): 0.0000000000000000
486 // variance(f - f_GSL): 0.0000000000000000
487 // stddev(f - f_GSL): 0.0000000000000000
488 const testcase_assoc_laguerre<double>
489 data014[11] =
490 {
491   { 21.000000000000000, 1, 20,
492 	  0.0000000000000000, 0.0 },
493   { 11.000000000000000, 1, 20,
494 	  10.000000000000000, 0.0 },
495   { 1.0000000000000000, 1, 20,
496 	  20.000000000000000, 0.0 },
497   { -9.0000000000000000, 1, 20,
498 	  30.000000000000000, 0.0 },
499   { -19.000000000000000, 1, 20,
500 	  40.000000000000000, 0.0 },
501   { -29.000000000000000, 1, 20,
502 	  50.000000000000000, 0.0 },
503   { -39.000000000000000, 1, 20,
504 	  60.000000000000000, 0.0 },
505   { -49.000000000000000, 1, 20,
506 	  70.000000000000000, 0.0 },
507   { -59.000000000000000, 1, 20,
508 	  80.000000000000000, 0.0 },
509   { -69.000000000000000, 1, 20,
510 	  90.000000000000000, 0.0 },
511   { -79.000000000000000, 1, 20,
512 	  100.00000000000000, 0.0 },
513 };
514 const double toler014 = 2.5000000000000020e-13;
515 
516 // Test data for n=1, m=50.
517 // max(|f - f_GSL|): 0.0000000000000000 at index 0
518 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
519 // mean(f - f_GSL): 0.0000000000000000
520 // variance(f - f_GSL): 0.0000000000000000
521 // stddev(f - f_GSL): 0.0000000000000000
522 const testcase_assoc_laguerre<double>
523 data015[11] =
524 {
525   { 51.000000000000000, 1, 50,
526 	  0.0000000000000000, 0.0 },
527   { 41.000000000000000, 1, 50,
528 	  10.000000000000000, 0.0 },
529   { 31.000000000000000, 1, 50,
530 	  20.000000000000000, 0.0 },
531   { 21.000000000000000, 1, 50,
532 	  30.000000000000000, 0.0 },
533   { 11.000000000000000, 1, 50,
534 	  40.000000000000000, 0.0 },
535   { 1.0000000000000000, 1, 50,
536 	  50.000000000000000, 0.0 },
537   { -9.0000000000000000, 1, 50,
538 	  60.000000000000000, 0.0 },
539   { -19.000000000000000, 1, 50,
540 	  70.000000000000000, 0.0 },
541   { -29.000000000000000, 1, 50,
542 	  80.000000000000000, 0.0 },
543   { -39.000000000000000, 1, 50,
544 	  90.000000000000000, 0.0 },
545   { -49.000000000000000, 1, 50,
546 	  100.00000000000000, 0.0 },
547 };
548 const double toler015 = 2.5000000000000020e-13;
549 
550 // Test data for n=1, m=100.
551 // max(|f - f_GSL|): 0.0000000000000000 at index 0
552 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
553 // mean(f - f_GSL): 0.0000000000000000
554 // variance(f - f_GSL): 0.0000000000000000
555 // stddev(f - f_GSL): 0.0000000000000000
556 const testcase_assoc_laguerre<double>
557 data016[11] =
558 {
559   { 101.00000000000000, 1, 100,
560 	  0.0000000000000000, 0.0 },
561   { 91.000000000000000, 1, 100,
562 	  10.000000000000000, 0.0 },
563   { 81.000000000000000, 1, 100,
564 	  20.000000000000000, 0.0 },
565   { 71.000000000000000, 1, 100,
566 	  30.000000000000000, 0.0 },
567   { 61.000000000000000, 1, 100,
568 	  40.000000000000000, 0.0 },
569   { 51.000000000000000, 1, 100,
570 	  50.000000000000000, 0.0 },
571   { 41.000000000000000, 1, 100,
572 	  60.000000000000000, 0.0 },
573   { 31.000000000000000, 1, 100,
574 	  70.000000000000000, 0.0 },
575   { 21.000000000000000, 1, 100,
576 	  80.000000000000000, 0.0 },
577   { 11.000000000000000, 1, 100,
578 	  90.000000000000000, 0.0 },
579   { 1.0000000000000000, 1, 100,
580 	  100.00000000000000, 0.0 },
581 };
582 const double toler016 = 2.5000000000000020e-13;
583 
584 // Test data for n=2, m=0.
585 // max(|f - f_GSL|): 0.0000000000000000 at index 0
586 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
587 // mean(f - f_GSL): 0.0000000000000000
588 // variance(f - f_GSL): 0.0000000000000000
589 // stddev(f - f_GSL): 0.0000000000000000
590 const testcase_assoc_laguerre<double>
591 data017[11] =
592 {
593   { 1.0000000000000000, 2, 0,
594 	  0.0000000000000000, 0.0 },
595   { 31.000000000000000, 2, 0,
596 	  10.000000000000000, 0.0 },
597   { 161.00000000000000, 2, 0,
598 	  20.000000000000000, 0.0 },
599   { 391.00000000000000, 2, 0,
600 	  30.000000000000000, 0.0 },
601   { 721.00000000000000, 2, 0,
602 	  40.000000000000000, 0.0 },
603   { 1151.0000000000000, 2, 0,
604 	  50.000000000000000, 0.0 },
605   { 1681.0000000000000, 2, 0,
606 	  60.000000000000000, 0.0 },
607   { 2311.0000000000000, 2, 0,
608 	  70.000000000000000, 0.0 },
609   { 3041.0000000000000, 2, 0,
610 	  80.000000000000000, 0.0 },
611   { 3871.0000000000000, 2, 0,
612 	  90.000000000000000, 0.0 },
613   { 4801.0000000000000, 2, 0,
614 	  100.00000000000000, 0.0 },
615 };
616 const double toler017 = 2.5000000000000020e-13;
617 
618 // Test data for n=2, m=1.
619 // max(|f - f_GSL|): 0.0000000000000000 at index 0
620 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
621 // mean(f - f_GSL): 0.0000000000000000
622 // variance(f - f_GSL): 0.0000000000000000
623 // stddev(f - f_GSL): 0.0000000000000000
624 const testcase_assoc_laguerre<double>
625 data018[11] =
626 {
627   { 3.0000000000000000, 2, 1,
628 	  0.0000000000000000, 0.0 },
629   { 23.000000000000000, 2, 1,
630 	  10.000000000000000, 0.0 },
631   { 143.00000000000000, 2, 1,
632 	  20.000000000000000, 0.0 },
633   { 363.00000000000000, 2, 1,
634 	  30.000000000000000, 0.0 },
635   { 683.00000000000000, 2, 1,
636 	  40.000000000000000, 0.0 },
637   { 1103.0000000000000, 2, 1,
638 	  50.000000000000000, 0.0 },
639   { 1623.0000000000000, 2, 1,
640 	  60.000000000000000, 0.0 },
641   { 2243.0000000000000, 2, 1,
642 	  70.000000000000000, 0.0 },
643   { 2963.0000000000000, 2, 1,
644 	  80.000000000000000, 0.0 },
645   { 3783.0000000000000, 2, 1,
646 	  90.000000000000000, 0.0 },
647   { 4703.0000000000000, 2, 1,
648 	  100.00000000000000, 0.0 },
649 };
650 const double toler018 = 2.5000000000000020e-13;
651 
652 // Test data for n=2, m=2.
653 // max(|f - f_GSL|): 0.0000000000000000 at index 0
654 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
655 // mean(f - f_GSL): 0.0000000000000000
656 // variance(f - f_GSL): 0.0000000000000000
657 // stddev(f - f_GSL): 0.0000000000000000
658 const testcase_assoc_laguerre<double>
659 data019[11] =
660 {
661   { 6.0000000000000000, 2, 2,
662 	  0.0000000000000000, 0.0 },
663   { 16.000000000000000, 2, 2,
664 	  10.000000000000000, 0.0 },
665   { 126.00000000000000, 2, 2,
666 	  20.000000000000000, 0.0 },
667   { 336.00000000000000, 2, 2,
668 	  30.000000000000000, 0.0 },
669   { 646.00000000000000, 2, 2,
670 	  40.000000000000000, 0.0 },
671   { 1056.0000000000000, 2, 2,
672 	  50.000000000000000, 0.0 },
673   { 1566.0000000000000, 2, 2,
674 	  60.000000000000000, 0.0 },
675   { 2176.0000000000000, 2, 2,
676 	  70.000000000000000, 0.0 },
677   { 2886.0000000000000, 2, 2,
678 	  80.000000000000000, 0.0 },
679   { 3696.0000000000000, 2, 2,
680 	  90.000000000000000, 0.0 },
681   { 4606.0000000000000, 2, 2,
682 	  100.00000000000000, 0.0 },
683 };
684 const double toler019 = 2.5000000000000020e-13;
685 
686 // Test data for n=2, m=5.
687 // max(|f - f_GSL|): 4.5519144009631418e-15 at index 1
688 // max(|f - f_GSL| / |f_GSL|): 4.5519144009631623e-15
689 // mean(f - f_GSL): 4.1381040008755832e-16
690 // variance(f - f_GSL): 1.8836295194268761e-32
691 // stddev(f - f_GSL): 1.3724538314372823e-16
692 const testcase_assoc_laguerre<double>
693 data020[11] =
694 {
695   { 21.000000000000000, 2, 5,
696 	  0.0000000000000000, 0.0 },
697   { 0.99999999999999545, 2, 5,
698 	  10.000000000000000, 0.0 },
699   { 81.000000000000000, 2, 5,
700 	  20.000000000000000, 0.0 },
701   { 261.00000000000000, 2, 5,
702 	  30.000000000000000, 0.0 },
703   { 541.00000000000000, 2, 5,
704 	  40.000000000000000, 0.0 },
705   { 921.00000000000000, 2, 5,
706 	  50.000000000000000, 0.0 },
707   { 1401.0000000000000, 2, 5,
708 	  60.000000000000000, 0.0 },
709   { 1981.0000000000000, 2, 5,
710 	  70.000000000000000, 0.0 },
711   { 2661.0000000000000, 2, 5,
712 	  80.000000000000000, 0.0 },
713   { 3441.0000000000000, 2, 5,
714 	  90.000000000000000, 0.0 },
715   { 4321.0000000000000, 2, 5,
716 	  100.00000000000000, 0.0 },
717 };
718 const double toler020 = 2.5000000000000020e-13;
719 
720 // Test data for n=2, m=10.
721 // max(|f - f_GSL|): 3.5527136788005009e-14 at index 2
722 // max(|f - f_GSL| / |f_GSL|): 2.4424906541753385e-15
723 // mean(f - f_GSL): 4.1179181277005809e-15
724 // variance(f - f_GSL): 1.8652974677089562e-30
725 // stddev(f - f_GSL): 1.3657589346985639e-15
726 const testcase_assoc_laguerre<double>
727 data021[11] =
728 {
729   { 66.000000000000000, 2, 10,
730 	  0.0000000000000000, 0.0 },
731   { -4.0000000000000098, 2, 10,
732 	  10.000000000000000, 0.0 },
733   { 25.999999999999964, 2, 10,
734 	  20.000000000000000, 0.0 },
735   { 156.00000000000000, 2, 10,
736 	  30.000000000000000, 0.0 },
737   { 386.00000000000000, 2, 10,
738 	  40.000000000000000, 0.0 },
739   { 716.00000000000000, 2, 10,
740 	  50.000000000000000, 0.0 },
741   { 1146.0000000000000, 2, 10,
742 	  60.000000000000000, 0.0 },
743   { 1676.0000000000000, 2, 10,
744 	  70.000000000000000, 0.0 },
745   { 2306.0000000000000, 2, 10,
746 	  80.000000000000000, 0.0 },
747   { 3036.0000000000000, 2, 10,
748 	  90.000000000000000, 0.0 },
749   { 3866.0000000000000, 2, 10,
750 	  100.00000000000000, 0.0 },
751 };
752 const double toler021 = 2.5000000000000020e-13;
753 
754 // Test data for n=2, m=20.
755 // max(|f - f_GSL|): 5.6843418860808015e-13 at index 4
756 // max(|f - f_GSL| / |f_GSL|): 5.9211894646674663e-15
757 // mean(f - f_GSL): -6.0557619525008543e-14
758 // variance(f - f_GSL): 4.0339478107892650e-28
759 // stddev(f - f_GSL): 2.0084690216155350e-14
760 const testcase_assoc_laguerre<double>
761 data022[11] =
762 {
763   { 231.00000000000000, 2, 20,
764 	  0.0000000000000000, 0.0 },
765   { 61.000000000000206, 2, 20,
766 	  10.000000000000000, 0.0 },
767   { -9.0000000000000053, 2, 20,
768 	  20.000000000000000, 0.0 },
769   { 21.000000000000124, 2, 20,
770 	  30.000000000000000, 0.0 },
771   { 151.00000000000057, 2, 20,
772 	  40.000000000000000, 0.0 },
773   { 381.00000000000000, 2, 20,
774 	  50.000000000000000, 0.0 },
775   { 711.00000000000000, 2, 20,
776 	  60.000000000000000, 0.0 },
777   { 1141.0000000000000, 2, 20,
778 	  70.000000000000000, 0.0 },
779   { 1670.9999999999998, 2, 20,
780 	  80.000000000000000, 0.0 },
781   { 2301.0000000000000, 2, 20,
782 	  90.000000000000000, 0.0 },
783   { 3031.0000000000000, 2, 20,
784 	  100.00000000000000, 0.0 },
785 };
786 const double toler022 = 5.0000000000000039e-13;
787 
788 // Test data for n=2, m=50.
789 // max(|f - f_GSL|): 3.6379788070917130e-12 at index 10
790 // max(|f - f_GSL| / |f_GSL|): 1.9243865760169750e-14
791 // mean(f - f_GSL): 1.1085274112784562e-12
792 // variance(f - f_GSL): 7.0379368001597960e-25
793 // stddev(f - f_GSL): 8.3892412053533160e-13
794 const testcase_assoc_laguerre<double>
795 data023[11] =
796 {
797   { 1326.0000000000000, 2, 50,
798 	  0.0000000000000000, 0.0 },
799   { 855.99999999999693, 2, 50,
800 	  10.000000000000000, 0.0 },
801   { 485.99999999999835, 2, 50,
802 	  20.000000000000000, 0.0 },
803   { 215.99999999999937, 2, 50,
804 	  30.000000000000000, 0.0 },
805   { 45.999999999999829, 2, 50,
806 	  40.000000000000000, 0.0 },
807   { -23.999999999999538, 2, 50,
808 	  50.000000000000000, 0.0 },
809   { 6.0000000000001057, 2, 50,
810 	  60.000000000000000, 0.0 },
811   { 135.99999999999963, 2, 50,
812 	  70.000000000000000, 0.0 },
813   { 365.99999999999892, 2, 50,
814 	  80.000000000000000, 0.0 },
815   { 695.99999999999784, 2, 50,
816 	  90.000000000000000, 0.0 },
817   { 1125.9999999999964, 2, 50,
818 	  100.00000000000000, 0.0 },
819 };
820 const double toler023 = 1.0000000000000008e-12;
821 
822 // Test data for n=2, m=100.
823 // max(|f - f_GSL|): 6.5483618527650833e-11 at index 1
824 // max(|f - f_GSL| / |f_GSL|): 1.6416871873157281e-14
825 // mean(f - f_GSL): -2.0930328177696950e-11
826 // variance(f - f_GSL): 4.7796831888707054e-23
827 // stddev(f - f_GSL): 6.9135252866180405e-12
828 const testcase_assoc_laguerre<double>
829 data024[11] =
830 {
831   { 5151.0000000000000, 2, 100,
832 	  0.0000000000000000, 0.0 },
833   { 4181.0000000000655, 2, 100,
834 	  10.000000000000000, 0.0 },
835   { 3311.0000000000518, 2, 100,
836 	  20.000000000000000, 0.0 },
837   { 2541.0000000000400, 2, 100,
838 	  30.000000000000000, 0.0 },
839   { 1871.0000000000291, 2, 100,
840 	  40.000000000000000, 0.0 },
841   { 1301.0000000000207, 2, 100,
842 	  50.000000000000000, 0.0 },
843   { 831.00000000001364, 2, 100,
844 	  60.000000000000000, 0.0 },
845   { 461.00000000000682, 2, 100,
846 	  70.000000000000000, 0.0 },
847   { 191.00000000000250, 2, 100,
848 	  80.000000000000000, 0.0 },
849   { 21.000000000000046, 2, 100,
850 	  90.000000000000000, 0.0 },
851   { -48.999999999999915, 2, 100,
852 	  100.00000000000000, 0.0 },
853 };
854 const double toler024 = 1.0000000000000008e-12;
855 
856 // Test data for n=5, m=0.
857 // max(|f - f_GSL|): 7.4505805969238281e-09 at index 10
858 // max(|f - f_GSL| / |f_GSL|): 1.9501553136894460e-16
859 // mean(f - f_GSL): -5.1328573714603078e-10
860 // variance(f - f_GSL): 5.2938665968649395e-18
861 // stddev(f - f_GSL): 2.3008404109944130e-09
862 const testcase_assoc_laguerre<double>
863 data025[11] =
864 {
865   { 1.0000000000000000, 5, 0,
866 	  0.0000000000000000, 0.0 },
867   { 34.333333333333329, 5, 0,
868 	  10.000000000000000, 0.0 },
869   { -4765.6666666666670, 5, 0,
870 	  20.000000000000000, 0.0 },
871   { -74399.000000000000, 5, 0,
872 	  30.000000000000000, 0.0 },
873   { -418865.66666666663, 5, 0,
874 	  40.000000000000000, 0.0 },
875   { -1498165.6666666665, 5, 0,
876 	  50.000000000000000, 0.0 },
877   { -4122299.0000000000, 5, 0,
878 	  60.000000000000000, 0.0 },
879   { -9551265.6666666679, 5, 0,
880 	  70.000000000000000, 0.0 },
881   { -19595065.666666664, 5, 0,
882 	  80.000000000000000, 0.0 },
883   { -36713699.000000000, 5, 0,
884 	  90.000000000000000, 0.0 },
885   { -64117165.666666664, 5, 0,
886 	  100.00000000000000, 0.0 },
887 };
888 const double toler025 = 2.5000000000000020e-13;
889 
890 // Test data for n=5, m=1.
891 // max(|f - f_GSL|): 3.7252902984619141e-09 at index 8
892 // max(|f - f_GSL| / |f_GSL|): 3.1347473636475015e-16
893 // mean(f - f_GSL): -3.6516147681388907e-10
894 // variance(f - f_GSL): 1.4667719456379050e-20
895 // stddev(f - f_GSL): 1.2111036064837331e-10
896 const testcase_assoc_laguerre<double>
897 data026[11] =
898 {
899   { 6.0000000000000000, 5, 1,
900 	  0.0000000000000000, 0.0 },
901   { 22.666666666666661, 5, 1,
902 	  10.000000000000000, 0.0 },
903   { -2960.6666666666661, 5, 1,
904 	  20.000000000000000, 0.0 },
905   { -58944.000000000000, 5, 1,
906 	  30.000000000000000, 0.0 },
907   { -357927.33333333326, 5, 1,
908 	  40.000000000000000, 0.0 },
909   { -1329910.6666666665, 5, 1,
910 	  50.000000000000000, 0.0 },
911   { -3744894.0000000000, 5, 1,
912 	  60.000000000000000, 0.0 },
913   { -8812877.3333333321, 5, 1,
914 	  70.000000000000000, 0.0 },
915   { -18283860.666666664, 5, 1,
916 	  80.000000000000000, 0.0 },
917   { -34547844.000000000, 5, 1,
918 	  90.000000000000000, 0.0 },
919   { -60734827.333333336, 5, 1,
920 	  100.00000000000000, 0.0 },
921 };
922 const double toler026 = 2.5000000000000020e-13;
923 
924 // Test data for n=5, m=2.
925 // max(|f - f_GSL|): 0.0000000000000000 at index 0
926 // max(|f - f_GSL| / |f_GSL|): 0.0000000000000000
927 // mean(f - f_GSL): 0.0000000000000000
928 // variance(f - f_GSL): 0.0000000000000000
929 // stddev(f - f_GSL): 0.0000000000000000
930 const testcase_assoc_laguerre<double>
931 data027[11] =
932 {
933   { 21.000000000000000, 5, 2,
934 	  0.0000000000000000, 0.0 },
935   { 4.3333333333333339, 5, 2,
936 	  10.000000000000000, 0.0 },
937   { -1679.0000000000000, 5, 2,
938 	  20.000000000000000, 0.0 },
939   { -46029.000000000000, 5, 2,
940 	  30.000000000000000, 0.0 },
941   { -304045.66666666669, 5, 2,
942 	  40.000000000000000, 0.0 },
943   { -1176729.0000000002, 5, 2,
944 	  50.000000000000000, 0.0 },
945   { -3395079.0000000000, 5, 2,
946 	  60.000000000000000, 0.0 },
947   { -8120095.6666666660, 5, 2,
948 	  70.000000000000000, 0.0 },
949   { -17042778.999999996, 5, 2,
950 	  80.000000000000000, 0.0 },
951   { -32484129.000000000, 5, 2,
952 	  90.000000000000000, 0.0 },
953   { -57495145.666666664, 5, 2,
954 	  100.00000000000000, 0.0 },
955 };
956 const double toler027 = 2.5000000000000020e-13;
957 
958 // Test data for n=5, m=5.
959 // max(|f - f_GSL|): 7.4505805969238281e-09 at index 9
960 // max(|f - f_GSL| / |f_GSL|): 1.7763568394002536e-15
961 // mean(f - f_GSL): -1.0450849882462617e-09
962 // variance(f - f_GSL): 1.2014228959234583e-19
963 // stddev(f - f_GSL): 3.4661547800458338e-10
964 const testcase_assoc_laguerre<double>
965 data028[11] =
966 {
967   { 252.00000000000000, 5, 5,
968 	  0.0000000000000000, 0.0 },
969   { -14.666666666666654, 5, 5,
970 	  10.000000000000000, 0.0 },
971   { 51.999999999999908, 5, 5,
972 	  20.000000000000000, 0.0 },
973   { -19548.000000000000, 5, 5,
974 	  30.000000000000000, 0.0 },
975   { -178814.66666666660, 5, 5,
976 	  40.000000000000000, 0.0 },
977   { -797747.99999999977, 5, 5,
978 	  50.000000000000000, 0.0 },
979   { -2496348.0000000000, 5, 5,
980 	  60.000000000000000, 0.0 },
981   { -6294614.6666666660, 5, 5,
982 	  70.000000000000000, 0.0 },
983   { -13712547.999999996, 5, 5,
984 	  80.000000000000000, 0.0 },
985   { -26870147.999999993, 5, 5,
986 	  90.000000000000000, 0.0 },
987   { -48587414.666666672, 5, 5,
988 	  100.00000000000000, 0.0 },
989 };
990 const double toler028 = 2.5000000000000020e-13;
991 
992 // Test data for n=5, m=10.
993 // max(|f - f_GSL|): 7.4505805969238281e-09 at index 10
994 // max(|f - f_GSL| / |f_GSL|): 1.9556222085140405e-15
995 // mean(f - f_GSL): -9.4849348577306296e-10
996 // variance(f - f_GSL): 4.6504850481092197e-18
997 // stddev(f - f_GSL): 2.1564983301892953e-09
998 const testcase_assoc_laguerre<double>
999 data029[11] =
1000 {
1001   { 3003.0000000000000, 5, 10,
1002 	  0.0000000000000000, 0.0 },
1003   { 19.666666666666668, 5, 10,
1004 	  10.000000000000000, 0.0 },
1005   { 36.333333333333272, 5, 10,
1006 	  20.000000000000000, 0.0 },
1007   { -1947.0000000000000, 5, 10,
1008 	  30.000000000000000, 0.0 },
1009   { -60930.333333333314, 5, 10,
1010 	  40.000000000000000, 0.0 },
1011   { -381913.66666666651, 5, 10,
1012 	  50.000000000000000, 0.0 },
1013   { -1419897.0000000000, 5, 10,
1014 	  60.000000000000000, 0.0 },
1015   { -3979880.3333333330, 5, 10,
1016 	  70.000000000000000, 0.0 },
1017   { -9316863.6666666642, 5, 10,
1018 	  80.000000000000000, 0.0 },
1019   { -19235847.000000000, 5, 10,
1020 	  90.000000000000000, 0.0 },
1021   { -36191830.333333328, 5, 10,
1022 	  100.00000000000000, 0.0 },
1023 };
1024 const double toler029 = 2.5000000000000020e-13;
1025 
1026 // Test data for n=5, m=20.
1027 // max(|f - f_GSL|): 1.8626451492309570e-09 at index 8
1028 // max(|f - f_GSL| / |f_GSL|): 2.8421709430404088e-15
1029 // mean(f - f_GSL): 1.8654330605469030e-10
1030 // variance(f - f_GSL): 3.8278245537195241e-21
1031 // stddev(f - f_GSL): 6.1869415333584047e-11
1032 const testcase_assoc_laguerre<double>
1033 data030[11] =
1034 {
1035   { 53130.000000000000, 5, 20,
1036 	  0.0000000000000000, 0.0 },
1037   { 1213.3333333333335, 5, 20,
1038 	  10.000000000000000, 0.0 },
1039   { 129.99999999999963, 5, 20,
1040 	  20.000000000000000, 0.0 },
1041   { -119.99999999999974, 5, 20,
1042 	  30.000000000000000, 0.0 },
1043   { 463.33333333333320, 5, 20,
1044 	  40.000000000000000, 0.0 },
1045   { -48120.000000000015, 5, 20,
1046 	  50.000000000000000, 0.0 },
1047   { -345870.00000000017, 5, 20,
1048 	  60.000000000000000, 0.0 },
1049   { -1342786.6666666667, 5, 20,
1050 	  70.000000000000000, 0.0 },
1051   { -3838870.0000000009, 5, 20,
1052 	  80.000000000000000, 0.0 },
1053   { -9084120.0000000000, 5, 20,
1054 	  90.000000000000000, 0.0 },
1055   { -18878536.666666668, 5, 20,
1056 	  100.00000000000000, 0.0 },
1057 };
1058 const double toler030 = 2.5000000000000020e-13;
1059 
1060 // Test data for n=5, m=50.
1061 // max(|f - f_GSL|): 5.8207660913467407e-11 at index 9
1062 // max(|f - f_GSL| / |f_GSL|): 8.3212917817998576e-15
1063 // mean(f - f_GSL): 2.5837917664003642e-12
1064 // variance(f - f_GSL): 7.3435778813301465e-25
1065 // stddev(f - f_GSL): 8.5694678255596164e-13
1066 const testcase_assoc_laguerre<double>
1067 data031[11] =
1068 {
1069   { 3478761.0000000000, 5, 50,
1070 	  0.0000000000000000, 0.0 },
1071   { 1154544.3333333335, 5, 50,
1072 	  10.000000000000000, 0.0 },
1073   { 264661.00000000006, 5, 50,
1074 	  20.000000000000000, 0.0 },
1075   { 24111.000000000033, 5, 50,
1076 	  30.000000000000000, 0.0 },
1077   { -2105.6666666666665, 5, 50,
1078 	  40.000000000000000, 0.0 },
1079   { 1010.9999999999916, 5, 50,
1080 	  50.000000000000000, 0.0 },
1081   { -1538.9999999999955, 5, 50,
1082 	  60.000000000000000, 0.0 },
1083   { 5244.3333333333449, 5, 50,
1084 	  70.000000000000000, 0.0 },
1085   { -13639.000000000011, 5, 50,
1086 	  80.000000000000000, 0.0 },
1087   { -243189.00000000006, 5, 50,
1088 	  90.000000000000000, 0.0 },
1089   { -1118405.6666666667, 5, 50,
1090 	  100.00000000000000, 0.0 },
1091 };
1092 const double toler031 = 5.0000000000000039e-13;
1093 
1094 // Test data for n=5, m=100.
1095 // max(|f - f_GSL|): 1.4901161193847656e-08 at index 1
1096 // max(|f - f_GSL| / |f_GSL|): 4.3934583843896481e-16
1097 // mean(f - f_GSL): 9.3181866263462735e-10
1098 // variance(f - f_GSL): 9.5511462203760402e-20
1099 // stddev(f - f_GSL): 3.0904928766098203e-10
1100 const testcase_assoc_laguerre<double>
1101 data032[11] =
1102 {
1103   { 96560646.000000000, 5, 100,
1104 	  0.0000000000000000, 0.0 },
1105   { 57264262.666666649, 5, 100,
1106 	  10.000000000000000, 0.0 },
1107   { 31841379.333333332, 5, 100,
1108 	  20.000000000000000, 0.0 },
1109   { 16281996.000000000, 5, 100,
1110 	  30.000000000000000, 0.0 },
1111   { 7426112.6666666670, 5, 100,
1112 	  40.000000000000000, 0.0 },
1113   { 2863729.3333333330, 5, 100,
1114 	  50.000000000000000, 0.0 },
1115   { 834846.00000000000, 5, 100,
1116 	  60.000000000000000, 0.0 },
1117   { 129462.66666666663, 5, 100,
1118 	  70.000000000000000, 0.0 },
1119   { -12420.666666666668, 5, 100,
1120 	  80.000000000000000, 0.0 },
1121   { -804.00000000000000, 5, 100,
1122 	  90.000000000000000, 0.0 },
1123   { 4312.6666666666670, 5, 100,
1124 	  100.00000000000000, 0.0 },
1125 };
1126 const double toler032 = 2.5000000000000020e-13;
1127 
1128 // Test data for n=10, m=0.
1129 // max(|f - f_GSL|): 6.1035156250000000e-05 at index 7
1130 // max(|f - f_GSL| / |f_GSL|): 6.1315986390500118e-15
1131 // mean(f - f_GSL): -5.5892985322068194e-06
1132 // variance(f - f_GSL): 3.4364283890538241e-12
1133 // stddev(f - f_GSL): 1.8537606072667053e-06
1134 const testcase_assoc_laguerre<double>
1135 data033[11] =
1136 {
1137   { 1.0000000000000000, 10, 0,
1138 	  0.0000000000000000, 0.0 },
1139   { 27.984126984126977, 10, 0,
1140 	  10.000000000000000, 0.0 },
1141   { 3227.8077601410932, 10, 0,
1142 	  20.000000000000000, 0.0 },
1143   { 15129.571428571455, 10, 0,
1144 	  30.000000000000000, 0.0 },
1145   { 79724066.608465582, 10, 0,
1146 	  40.000000000000000, 0.0 },
1147   { 2037190065.3738980, 10, 0,
1148 	  50.000000000000000, 0.0 },
1149   { 21804200401.000000, 10, 0,
1150 	  60.000000000000000, 0.0 },
1151   { 144688291819.51855, 10, 0,
1152 	  70.000000000000000, 0.0 },
1153   { 703324772760.08276, 10, 0,
1154 	  80.000000000000000, 0.0 },
1155   { 2741055412243.8569, 10, 0,
1156 	  90.000000000000000, 0.0 },
1157   { 9051283795429.5723, 10, 0,
1158 	  100.00000000000000, 0.0 },
1159 };
1160 const double toler033 = 5.0000000000000039e-13;
1161 
1162 // Test data for n=10, m=1.
1163 // max(|f - f_GSL|): 0.0019531250000000000 at index 10
1164 // max(|f - f_GSL| / |f_GSL|): 3.2082933888884751e-16
1165 // mean(f - f_GSL): -0.00017647174536266681
1166 // variance(f - f_GSL): 3.4721464659347714e-07
1167 // stddev(f - f_GSL): 0.00058924922281957846
1168 const testcase_assoc_laguerre<double>
1169 data034[11] =
1170 {
1171   { 11.000000000000000, 10, 1,
1172 	  0.0000000000000000, 0.0 },
1173   { 14.791887125220455, 10, 1,
1174 	  10.000000000000000, 0.0 },
1175   { 2704.6507936507933, 10, 1,
1176 	  20.000000000000000, 0.0 },
1177   { -182924.71428571423, 10, 1,
1178 	  30.000000000000000, 0.0 },
1179   { 48066036.749559075, 10, 1,
1180 	  40.000000000000000, 0.0 },
1181   { 1486264192.2169311, 10, 1,
1182 	  50.000000000000000, 0.0 },
1183   { 17239562282.428574, 10, 1,
1184 	  60.000000000000000, 0.0 },
1185   { 119837491630.13579, 10, 1,
1186 	  70.000000000000000, 0.0 },
1187   { 600681375251.21167, 10, 1,
1188 	  80.000000000000000, 0.0 },
1189   { 2392908405632.4287, 10, 1,
1190 	  90.000000000000000, 0.0 },
1191   { 8033035722509.2373, 10, 1,
1192 	  100.00000000000000, 0.0 },
1193 };
1194 const double toler034 = 2.5000000000000020e-13;
1195 
1196 // Test data for n=10, m=2.
1197 // max(|f - f_GSL|): 0.00012207031250000000 at index 8
1198 // max(|f - f_GSL| / |f_GSL|): 3.0884259455918855e-16
1199 // mean(f - f_GSL): 1.4045021730039894e-05
1200 // variance(f - f_GSL): 2.1698889894483716e-11
1201 // stddev(f - f_GSL): 4.6582067251769446e-06
1202 const testcase_assoc_laguerre<double>
1203 data035[11] =
1204 {
1205   { 66.000000000000000, 10, 2,
1206 	  0.0000000000000000, 0.0 },
1207   { -14.511463844797181, 10, 2,
1208 	  10.000000000000000, 0.0 },
1209   { 1064.5890652557316, 10, 2,
1210 	  20.000000000000000, 0.0 },
1211   { -194569.71428571429, 10, 2,
1212 	  30.000000000000000, 0.0 },
1213   { 27343569.350970022, 10, 2,
1214 	  40.000000000000000, 0.0 },
1215   { 1067807661.6790125, 10, 2,
1216 	  50.000000000000000, 0.0 },
1217   { 13529451580.285711, 10, 2,
1218 	  60.000000000000000, 0.0 },
1219   { 98812724224.641937, 10, 2,
1220 	  70.000000000000000, 0.0 },
1221   { 511482736187.34021, 10, 2,
1222 	  80.000000000000000, 0.0 },
1223   { 2084478393087.4285, 10, 2,
1224 	  90.000000000000000, 0.0 },
1225   { 7117724862237.0752, 10, 2,
1226 	  100.00000000000000, 0.0 },
1227 };
1228 const double toler035 = 2.5000000000000020e-13;
1229 
1230 // Test data for n=10, m=5.
1231 // max(|f - f_GSL|): 0.0019531250000000000 at index 10
1232 // max(|f - f_GSL| / |f_GSL|): 5.4929549774030811e-15
1233 // mean(f - f_GSL): 0.00020540323628249655
1234 // variance(f - f_GSL): 3.3599844999940669e-07
1235 // stddev(f - f_GSL): 0.00057965373284350253
1236 const testcase_assoc_laguerre<double>
1237 data036[11] =
1238 {
1239   { 3003.0000000000000, 10, 5,
1240 	  0.0000000000000000, 0.0 },
1241   { 11.641975308642031, 10, 5,
1242 	  10.000000000000000, 0.0 },
1243   { -1137.5643738977069, 10, 5,
1244 	  20.000000000000000, 0.0 },
1245   { -9254.1428571428605, 10, 5,
1246 	  30.000000000000000, 0.0 },
1247   { 2121878.8377425023, 10, 5,
1248 	  40.000000000000000, 0.0 },
1249   { 352060171.43033499, 10, 5,
1250 	  50.000000000000000, 0.0 },
1251   { 6212028560.1428576, 10, 5,
1252 	  60.000000000000000, 0.0 },
1253   { 53782171674.604919, 10, 5,
1254 	  70.000000000000000, 0.0 },
1255   { 309720255837.56775, 10, 5,
1256 	  80.000000000000000, 0.0 },
1257   { 1359043035731.5713, 10, 5,
1258 	  90.000000000000000, 0.0 },
1259   { 4900625954398.9434, 10, 5,
1260 	  100.00000000000000, 0.0 },
1261 };
1262 const double toler036 = 5.0000000000000039e-13;
1263 
1264 // Test data for n=10, m=10.
1265 // max(|f - f_GSL|): 0.00048828125000000000 at index 10
1266 // max(|f - f_GSL| / |f_GSL|): 1.2999856205575476e-15
1267 // mean(f - f_GSL): 3.5049890987631279e-05
1268 // variance(f - f_GSL): 2.2596053129284716e-08
1269 // stddev(f - f_GSL): 0.00015031983611381671
1270 const testcase_assoc_laguerre<double>
1271 data037[11] =
1272 {
1273   { 184756.00000000000, 10, 10,
1274 	  0.0000000000000000, 0.0 },
1275   { -210.84303350970018, 10, 10,
1276 	  10.000000000000000, 0.0 },
1277   { 508.38095238095184, 10, 10,
1278 	  20.000000000000000, 0.0 },
1279   { 2098.8571428571431, 10, 10,
1280 	  30.000000000000000, 0.0 },
1281   { -536338.88536155177, 10, 10,
1282 	  40.000000000000000, 0.0 },
1283   { 24865988.804232784, 10, 10,
1284 	  50.000000000000000, 0.0 },
1285   { 1343756013.1428571, 10, 10,
1286 	  60.000000000000000, 0.0 },
1287   { 17298791247.358025, 10, 10,
1288 	  70.000000000000000, 0.0 },
1289   { 124528450897.79892, 10, 10,
1290 	  80.000000000000000, 0.0 },
1291   { 632674413641.71423, 10, 10,
1292 	  90.000000000000000, 0.0 },
1293   { 2533008935405.0298, 10, 10,
1294 	  100.00000000000000, 0.0 },
1295 };
1296 const double toler037 = 2.5000000000000020e-13;
1297 
1298 // Test data for n=10, m=20.
1299 // max(|f - f_GSL|): 1.1444091796875000e-05 at index 8
1300 // max(|f - f_GSL| / |f_GSL|): 1.3165826881543491e-14
1301 // mean(f - f_GSL): -1.0290407937480433e-06
1302 // variance(f - f_GSL): 1.1648174507175886e-13
1303 // stddev(f - f_GSL): 3.4129422068320885e-07
1304 const testcase_assoc_laguerre<double>
1305 data038[11] =
1306 {
1307   { 30045014.999999993, 10, 20,
1308 	  0.0000000000000000, 0.0 },
1309   { -23087.733686067022, 10, 20,
1310 	  10.000000000000000, 0.0 },
1311   { 207.23985890652330, 10, 20,
1312 	  20.000000000000000, 0.0 },
1313   { 1407.8571428571508, 10, 20,
1314 	  30.000000000000000, 0.0 },
1315   { -44618.156966490322, 10, 20,
1316 	  40.000000000000000, 0.0 },
1317   { 158690.04409171100, 10, 20,
1318 	  50.000000000000000, 0.0 },
1319   { -6870413.5714285728, 10, 20,
1320 	  60.000000000000000, 0.0 },
1321   { 793841351.41975331, 10, 20,
1322 	  70.000000000000000, 0.0 },
1323   { 13358288958.562618, 10, 20,
1324 	  80.000000000000000, 0.0 },
1325   { 106073722407.85715, 10, 20,
1326 	  90.000000000000000, 0.0 },
1327   { 566337213392.42493, 10, 20,
1328 	  100.00000000000000, 0.0 },
1329 };
1330 const double toler038 = 1.0000000000000008e-12;
1331 
1332 // Test data for n=10, m=50.
1333 // max(|f - f_GSL|): 1.7881393432617188e-07 at index 2
1334 // max(|f - f_GSL| / |f_GSL|): 1.9220038158581863e-14
1335 // mean(f - f_GSL): -1.7959874557246538e-08
1336 // variance(f - f_GSL): 1.5426792767859101e-17
1337 // stddev(f - f_GSL): 3.9276956052956932e-09
1338 const testcase_assoc_laguerre<double>
1339 data039[11] =
1340 {
1341   { 75394027566.000000, 10, 50,
1342 	  0.0000000000000000, 0.0 },
1343   { 8048106183.3721361, 10, 50,
1344 	  10.000000000000000, 0.0 },
1345   { 328045023.84832460, 10, 50,
1346 	  20.000000000000000, 0.0 },
1347   { -2568769.7142857178, 10, 50,
1348 	  30.000000000000000, 0.0 },
1349   { 6971.9964726631533, 10, 50,
1350 	  40.000000000000000, 0.0 },
1351   { 136111.41446207993, 10, 50,
1352 	  50.000000000000000, 0.0 },
1353   { -62462.571428570242, 10, 50,
1354 	  60.000000000000000, 0.0 },
1355   { -248167.95061728527, 10, 50,
1356 	  70.000000000000000, 0.0 },
1357   { 1941270.4091710770, 10, 50,
1358 	  80.000000000000000, 0.0 },
1359   { -8643512.5714285765, 10, 50,
1360 	  90.000000000000000, 0.0 },
1361   { -140863522.18342152, 10, 50,
1362 	  100.00000000000000, 0.0 },
1363 };
1364 const double toler039 = 1.0000000000000008e-12;
1365 
1366 // Test data for n=10, m=100.
1367 // max(|f - f_GSL|): 0.0019531250000000000 at index 1
1368 // max(|f - f_GSL| / |f_GSL|): 8.5796208358610616e-15
1369 // mean(f - f_GSL): 0.00016085392880168828
1370 // variance(f - f_GSL): 2.8461549974308565e-09
1371 // stddev(f - f_GSL): 5.3349367357362886e-05
1372 const testcase_assoc_laguerre<double>
1373 data040[11] =
1374 {
1375   { 46897636623981.000, 10, 100,
1376 	  0.0000000000000000, 0.0 },
1377   { 16444031323272.084, 10, 100,
1378 	  10.000000000000000, 0.0 },
1379   { 5020343986463.5391, 10, 100,
1380 	  20.000000000000000, 0.0 },
1381   { 1270977490645.2859, 10, 100,
1382 	  30.000000000000000, 0.0 },
1383   { 244835756822.62262, 10, 100,
1384 	  40.000000000000000, 0.0 },
1385   { 29786827693.962959, 10, 100,
1386 	  50.000000000000000, 0.0 },
1387   { 1127612095.2857144, 10, 100,
1388 	  60.000000000000000, 0.0 },
1389   { -66370555.419753075, 10, 100,
1390 	  70.000000000000000, 0.0 },
1391   { 10420852.957671870, 10, 100,
1392 	  80.000000000000000, 0.0 },
1393   { -3373097.5714285718, 10, 100,
1394 	  90.000000000000000, 0.0 },
1395   { 2065423.6807760145, 10, 100,
1396 	  100.00000000000000, 0.0 },
1397 };
1398 const double toler040 = 5.0000000000000039e-13;
1399 
1400 // Test data for n=20, m=0.
1401 // max(|f - f_GSL|): 20.000000000000000 at index 8
1402 // max(|f - f_GSL| / |f_GSL|): 4.7350442720305269e-15
1403 // mean(f - f_GSL): -1.8323417989965736
1404 // variance(f - f_GSL): 2754690.9677631622
1405 // stddev(f - f_GSL): 1659.7261725246012
1406 const testcase_assoc_laguerre<double>
1407 data041[11] =
1408 {
1409   { 1.0000000000000000, 20, 0,
1410 	  0.0000000000000000, 0.0 },
1411   { -11.961333867812119, 20, 0,
1412 	  10.000000000000000, 0.0 },
1413   { 2829.4728613531743, 20, 0,
1414 	  20.000000000000000, 0.0 },
1415   { -18439.424502520938, 20, 0,
1416 	  30.000000000000000, 0.0 },
1417   { 24799805.877530713, 20, 0,
1418 	  40.000000000000000, 0.0 },
1419   { 7551960453.7672548, 20, 0,
1420 	  50.000000000000000, 0.0 },
1421   { -1379223608444.9155, 20, 0,
1422 	  60.000000000000000, 0.0 },
1423   { 165423821874449.94, 20, 0,
1424 	  70.000000000000000, 0.0 },
1425   { 29500368536981676., 20, 0,
1426 	  80.000000000000000, 0.0 },
1427   { 1.1292309514432901e+18, 20, 0,
1428 	  90.000000000000000, 0.0 },
1429   { 2.2061882785931735e+19, 20, 0,
1430 	  100.00000000000000, 0.0 },
1431 };
1432 const double toler041 = 2.5000000000000020e-13;
1433 
1434 // Test data for n=20, m=1.
1435 // max(|f - f_GSL|): 8192.0000000000000 at index 10
1436 // max(|f - f_GSL| / |f_GSL|): 2.0583579235866667e-15
1437 // mean(f - f_GSL): -744.54973777790485
1438 // variance(f - f_GSL): 6101096.7248424273
1439 // stddev(f - f_GSL): 2470.0398225215777
1440 const testcase_assoc_laguerre<double>
1441 data042[11] =
1442 {
1443   { 21.000000000000000, 20, 1,
1444 	  0.0000000000000000, 0.0 },
1445   { 19.900488129734079, 20, 1,
1446 	  10.000000000000000, 0.0 },
1447   { 2208.0318569557585, 20, 1,
1448 	  20.000000000000000, 0.0 },
1449   { 263690.96303121914, 20, 1,
1450 	  30.000000000000000, 0.0 },
1451   { 40667285.630564235, 20, 1,
1452 	  40.000000000000000, 0.0 },
1453   { 1737442572.8115399, 20, 1,
1454 	  50.000000000000000, 0.0 },
1455   { -588280953643.28125, 20, 1,
1456 	  60.000000000000000, 0.0 },
1457   { 45617733778241.328, 20, 1,
1458 	  70.000000000000000, 0.0 },
1459   { 17293487114876864., 20, 1,
1460 	  80.000000000000000, 0.0 },
1461   { 7.6219135858585062e+17, 20, 1,
1462 	  90.000000000000000, 0.0 },
1463   { 1.6037288204336759e+19, 20, 1,
1464 	  100.00000000000000, 0.0 },
1465 };
1466 const double toler042 = 2.5000000000000020e-13;
1467 
1468 // Test data for n=20, m=2.
1469 // max(|f - f_GSL|): 6144.0000000000000 at index 10
1470 // max(|f - f_GSL| / |f_GSL|): 9.3068805041852228e-15
1471 // mean(f - f_GSL): 610.73011506755233
1472 // variance(f - f_GSL): 995562063.33027601
1473 // stddev(f - f_GSL): 31552.528636074101
1474 const testcase_assoc_laguerre<double>
1475 data043[11] =
1476 {
1477   { 231.00000000000003, 20, 2,
1478 	  0.0000000000000000, 0.0 },
1479   { 47.009338065112921, 20, 2,
1480 	  10.000000000000000, 0.0 },
1481   { -652.51305461728589, 20, 2,
1482 	  20.000000000000000, 0.0 },
1483   { 285388.25895069109, 20, 2,
1484 	  30.000000000000000, 0.0 },
1485   { 28664069.685624730, 20, 2,
1486 	  40.000000000000000, 0.0 },
1487   { -1399631966.3144732, 20, 2,
1488 	  50.000000000000000, 0.0 },
1489   { -115357373248.28194, 20, 2,
1490 	  60.000000000000000, 0.0 },
1491   { -3357730872975.8750, 20, 2,
1492 	  70.000000000000000, 0.0 },
1493   { 9765808962855122.0, 20, 2,
1494 	  80.000000000000000, 0.0 },
1495   { 5.0717292945559181e+17, 20, 2,
1496 	  90.000000000000000, 0.0 },
1497   { 1.1564665701334456e+19, 20, 2,
1498 	  100.00000000000000, 0.0 },
1499 };
1500 const double toler043 = 5.0000000000000039e-13;
1501 
1502 // Test data for n=20, m=5.
1503 // max(|f - f_GSL|): 16.000000000000000 at index 9
1504 // max(|f - f_GSL| / |f_GSL|): 3.5731302592472765e-15
1505 // mean(f - f_GSL): -1.4092810048974798
1506 // variance(f - f_GSL): 598.27450725320409
1507 // stddev(f - f_GSL): 24.459650595484884
1508 const testcase_assoc_laguerre<double>
1509 data044[11] =
1510 {
1511   { 53130.000000000000, 20, 5,
1512 	  0.0000000000000000, 0.0 },
1513   { -158.69554500944142, 20, 5,
1514 	  10.000000000000000, 0.0 },
1515   { 334.08012288038952, 20, 5,
1516 	  20.000000000000000, 0.0 },
1517   { -198372.47662554163, 20, 5,
1518 	  30.000000000000000, 0.0 },
1519   { -13627144.088579426, 20, 5,
1520 	  40.000000000000000, 0.0 },
1521   { -780579985.44731510, 20, 5,
1522 	  50.000000000000000, 0.0 },
1523   { 116648634237.73535, 20, 5,
1524 	  60.000000000000000, 0.0 },
1525   { -12347348707739.742, 20, 5,
1526 	  70.000000000000000, 0.0 },
1527   { 1199516248034090.8, 20, 5,
1528 	  80.000000000000000, 0.0 },
1529   { 1.3451503195078531e+17, 20, 5,
1530 	  90.000000000000000, 0.0 },
1531   { 4.1058904276111483e+18, 20, 5,
1532 	  100.00000000000000, 0.0 },
1533 };
1534 const double toler044 = 2.5000000000000020e-13;
1535 
1536 // Test data for n=20, m=10.
1537 // max(|f - f_GSL|): 64.000000000000000 at index 10
1538 // max(|f - f_GSL| / |f_GSL|): 1.0709209504860220e-15
1539 // mean(f - f_GSL): -5.5440786440316181
1540 // variance(f - f_GSL): 376.60778837733284
1541 // stddev(f - f_GSL): 19.406385247575933
1542 const testcase_assoc_laguerre<double>
1543 data045[11] =
1544 {
1545   { 30045015.000000000, 20, 10,
1546 	  0.0000000000000000, 0.0 },
1547   { -1755.6226861258601, 20, 10,
1548 	  10.000000000000000, 0.0 },
1549   { -9081.6726644737901, 20, 10,
1550 	  20.000000000000000, 0.0 },
1551   { 95771.650912113109, 20, 10,
1552 	  30.000000000000000, 0.0 },
1553   { 5089151.9272779236, 20, 10,
1554 	  40.000000000000000, 0.0 },
1555   { 97400399.450206712, 20, 10,
1556 	  50.000000000000000, 0.0 },
1557   { -16009352450.477026, 20, 10,
1558 	  60.000000000000000, 0.0 },
1559   { 842271286905.01050, 20, 10,
1560 	  70.000000000000000, 0.0 },
1561   { -79901725466796.938, 20, 10,
1562 	  80.000000000000000, 0.0 },
1563   { 7944103675858637.0, 20, 10,
1564 	  90.000000000000000, 0.0 },
1565   { 5.7429821893388288e+17, 20, 10,
1566 	  100.00000000000000, 0.0 },
1567 };
1568 const double toler045 = 2.5000000000000020e-13;
1569 
1570 // Test data for n=20, m=20.
1571 // max(|f - f_GSL|): 2.1250000000000000 at index 10
1572 // max(|f - f_GSL| / |f_GSL|): 1.1968937782285294e-14
1573 // mean(f - f_GSL): 0.19344895682429938
1574 // variance(f - f_GSL): 0.41039783756558101
1575 // stddev(f - f_GSL): 0.64062300736515931
1576 const testcase_assoc_laguerre<double>
1577 data046[11] =
1578 {
1579   { 137846528819.99994, 20, 20,
1580 	  0.0000000000000000, 0.0 },
1581   { -136976.49571333229, 20, 20,
1582 	  10.000000000000000, 0.0 },
1583   { 113878.49908041643, 20, 20,
1584 	  20.000000000000000, 0.0 },
1585   { -342529.21778796182, 20, 20,
1586 	  30.000000000000000, 0.0 },
1587   { -350112.66981443466, 20, 20,
1588 	  40.000000000000000, 0.0 },
1589   { -10791735.172977809, 20, 20,
1590 	  50.000000000000000, 0.0 },
1591   { -1038073940.0811402, 20, 20,
1592 	  60.000000000000000, 0.0 },
1593   { 667312550.63616335, 20, 20,
1594 	  70.000000000000000, 0.0 },
1595   { 741537869902.29028, 20, 20,
1596 	  80.000000000000000, 0.0 },
1597   { -32378376755737.418, 20, 20,
1598 	  90.000000000000000, 0.0 },
1599   { -601760332167937.62, 20, 20,
1600 	  100.00000000000000, 0.0 },
1601 };
1602 const double toler046 = 1.0000000000000008e-12;
1603 
1604 // Test data for n=20, m=50.
1605 // max(|f - f_GSL|): 0.25000000000000000 at index 1
1606 // max(|f - f_GSL| / |f_GSL|): 1.2103144092558234e-14
1607 // mean(f - f_GSL): -0.022849527272311123
1608 // variance(f - f_GSL): 5.7130155161570465e-05
1609 // stddev(f - f_GSL): 0.0075584492563997852
1610 const testcase_assoc_laguerre<double>
1611 data047[11] =
1612 {
1613   { 1.6188460366265789e+17, 20, 50,
1614 	  0.0000000000000000, 0.0 },
1615   { 1599011936804291.5, 20, 50,
1616 	  10.000000000000000, 0.0 },
1617   { -131273880831.42432, 20, 50,
1618 	  20.000000000000000, 0.0 },
1619   { -3133213093.6903548, 20, 50,
1620 	  30.000000000000000, 0.0 },
1621   { -213935628.04985175, 20, 50,
1622 	  40.000000000000000, 0.0 },
1623   { -47375578.495921060, 20, 50,
1624 	  50.000000000000000, 0.0 },
1625   { -115731015.14034876, 20, 50,
1626 	  60.000000000000000, 0.0 },
1627   { -737415147.29420292, 20, 50,
1628 	  70.000000000000000, 0.0 },
1629   { -2123455626.8621769, 20, 50,
1630 	  80.000000000000000, 0.0 },
1631   { 29801266858.608929, 20, 50,
1632 	  90.000000000000000, 0.0 },
1633   { -132886631026.82553, 20, 50,
1634 	  100.00000000000000, 0.0 },
1635 };
1636 const double toler047 = 1.0000000000000008e-12;
1637 
1638 // Test data for n=20, m=100.
1639 // max(|f - f_GSL|): 1572864.0000000000 at index 1
1640 // max(|f - f_GSL| / |f_GSL|): 3.6621229371267356e-14
1641 // mean(f - f_GSL): 137262.28072981400
1642 // variance(f - f_GSL): inf
1643 // stddev(f - f_GSL): inf
1644 const testcase_assoc_laguerre<double>
1645 data048[11] =
1646 {
1647   { 2.9462227291176643e+22, 20, 100,
1648 	  0.0000000000000000, 0.0 },
1649   { 3.5777890748701244e+21, 20, 100,
1650 	  10.000000000000000, 0.0 },
1651   { 3.1584925521456759e+20, 20, 100,
1652 	  20.000000000000000, 0.0 },
1653   { 1.7389599388424864e+19, 20, 100,
1654 	  30.000000000000000, 0.0 },
1655   { 4.1401342745980634e+17, 20, 100,
1656 	  40.000000000000000, 0.0 },
1657   { -79359706102062.594, 20, 100,
1658 	  50.000000000000000, 0.0 },
1659   { 22736203650743.145, 20, 100,
1660 	  60.000000000000000, 0.0 },
1661   { 65679006380.095703, 20, 100,
1662 	  70.000000000000000, 0.0 },
1663   { -236263257610.77792, 20, 100,
1664 	  80.000000000000000, 0.0 },
1665   { -38072644585.303101, 20, 100,
1666 	  90.000000000000000, 0.0 },
1667   { 68236474365.173973, 20, 100,
1668 	  100.00000000000000, 0.0 },
1669 };
1670 const double toler048 = 2.5000000000000015e-12;
1671 
1672 // Test data for n=50, m=0.
1673 // max(|f - f_GSL|): 196608.00000000000 at index 10
1674 // max(|f - f_GSL| / |f_GSL|): 4.2910775919271532e-15
1675 // mean(f - f_GSL): -17990.447398879332
1676 // variance(f - f_GSL): 27618453284.204639
1677 // stddev(f - f_GSL): 166188.00583737876
1678 const testcase_assoc_laguerre<double>
1679 data049[11] =
1680 {
1681   { 1.0000000000000000, 50, 0,
1682 	  0.0000000000000000, 0.0 },
1683   { 17.534183446338233, 50, 0,
1684 	  10.000000000000000, 0.0 },
1685   { 980.26961889791028, 50, 0,
1686 	  20.000000000000000, 0.0 },
1687   { 293000.50735962362, 50, 0,
1688 	  30.000000000000000, 0.0 },
1689   { -14896937.968694873, 50, 0,
1690 	  40.000000000000000, 0.0 },
1691   { 2513677852.6916871, 50, 0,
1692 	  50.000000000000000, 0.0 },
1693   { -883876565337.99219, 50, 0,
1694 	  60.000000000000000, 0.0 },
1695   { -80967880733583.234, 50, 0,
1696 	  70.000000000000000, 0.0 },
1697   { -8217471769564841.0, 50, 0,
1698 	  80.000000000000000, 0.0 },
1699   { -2.1140031308048891e+18, 50, 0,
1700 	  90.000000000000000, 0.0 },
1701   { -3.9710103487094692e+20, 50, 0,
1702 	  100.00000000000000, 0.0 },
1703 };
1704 const double toler049 = 2.5000000000000020e-13;
1705 
1706 // Test data for n=50, m=1.
1707 // max(|f - f_GSL|): 311296.00000000000 at index 10
1708 // max(|f - f_GSL| / |f_GSL|): 4.3113718426975911e-14
1709 // mean(f - f_GSL): 28417.096591423862
1710 // variance(f - f_GSL): 32927254885.825413
1711 // stddev(f - f_GSL): 181458.68644356879
1712 const testcase_assoc_laguerre<double>
1713 data050[11] =
1714 {
1715   { 51.000000000000021, 50, 1,
1716 	  0.0000000000000000, 0.0 },
1717   { 1.4214573271639575, 50, 1,
1718 	  10.000000000000000, 0.0 },
1719   { -2574.8072295127827, 50, 1,
1720 	  20.000000000000000, 0.0 },
1721   { 35846.479728359205, 50, 1,
1722 	  30.000000000000000, 0.0 },
1723   { -48263698.768318526, 50, 1,
1724 	  40.000000000000000, 0.0 },
1725   { 6161525870.2738533, 50, 1,
1726 	  50.000000000000000, 0.0 },
1727   { -382655486658.47125, 50, 1,
1728 	  60.000000000000000, 0.0 },
1729   { -109635579833241.72, 50, 1,
1730 	  70.000000000000000, 0.0 },
1731   { -14623805817283490., 50, 1,
1732 	  80.000000000000000, 0.0 },
1733   { -2.0666847190878152e+18, 50, 1,
1734 	  90.000000000000000, 0.0 },
1735   { -1.4385187953997626e+20, 50, 1,
1736 	  100.00000000000000, 0.0 },
1737 };
1738 const double toler050 = 2.5000000000000015e-12;
1739 
1740 // Test data for n=50, m=2.
1741 // max(|f - f_GSL|): 139264.00000000000 at index 10
1742 // max(|f - f_GSL| / |f_GSL|): 2.5437687254653283e-15
1743 // mean(f - f_GSL): 12649.078840684118
1744 // variance(f - f_GSL): 1765904219.6855280
1745 // stddev(f - f_GSL): 42022.663167456769
1746 const testcase_assoc_laguerre<double>
1747 data051[11] =
1748 {
1749   { 1326.0000000000000, 50, 2,
1750 	  0.0000000000000000, 0.0 },
1751   { -87.860732516444529, 50, 2,
1752 	  10.000000000000000, 0.0 },
1753   { -5203.2351191780917, 50, 2,
1754 	  20.000000000000000, 0.0 },
1755   { -461059.50012538867, 50, 2,
1756 	  30.000000000000000, 0.0 },
1757   { -30476695.327440590, 50, 2,
1758 	  40.000000000000000, 0.0 },
1759   { 3720804977.9338136, 50, 2,
1760 	  50.000000000000000, 0.0 },
1761   { 362262002434.51453, 50, 2,
1762 	  60.000000000000000, 0.0 },
1763   { -52210917867820.227, 50, 2,
1764 	  70.000000000000000, 0.0 },
1765   { -9567965136901914.0, 50, 2,
1766 	  80.000000000000000, 0.0 },
1767   { -8.9171277517712883e+17, 50, 2,
1768 	  90.000000000000000, 0.0 },
1769   { 5.7231129448806982e+19, 50, 2,
1770 	  100.00000000000000, 0.0 },
1771 };
1772 const double toler051 = 2.5000000000000020e-13;
1773 
1774 // Test data for n=50, m=5.
1775 // max(|f - f_GSL|): 81920.000000000000 at index 10
1776 // max(|f - f_GSL| / |f_GSL|): 2.6215979818234617e-15
1777 // mean(f - f_GSL): -7423.7222822287622
1778 // variance(f - f_GSL): 648926959.11275744
1779 // stddev(f - f_GSL): 25474.044812568685
1780 const testcase_assoc_laguerre<double>
1781 data052[11] =
1782 {
1783   { 3478761.0000000000, 50, 5,
1784 	  0.0000000000000000, 0.0 },
1785   { 1055.8381917651498, 50, 5,
1786 	  10.000000000000000, 0.0 },
1787   { 15264.646660345055, 50, 5,
1788 	  20.000000000000000, 0.0 },
1789   { 1229651.8966600848, 50, 5,
1790 	  30.000000000000000, 0.0 },
1791   { 39270451.823656842, 50, 5,
1792 	  40.000000000000000, 0.0 },
1793   { -4424062601.1152029, 50, 5,
1794 	  50.000000000000000, 0.0 },
1795   { -186017434284.19223, 50, 5,
1796 	  60.000000000000000, 0.0 },
1797   { 50972853949302.609, 50, 5,
1798 	  70.000000000000000, 0.0 },
1799   { 6530702754012517.0, 50, 5,
1800 	  80.000000000000000, 0.0 },
1801   { 6.8387592714678029e+17, 50, 5,
1802 	  90.000000000000000, 0.0 },
1803   { 3.9198742504338391e+19, 50, 5,
1804 	  100.00000000000000, 0.0 },
1805 };
1806 const double toler052 = 2.5000000000000020e-13;
1807 
1808 // Test data for n=50, m=10.
1809 // max(|f - f_GSL|): 192.00000000000000 at index 9
1810 // max(|f - f_GSL| / |f_GSL|): 3.6229303412867937e-15
1811 // mean(f - f_GSL): -17.490024036237049
1812 // variance(f - f_GSL): 12219580.275082903
1813 // stddev(f - f_GSL): 3495.6516238153513
1814 const testcase_assoc_laguerre<double>
1815 data053[11] =
1816 {
1817   { 75394027565.999985, 50, 10,
1818 	  0.0000000000000000, 0.0 },
1819   { 91833.924098770178, 50, 10,
1820 	  10.000000000000000, 0.0 },
1821   { 330501.87929778261, 50, 10,
1822 	  20.000000000000000, 0.0 },
1823   { 3625088.1635972536, 50, 10,
1824 	  30.000000000000000, 0.0 },
1825   { 213954727.28632012, 50, 10,
1826 	  40.000000000000000, 0.0 },
1827   { -9381006937.7517681, 50, 10,
1828 	  50.000000000000000, 0.0 },
1829   { 535333683777.48615, 50, 10,
1830 	  60.000000000000000, 0.0 },
1831   { 18824406573722.172, 50, 10,
1832 	  70.000000000000000, 0.0 },
1833   { -533858276780013.12, 50, 10,
1834 	  80.000000000000000, 0.0 },
1835   { -52995774666704016., 50, 10,
1836 	  90.000000000000000, 0.0 },
1837   { 6.0504182862448783e+18, 50, 10,
1838 	  100.00000000000000, 0.0 },
1839 };
1840 const double toler053 = 2.5000000000000020e-13;
1841 
1842 // Test data for n=50, m=20.
1843 // max(|f - f_GSL|): 512.00000000000000 at index 10
1844 // max(|f - f_GSL| / |f_GSL|): 9.6616871455409171e-14
1845 // mean(f - f_GSL): -47.364405233074315
1846 // variance(f - f_GSL): 23782.450110032125
1847 // stddev(f - f_GSL): 154.21559619581973
1848 const testcase_assoc_laguerre<double>
1849 data054[11] =
1850 {
1851   { 1.6188460366265779e+17, 50, 20,
1852 	  0.0000000000000000, 0.0 },
1853   { -307637087.25169408, 50, 20,
1854 	  10.000000000000000, 0.0 },
1855   { 12524651.102974586, 50, 20,
1856 	  20.000000000000000, 0.0 },
1857   { -315460483.86210561, 50, 20,
1858 	  30.000000000000000, 0.0 },
1859   { -1889683587.3459988, 50, 20,
1860 	  40.000000000000000, 0.0 },
1861   { 37457044404.200348, 50, 20,
1862 	  50.000000000000000, 0.0 },
1863   { -843831858224.71802, 50, 20,
1864 	  60.000000000000000, 0.0 },
1865   { -92231643172.307495, 50, 20,
1866 	  70.000000000000000, 0.0 },
1867   { 904211757769501.00, 50, 20,
1868 	  80.000000000000000, 0.0 },
1869   { 46508193600283272., 50, 20,
1870 	  90.000000000000000, 0.0 },
1871   { 2.3216887928162719e+18, 50, 20,
1872 	  100.00000000000000, 0.0 },
1873 };
1874 const double toler054 = 5.0000000000000029e-12;
1875 
1876 // Test data for n=50, m=50.
1877 // max(|f - f_GSL|): 989855744.00000000 at index 1
1878 // max(|f - f_GSL| / |f_GSL|): 1.1139535389485780e-14
1879 // mean(f - f_GSL): 89986812.018465906
1880 // variance(f - f_GSL): inf
1881 // stddev(f - f_GSL): inf
1882 const testcase_assoc_laguerre<double>
1883 data055[11] =
1884 {
1885   { 1.0089134454556417e+29, 50, 50,
1886 	  0.0000000000000000, 0.0 },
1887   { 1.3822795753070493e+23, 50, 50,
1888 	  10.000000000000000, 0.0 },
1889   { 95817260381628336., 50, 50,
1890 	  20.000000000000000, 0.0 },
1891   { -910798580856015.38, 50, 50,
1892 	  30.000000000000000, 0.0 },
1893   { 50513254049166.922, 50, 50,
1894 	  40.000000000000000, 0.0 },
1895   { 84159703903348.938, 50, 50,
1896 	  50.000000000000000, 0.0 },
1897   { -138805244691822.72, 50, 50,
1898 	  60.000000000000000, 0.0 },
1899   { 181046391269246.25, 50, 50,
1900 	  70.000000000000000, 0.0 },
1901   { 2086884905317107.5, 50, 50,
1902 	  80.000000000000000, 0.0 },
1903   { -2765620139862428.0, 50, 50,
1904 	  90.000000000000000, 0.0 },
1905   { -1.3706751678146290e+17, 50, 50,
1906 	  100.00000000000000, 0.0 },
1907 };
1908 const double toler055 = 1.0000000000000008e-12;
1909 
1910 // Test data for n=50, m=100.
1911 // max(|f - f_GSL|): 1.8889465931478581e+22 at index 1
1912 // max(|f - f_GSL| / |f_GSL|): 2.2737143709403468e-14
1913 // mean(f - f_GSL): -1.7004551248566624e+21
1914 // variance(f - f_GSL): inf
1915 // stddev(f - f_GSL): inf
1916 const testcase_assoc_laguerre<double>
1917 data056[11] =
1918 {
1919   { 2.0128660909731929e+40, 50, 100,
1920 	  0.0000000000000000, 0.0 },
1921   { 9.3675094807695474e+37, 50, 100,
1922 	  10.000000000000000, 0.0 },
1923   { 1.3009321481877196e+35, 50, 100,
1924 	  20.000000000000000, 0.0 },
1925   { 7.3720026893233823e+30, 50, 100,
1926 	  30.000000000000000, 0.0 },
1927   { -6.0824679079634667e+25, 50, 100,
1928 	  40.000000000000000, 0.0 },
1929   { -6.0053188793543450e+23, 50, 100,
1930 	  50.000000000000000, 0.0 },
1931   { 1.4178129287264692e+22, 50, 100,
1932 	  60.000000000000000, 0.0 },
1933   { -5.4652099341566706e+20, 50, 100,
1934 	  70.000000000000000, 0.0 },
1935   { -1.0817271759263274e+20, 50, 100,
1936 	  80.000000000000000, 0.0 },
1937   { 3.8058734007924195e+19, 50, 100,
1938 	  90.000000000000000, 0.0 },
1939   { 4.7439240848028344e+19, 50, 100,
1940 	  100.00000000000000, 0.0 },
1941 };
1942 const double toler056 = 2.5000000000000015e-12;
1943 
1944 // Test data for n=100, m=0.
1945 // max(|f - f_GSL|): 98304.000000000000 at index 10
1946 // max(|f - f_GSL| / |f_GSL|): 3.8776197831393928e-15
1947 // mean(f - f_GSL): -8865.4606155926431
1948 // variance(f - f_GSL): 4058808072.1721206
1949 // stddev(f - f_GSL): 63708.775472238682
1950 const testcase_assoc_laguerre<double>
1951 data057[11] =
1952 {
1953   { 1.0000000000000000, 100, 0,
1954 	  0.0000000000000000, 0.0 },
1955   { 13.277662844303450, 100, 0,
1956 	  10.000000000000000, 0.0 },
1957   { 1854.0367283243388, 100, 0,
1958 	  20.000000000000000, 0.0 },
1959   { 170141.86987046551, 100, 0,
1960 	  30.000000000000000, 0.0 },
1961   { -7272442.3156006960, 100, 0,
1962 	  40.000000000000000, 0.0 },
1963   { 4847420871.2690506, 100, 0,
1964 	  50.000000000000000, 0.0 },
1965   { 693492765740.29688, 100, 0,
1966 	  60.000000000000000, 0.0 },
1967   { 17125518672239.770, 100, 0,
1968 	  70.000000000000000, 0.0 },
1969   { -13763178176383768., 100, 0,
1970 	  80.000000000000000, 0.0 },
1971   { 2.1307220490380173e+18, 100, 0,
1972 	  90.000000000000000, 0.0 },
1973   { -2.6292260693068916e+20, 100, 0,
1974 	  100.00000000000000, 0.0 },
1975 };
1976 const double toler057 = 2.5000000000000020e-13;
1977 
1978 // Test data for n=100, m=1.
1979 // max(|f - f_GSL|): 245760.00000000000 at index 10
1980 // max(|f - f_GSL| / |f_GSL|): 1.4500034612453474e-14
1981 // mean(f - f_GSL): 22224.249977270934
1982 // variance(f - f_GSL): 29644360933.494530
1983 // stddev(f - f_GSL): 172175.37841832824
1984 const testcase_assoc_laguerre<double>
1985 data058[11] =
1986 {
1987   { 101.00000000000003, 100, 1,
1988 	  0.0000000000000000, 0.0 },
1989   { -14.650661983680420, 100, 1,
1990 	  10.000000000000000, 0.0 },
1991   { 1626.5010939361582, 100, 1,
1992 	  20.000000000000000, 0.0 },
1993   { 417884.77658268728, 100, 1,
1994 	  30.000000000000000, 0.0 },
1995   { -55617646.951649837, 100, 1,
1996 	  40.000000000000000, 0.0 },
1997   { 884829874.26626217, 100, 1,
1998 	  50.000000000000000, 0.0 },
1999   { 154466082750.32202, 100, 1,
2000 	  60.000000000000000, 0.0 },
2001   { -101423973484646.00, 100, 1,
2002 	  70.000000000000000, 0.0 },
2003   { -1388352348671756.8, 100, 1,
2004 	  80.000000000000000, 0.0 },
2005   { 7.8048705513268582e+17, 100, 1,
2006 	  90.000000000000000, 0.0 },
2007   { 1.6948925059042755e+19, 100, 1,
2008 	  100.00000000000000, 0.0 },
2009 };
2010 const double toler058 = 1.0000000000000008e-12;
2011 
2012 // Test data for n=100, m=2.
2013 // max(|f - f_GSL|): 557056.00000000000 at index 10
2014 // max(|f - f_GSL| / |f_GSL|): 5.1603746667135714e-15
2015 // mean(f - f_GSL): 50294.883489425141
2016 // variance(f - f_GSL): 2009492413242.1035
2017 // stddev(f - f_GSL): 1417565.6645256698
2018 const testcase_assoc_laguerre<double>
2019 data059[11] =
2020 {
2021   { 5151.0000000000055, 100, 2,
2022 	  0.0000000000000000, 0.0 },
2023   { -150.22012290951324, 100, 2,
2024 	  10.000000000000000, 0.0 },
2025   { -7655.0593294049449, 100, 2,
2026 	  20.000000000000000, 0.0 },
2027   { -140996.69276179091, 100, 2,
2028 	  30.000000000000000, 0.0 },
2029   { -38645171.278549351, 100, 2,
2030 	  40.000000000000000, 0.0 },
2031   { -8889263688.2118931, 100, 2,
2032 	  50.000000000000000, 0.0 },
2033   { -1010338971533.3400, 100, 2,
2034 	  60.000000000000000, 0.0 },
2035   { -127582564332943.91, 100, 2,
2036 	  70.000000000000000, 0.0 },
2037   { 15970305694654312., 100, 2,
2038 	  80.000000000000000, 0.0 },
2039   { -1.6019844992862820e+18, 100, 2,
2040 	  90.000000000000000, 0.0 },
2041   { 2.8267024730962955e+20, 100, 2,
2042 	  100.00000000000000, 0.0 },
2043 };
2044 const double toler059 = 5.0000000000000039e-13;
2045 
2046 // Test data for n=100, m=5.
2047 // max(|f - f_GSL|): 393216.00000000000 at index 10
2048 // max(|f - f_GSL| / |f_GSL|): 8.0946565190235238e-15
2049 // mean(f - f_GSL): 35883.277835871675
2050 // variance(f - f_GSL): 72845813363.438187
2051 // stddev(f - f_GSL): 269899.63572305575
2052 const testcase_assoc_laguerre<double>
2053 data060[11] =
2054 {
2055   { 96560646.000000030, 100, 5,
2056 	  0.0000000000000000, 0.0 },
2057   { 2430.6732236677612, 100, 5,
2058 	  10.000000000000000, 0.0 },
2059   { 111162.32026994647, 100, 5,
2060 	  20.000000000000000, 0.0 },
2061   { 4036708.2599413628, 100, 5,
2062 	  30.000000000000000, 0.0 },
2063   { -34055982.664405443, 100, 5,
2064 	  40.000000000000000, 0.0 },
2065   { 30110688343.562328, 100, 5,
2066 	  50.000000000000000, 0.0 },
2067   { 2651429940558.2974, 100, 5,
2068 	  60.000000000000000, 0.0 },
2069   { 192108556058943.09, 100, 5,
2070 	  70.000000000000000, 0.0 },
2071   { -25410533973455528., 100, 5,
2072 	  80.000000000000000, 0.0 },
2073   { 2.1072955633564431e+18, 100, 5,
2074 	  90.000000000000000, 0.0 },
2075   { -2.9434005355877289e+20, 100, 5,
2076 	  100.00000000000000, 0.0 },
2077 };
2078 const double toler060 = 5.0000000000000039e-13;
2079 
2080 // Test data for n=100, m=10.
2081 // max(|f - f_GSL|): 155648.00000000000 at index 10
2082 // max(|f - f_GSL| / |f_GSL|): 5.1685581852917721e-15
2083 // mean(f - f_GSL): 13707.238286828961
2084 // variance(f - f_GSL): 5037793089646.2549
2085 // stddev(f - f_GSL): 2244502.8602446141
2086 const testcase_assoc_laguerre<double>
2087 data061[11] =
2088 {
2089   { 46897636623981.039, 100, 10,
2090 	  0.0000000000000000, 0.0 },
2091   { 529208.11550990329, 100, 10,
2092 	  10.000000000000000, 0.0 },
2093   { 7402892.1748803817, 100, 10,
2094 	  20.000000000000000, 0.0 },
2095   { 88369632.083243579, 100, 10,
2096 	  30.000000000000000, 0.0 },
2097   { 822187797.59096563, 100, 10,
2098 	  40.000000000000000, 0.0 },
2099   { 180231446033.06866, 100, 10,
2100 	  50.000000000000000, 0.0 },
2101   { 7922942703798.1309, 100, 10,
2102 	  60.000000000000000, 0.0 },
2103   { 784424250559042.12, 100, 10,
2104 	  70.000000000000000, 0.0 },
2105   { -16325634720239370., 100, 10,
2106 	  80.000000000000000, 0.0 },
2107   { -1.0879588307443162e+18, 100, 10,
2108 	  90.000000000000000, 0.0 },
2109   { 3.0114394463610642e+19, 100, 10,
2110 	  100.00000000000000, 0.0 },
2111 };
2112 const double toler061 = 5.0000000000000039e-13;
2113 
2114 // Test data for n=100, m=20.
2115 // max(|f - f_GSL|): 524288.00000000000 at index 10
2116 // max(|f - f_GSL| / |f_GSL|): 3.7005989410347388e-14
2117 // mean(f - f_GSL): -46766.623212640938
2118 // variance(f - f_GSL): 55764004614002920.
2119 // stddev(f - f_GSL): 236144033.61932081
2120 const testcase_assoc_laguerre<double>
2121 data062[11] =
2122 {
2123   { 2.9462227291176614e+22, 100, 20,
2124 	  0.0000000000000000, 0.0 },
2125   { 313694958939.90405, 100, 20,
2126 	  10.000000000000000, 0.0 },
2127   { 45396489338.096191, 100, 20,
2128 	  20.000000000000000, 0.0 },
2129   { -7215826758.0081253, 100, 20,
2130 	  30.000000000000000, 0.0 },
2131   { 825949194005.88855, 100, 20,
2132 	  40.000000000000000, 0.0 },
2133   { -2764742119971.0811, 100, 20,
2134 	  50.000000000000000, 0.0 },
2135   { -219802198273516.03, 100, 20,
2136 	  60.000000000000000, 0.0 },
2137   { -1699053306145262.0, 100, 20,
2138 	  70.000000000000000, 0.0 },
2139   { 3.5495709345023846e+17, 100, 20,
2140 	  80.000000000000000, 0.0 },
2141   { -9.6128675110292419e+18, 100, 20,
2142 	  90.000000000000000, 0.0 },
2143   { 4.3619868422072212e+20, 100, 20,
2144 	  100.00000000000000, 0.0 },
2145 };
2146 const double toler062 = 2.5000000000000015e-12;
2147 
2148 // Test data for n=100, m=50.
2149 // max(|f - f_GSL|): 316659348799488.00 at index 1
2150 // max(|f - f_GSL| / |f_GSL|): 1.1554040570270351e-14
2151 // mean(f - f_GSL): -28787238841995.637
2152 // variance(f - f_GSL): inf
2153 // stddev(f - f_GSL): inf
2154 const testcase_assoc_laguerre<double>
2155 data063[11] =
2156 {
2157   { 2.0128660909731931e+40, 100, 50,
2158 	  0.0000000000000000, 0.0 },
2159   { -4.0151443913473373e+28, 100, 50,
2160 	  10.000000000000000, 0.0 },
2161   { 3.2199632594551924e+22, 100, 50,
2162 	  20.000000000000000, 0.0 },
2163   { -2.7568702092659756e+20, 100, 50,
2164 	  30.000000000000000, 0.0 },
2165   { 7.5553066015421563e+19, 100, 50,
2166 	  40.000000000000000, 0.0 },
2167   { -2.7651625252387734e+19, 100, 50,
2168 	  50.000000000000000, 0.0 },
2169   { -5.8963680147283804e+19, 100, 50,
2170 	  60.000000000000000, 0.0 },
2171   { -1.8082798163033106e+20, 100, 50,
2172 	  70.000000000000000, 0.0 },
2173   { -3.9044276986817249e+20, 100, 50,
2174 	  80.000000000000000, 0.0 },
2175   { 6.9926310700401904e+21, 100, 50,
2176 	  90.000000000000000, 0.0 },
2177   { -5.5727272809923646e+22, 100, 50,
2178 	  100.00000000000000, 0.0 },
2179 };
2180 const double toler063 = 1.0000000000000008e-12;
2181 
2182 // Test data for n=100, m=100.
2183 // max(|f - f_GSL|): 2.3819765684465692e+39 at index 1
2184 // max(|f - f_GSL| / |f_GSL|): 1.9897039067343855e-14
2185 // mean(f - f_GSL): 2.1654330573519588e+38
2186 // variance(f - f_GSL): inf
2187 // stddev(f - f_GSL): inf
2188 const testcase_assoc_laguerre<double>
2189 data064[11] =
2190 {
2191   { 9.0548514656103225e+58, 100, 100,
2192 	  0.0000000000000000, 0.0 },
2193   { 1.3334078033060556e+54, 100, 100,
2194 	  10.000000000000000, 0.0 },
2195   { 2.1002639254211340e+46, 100, 100,
2196 	  20.000000000000000, 0.0 },
2197   { -1.1073158068796292e+39, 100, 100,
2198 	  30.000000000000000, 0.0 },
2199   { -8.3640937363981346e+35, 100, 100,
2200 	  40.000000000000000, 0.0 },
2201   { -6.5879339429312686e+32, 100, 100,
2202 	  50.000000000000000, 0.0 },
2203   { -2.4190645077698771e+30, 100, 100,
2204 	  60.000000000000000, 0.0 },
2205   { -7.9224960465662171e+29, 100, 100,
2206 	  70.000000000000000, 0.0 },
2207   { -2.8605772478408694e+29, 100, 100,
2208 	  80.000000000000000, 0.0 },
2209   { 2.4149589189609957e+28, 100, 100,
2210 	  90.000000000000000, 0.0 },
2211   { 5.1146476014859021e+28, 100, 100,
2212 	  100.00000000000000, 0.0 },
2213 };
2214 const double toler064 = 1.0000000000000008e-12;
2215 
2216 template<typename Ret, unsigned int Num>
2217   void
test(const testcase_assoc_laguerre<Ret> (& data)[Num],Ret toler)2218   test(const testcase_assoc_laguerre<Ret> (&data)[Num], Ret toler)
2219   {
2220     bool test __attribute__((unused)) = true;
2221     const Ret eps = std::numeric_limits<Ret>::epsilon();
2222     Ret max_abs_diff = -Ret(1);
2223     Ret max_abs_frac = -Ret(1);
2224     unsigned int num_datum = Num;
2225     for (unsigned int i = 0; i < num_datum; ++i)
2226   	 {
2227 	const Ret f = std::assoc_laguerre(data[i].n, data[i].m,
2228 		     data[i].x);
2229 	const Ret f0 = data[i].f0;
2230 	const Ret diff = f - f0;
2231 	if (std::abs(diff) > max_abs_diff)
2232 	  max_abs_diff = std::abs(diff);
2233 	if (std::abs(f0) > Ret(10) * eps
2234 	 && std::abs(f) > Ret(10) * eps)
2235 	  {
2236 	    const Ret frac = diff / f0;
2237 	    if (std::abs(frac) > max_abs_frac)
2238 	      max_abs_frac = std::abs(frac);
2239 	  }
2240       }
2241     VERIFY(max_abs_frac < toler);
2242   }
2243 
2244 int
main()2245 main()
2246 {
2247   test(data001, toler001);
2248   test(data002, toler002);
2249   test(data003, toler003);
2250   test(data004, toler004);
2251   test(data005, toler005);
2252   test(data006, toler006);
2253   test(data007, toler007);
2254   test(data008, toler008);
2255   test(data009, toler009);
2256   test(data010, toler010);
2257   test(data011, toler011);
2258   test(data012, toler012);
2259   test(data013, toler013);
2260   test(data014, toler014);
2261   test(data015, toler015);
2262   test(data016, toler016);
2263   test(data017, toler017);
2264   test(data018, toler018);
2265   test(data019, toler019);
2266   test(data020, toler020);
2267   test(data021, toler021);
2268   test(data022, toler022);
2269   test(data023, toler023);
2270   test(data024, toler024);
2271   test(data025, toler025);
2272   test(data026, toler026);
2273   test(data027, toler027);
2274   test(data028, toler028);
2275   test(data029, toler029);
2276   test(data030, toler030);
2277   test(data031, toler031);
2278   test(data032, toler032);
2279   test(data033, toler033);
2280   test(data034, toler034);
2281   test(data035, toler035);
2282   test(data036, toler036);
2283   test(data037, toler037);
2284   test(data038, toler038);
2285   test(data039, toler039);
2286   test(data040, toler040);
2287   test(data041, toler041);
2288   test(data042, toler042);
2289   test(data043, toler043);
2290   test(data044, toler044);
2291   test(data045, toler045);
2292   test(data046, toler046);
2293   test(data047, toler047);
2294   test(data048, toler048);
2295   test(data049, toler049);
2296   test(data050, toler050);
2297   test(data051, toler051);
2298   test(data052, toler052);
2299   test(data053, toler053);
2300   test(data054, toler054);
2301   test(data055, toler055);
2302   test(data056, toler056);
2303   test(data057, toler057);
2304   test(data058, toler058);
2305   test(data059, toler059);
2306   test(data060, toler060);
2307   test(data061, toler061);
2308   test(data062, toler062);
2309   test(data063, toler063);
2310   test(data064, toler064);
2311   return 0;
2312 }
2313