Line data Source code
1 : #include "doctest/doctest.h"
2 :
3 : #include <vector>
4 :
5 : #include "Bessel.h"
6 : #include "elsaDefines.h"
7 :
8 : #include "spdlog/fmt/fmt.h"
9 : #include "spdlog/fmt/bundled/ranges.h"
10 :
11 : TEST_SUITE_BEGIN("Bessel");
12 :
13 : using namespace elsa;
14 :
15 : template <typename T>
16 : std::vector<T> get_bessi0();
17 :
18 : template <typename T>
19 : std::vector<T> get_bessi1();
20 :
21 : template <typename T>
22 : std::vector<T> get_bessi2();
23 :
24 : template <typename T>
25 : std::vector<T> get_bessi3();
26 :
27 : template <typename T>
28 : std::vector<T> get_bessi4();
29 :
30 : TEST_CASE_TEMPLATE("bessel0: compare against libstdc++ std::cyl_bessel_i", T, float, double)
31 2 : {
32 2 : auto expected = get_bessi0<T>();
33 2 : const auto size = expected.size();
34 :
35 2 : auto linspace = Vector_t<T>::LinSpaced(size, 0, 4);
36 :
37 402 : for (std::size_t i = 0; i < size; ++i) {
38 400 : CHECK_EQ(math::bessi0(linspace[i]), doctest::Approx(expected[i]));
39 400 : }
40 2 : }
41 :
42 : TEST_CASE_TEMPLATE("bessel1: compare against libstdc++ std::cyl_bessel_i", T, float, double)
43 2 : {
44 2 : std::vector<T> expected = get_bessi1<T>();
45 :
46 2 : const auto size = expected.size();
47 2 : auto linspace = Vector_t<T>::LinSpaced(size, 0, 4);
48 :
49 402 : for (std::size_t i = 0; i < size; ++i) {
50 400 : CHECK_EQ(math::bessi1(linspace[i]), doctest::Approx(expected[i]));
51 400 : }
52 2 : }
53 :
54 : TEST_CASE_TEMPLATE("bessel2: compare against libstdc++ std::cyl_bessel_i", T, float, double)
55 2 : {
56 2 : std::vector<T> expected = get_bessi2<T>();
57 :
58 2 : const auto size = expected.size();
59 2 : auto linspace = Vector_t<T>::LinSpaced(size, 0, 4);
60 :
61 402 : for (std::size_t i = 0; i < size; ++i) {
62 400 : CHECK_EQ(math::bessi2(linspace[i]), doctest::Approx(expected[i]));
63 400 : }
64 2 : }
65 :
66 : TEST_CASE_TEMPLATE("bessel3: compare against libstdc++ std::cyl_bessel_i", T, float, double)
67 2 : {
68 2 : std::vector<T> expected = get_bessi3<T>();
69 :
70 2 : const auto size = expected.size();
71 2 : auto linspace = Vector_t<T>::LinSpaced(size, 0, 4);
72 :
73 402 : for (std::size_t i = 0; i < size; ++i) {
74 400 : CHECK_EQ(math::bessi3(linspace[i]), doctest::Approx(expected[i]));
75 400 : }
76 2 : }
77 :
78 : TEST_CASE_TEMPLATE("bessel4: compare against libstdc++ std::cyl_bessel_i", T, float, double)
79 2 : {
80 2 : std::vector<T> expected = get_bessi4<T>();
81 :
82 2 : const auto size = expected.size();
83 2 : auto linspace = Vector_t<T>::LinSpaced(size, 0, 4);
84 :
85 402 : for (std::size_t i = 0; i < size; ++i) {
86 400 : CHECK_EQ(math::bessi4(linspace[i]), doctest::Approx(expected[i]));
87 400 : }
88 2 : }
89 :
90 : template <typename T>
91 : std::vector<T> get_bessi0()
92 2 : {
93 2 : return {1,
94 2 : 1.0001010101009742,
95 2 : 1.0004040710131905,
96 2 : 1.0009092745748345,
97 2 : 1.0016167738839077,
98 2 : 1.0025267833497755,
99 2 : 1.0036395787653625,
100 2 : 1.0049554974000179,
101 2 : 1.0064749381130846,
102 2 : 1.0081983614882122,
103 2 : 1.0101262899884598,
104 2 : 1.012259308132248,
105 2 : 1.0145980626902165,
106 2 : 1.0171432629030606,
107 2 : 1.019895680720423,
108 2 : 1.0228561510609224,
109 2 : 1.02602557209342,
110 2 : 1.029404905539608,
111 2 : 1.032995176998044,
112 2 : 1.0367974762897314,
113 2 : 1.0408129578253802,
114 2 : 1.0450428409944676,
115 2 : 1.0494884105762434,
116 2 : 1.054151017172824,
117 2 : 1.059032077664524,
118 2 : 1.064133075687591,
119 2 : 1.0694555621345143,
120 2 : 1.0750011556770782,
121 2 : 1.080771543312348,
122 2 : 1.086768480931786,
123 2 : 1.0929937939136918,
124 2 : 1.0994493777391823,
125 2 : 1.1061371986319262,
126 2 : 1.1130592942218605,
127 2 : 1.1202177742331243,
128 2 : 1.1276148211964545,
129 2 : 1.1352526911862921,
130 2 : 1.143133714582864,
131 2 : 1.1512602968595107,
132 2 : 1.1596349193955309,
133 2 : 1.1682601403148447,
134 2 : 1.177138595350759,
135 2 : 1.1862729987371505,
136 2 : 1.1956661441263778,
137 2 : 1.2053209055342506,
138 2 : 1.2152402383123868,
139 2 : 1.2254271801483088,
140 2 : 1.2358848520936279,
141 2 : 1.246616459620684,
142 2 : 1.257625293708014,
143 2 : 1.2689147319550371,
144 2 : 1.280488239726348,
145 2 : 1.2923493713260272,
146 2 : 1.3045017712023848,
147 2 : 1.3169491751835656,
148 2 : 1.3296954117444486,
149 2 : 1.3427444033053038,
150 2 : 1.3561001675626532,
151 2 : 1.3697668188528151,
152 2 : 1.3837485695486196,
153 2 : 1.3980497314897826,
154 2 : 1.4126747174474543,
155 2 : 1.427628042623464,
156 2 : 1.4429143261847786,
157 2 : 1.4585382928337465,
158 2 : 1.474504774414658,
159 2 : 1.490818711557214,
160 2 : 1.5074851553574764,
161 2 : 1.5245092690969024,
162 2 : 1.541896330000072,
163 2 : 1.5596517310317402,
164 2 : 1.5777809827338407,
165 2 : 1.5962897151031123,
166 2 : 1.6151836795100045,
167 2 : 1.6344687506595441,
168 2 : 1.6541509285948752,
169 2 : 1.674236340744168,
170 2 : 1.694731244011643,
171 2 : 1.7156420269134414,
172 2 : 1.736975211759113,
173 2 : 1.7587374568794965,
174 2 : 1.7809355589017835,
175 2 : 1.803576455072581,
176 2 : 1.8266672256298022,
177 2 : 1.8502150962242276,
178 2 : 1.8742274403916046,
179 2 : 1.8987117820761645,
180 2 : 1.923675798206464,
181 2 : 1.9491273213244606,
182 2 : 1.9750743422687718,
183 2 : 2.001525012913072,
184 2 : 2.0284876489606,
185 2 : 2.05597073279579,
186 2 : 2.0839829163940258,
187 2 : 2.1125330242905807,
188 2 : 2.141630056609784,
189 2 : 2.1712831921555122,
190 2 : 2.2015017915641,
191 2 : 2.2322954005208158,
192 2 : 2.2636737530410236,
193 2 : 2.2956467748172367,
194 2 : 2.328224586633251,
195 2 : 2.361417507846559,
196 2 : 2.3952360599403355,
197 2 : 2.4296909701462237,
198 2 : 2.464793175139245,
199 2 : 2.5005538248061545,
200 2 : 2.536984286088587,
201 2 : 2.5740961469023644,
202 2 : 2.611901220134393,
203 2 : 2.6504115477185626,
204 2 : 2.6896394047921204,
205 2 : 2.729597303934006,
206 2 : 2.770297999486674,
207 2 : 2.811754491962946,
208 2 : 2.853980032539495,
209 2 : 2.896988127638546,
210 2 : 2.9407925435994704,
211 2 : 2.9854073114419246,
212 2 : 3.030846731722257,
213 2 : 3.077125379484949,
214 2 : 3.1242581093108184,
215 2 : 3.1722600604638638,
216 2 : 3.221146662138552,
217 2 : 3.270933638809447,
218 2 : 3.3216370156851416,
219 2 : 3.3732731242683904,
220 2 : 3.425858608024511,
221 2 : 3.479410428160046,
222 2 : 3.5339458695137815,
223 2 : 3.5894825465622664,
224 2 : 3.646038409541965,
225 2 : 3.7036317506902616,
226 2 : 3.7622812106075663,
227 2 : 3.8220057847428186,
228 2 : 3.8828248300047266,
229 2 : 3.944758071501113,
230 2 : 4.007825609408828,
231 2 : 4.072047925976672,
232 2 : 4.137445892663884,
233 2 : 4.204040777416756,
234 2 : 4.271854252086014,
235 2 : 4.34090839998763,
236 2 : 4.411225723609797,
237 2 : 4.482829152468875,
238 2 : 4.5557420511170985,
239 2 : 4.629988227305008,
240 2 : 4.70559194030148,
241 2 : 4.782577909374421,
242 2 : 4.860971322435166,
243 2 : 4.940797844849728,
244 2 : 5.0220836284200425,
245 2 : 5.104855320538522,
246 2 : 5.189140073519174,
247 2 : 5.274965554108702,
248 2 : 5.362359953181001,
249 2 : 5.451351995618587,
250 2 : 5.5419709503845205,
251 2 : 5.634246640788485,
252 2 : 5.728209454950738,
253 2 : 5.823890356467696,
254 2 : 5.921320895283087,
255 2 : 6.020533218768536,
256 2 : 6.121560083017699,
257 2 : 6.2244348643579,
258 2 : 6.329191571083614,
259 2 : 6.435864855415881,
260 2 : 6.544490025692144,
261 2 : 6.655103058790918,
262 2 : 6.767740612795618,
263 2 : 6.882440039902386,
264 2 : 6.999239399576497,
265 2 : 7.118177471962079,
266 2 : 7.239293771550163,
267 2 : 7.362628561109785,
268 2 : 7.488222865887558,
269 2 : 7.616118488080491,
270 2 : 7.746358021587595,
271 2 : 7.878984867045601,
272 2 : 8.014043247154069,
273 2 : 8.151578222295688,
274 2 : 8.291635706457441,
275 2 : 8.434262483458198,
276 2 : 8.579506223488936,
277 2 : 8.727415499971412,
278 2 : 8.878039806741516,
279 2 : 9.031429575563577,
280 2 : 9.18763619398187,
281 2 : 9.346712023516085,
282 2 : 9.508710418207086,
283 2 : 9.673685743519929,
284 2 : 9.841693395611049,
285 2 : 10.012789820966388,
286 2 : 10.187032536418023,
287 2 : 10.364480149546196,
288 2 : 10.545192379474479,
289 2 : 10.729230078065527,
290 2 : 10.916655251525206,
291 2 : 11.107531082422915,
292 2 : 11.301921952136313};
293 2 : }
294 :
295 : template <typename T>
296 : std::vector<T> get_bessi1()
297 2 : {
298 2 : return {0,
299 2 : 0.01005075884045603,
300 2 : 0.020104563391044293,
301 2 : 0.03016446038739731,
302 2 : 0.040233498616510634,
303 2 : 0.05031472994333094,
304 2 : 0.060411210338432324,
305 2 : 0.07052600090714392,
306 2 : 0.08066216892049329,
307 2 : 0.09082278884832931,
308 2 : 0.10101094339499074,
309 2 : 0.11122972453788607,
310 2 : 0.12148223456935212,
311 2 : 0.13177158714216047,
312 2 : 0.14210090831903993,
313 2 : 0.15247333762658902,
314 2 : 0.16289202911394865,
315 2 : 0.17336015241661085,
316 2 : 0.18388089382574038,
317 2 : 0.19445745736338693,
318 2 : 0.2050930658639692,
319 2 : 0.21579096206241288,
320 2 : 0.22655440968932924,
321 2 : 0.2373866945736206,
322 2 : 0.24829112575290474,
323 2 : 0.25927103659215084,
324 2 : 0.2703297859109233,
325 2 : 0.2814707591196341,
326 2 : 0.29269736936520485,
327 2 : 0.30401305868654604,
328 2 : 0.31542129918026324,
329 2 : 0.3269255941770035,
330 2 : 0.33852947942885864,
331 2 : 0.35023652430824875,
332 2 : 0.3620503330187103,
333 2 : 0.37397454581801776,
334 2 : 0.38601284025407606,
335 2 : 0.3981689324140204,
336 2 : 0.41044657818696956,
337 2 : 0.42284957454087707,
338 2 : 0.43538176081394164,
339 2 : 0.4480470200210296,
340 2 : 0.4608492801755771,
341 2 : 0.473792515627442,
342 2 : 0.48688074841718176,
343 2 : 0.500118049647239,
344 2 : 0.5135085408705254,
345 2 : 0.5270563954968935,
346 2 : 0.5407658402180044,
347 2 : 0.5546411564510945,
348 2 : 0.5686866818021555,
349 2 : 0.582906811549057,
350 2 : 0.5973060001451282,
351 2 : 0.6118887627437495,
352 2 : 0.626659676744486,
353 2 : 0.6416233833613249,
354 2 : 0.6567845892135676,
355 2 : 0.6721480679399557,
356 2 : 0.687718661836597,
357 2 : 0.7035012835192848,
358 2 : 0.719500917610802,
359 2 : 0.7357226224538141,
360 2 : 0.7521715318499643,
361 2 : 0.768852856825791,
362 2 : 0.7857718874261065,
363 2 : 0.8029339945354687,
364 2 : 0.8203446317284104,
365 2 : 0.8380093371490798,
366 2 : 0.8559337354209696,
367 2 : 0.8741235395874237,
368 2 : 0.8925845530836068,
369 2 : 0.9113226717406571,
370 2 : 0.9303438858227328,
371 2 : 0.9496542820976865,
372 2 : 0.9692600459421125,
373 2 : 0.989167463481518,
374 2 : 1.0093829237663967,
375 2 : 1.0299129209849767,
376 2 : 1.050764056713445,
377 2 : 1.0719430422044538,
378 2 : 1.093456700714736,
379 2 : 1.1153119698726648,
380 2 : 1.1375159040866067,
381 2 : 1.1600756769949445,
382 2 : 1.1829985839586397,
383 2 : 1.2062920445972445,
384 2 : 1.2299636053692673,
385 2 : 1.2540209421978297,
386 2 : 1.278471863142555,
387 2 : 1.3033243111186563,
388 2 : 1.328586366664206,
389 2 : 1.3542662507565746,
390 2 : 1.3803723276790743,
391 2 : 1.4069131079388215,
392 2 : 1.4338972512368886,
393 2 : 1.4613335694918075,
394 2 : 1.48923102991752,
395 2 : 1.5175987581568913,
396 2 : 1.5464460414719126,
397 2 : 1.5757823319917503,
398 2 : 1.6056172500198194,
399 2 : 1.6359605874010676,
400 2 : 1.666822310950698,
401 2 : 1.698212565945569,
402 2 : 1.7301416796795324,
403 2 : 1.7626201650839974,
404 2 : 1.7956587244150402,
405 2 : 1.829268253008377,
406 2 : 1.8634598431035827,
407 2 : 1.8982447877389228,
408 2 : 1.9336345847182241,
409 2 : 1.9696409406512119,
410 2 : 2.0062757750687927,
411 2 : 2.043551224614752,
412 2 : 2.0814796473154176,
413 2 : 2.1200736269288165,
414 2 : 2.159345977374909,
415 2 : 2.1993097472485212,
416 2 : 2.23997822441659,
417 2 : 2.2813649407014145,
418 2 : 2.3234836766516076,
419 2 : 2.3663484664024708,
420 2 : 2.4099736026275846,
421 2 : 2.454373641583381,
422 2 : 2.4995634082485574,
423 2 : 2.5455580015602037,
424 2 : 2.592372799748521,
425 2 : 2.6400234657721104,
426 2 : 2.6885259528557715,
427 2 : 2.7378965101328556,
428 2 : 2.788151688394218,
429 2 : 2.8393083459458666,
430 2 : 2.891383654577425,
431 2 : 2.9443951056436153,
432 2 : 2.998360516260939,
433 2 : 3.0532980356218573,
434 2 : 3.1092261514287256,
435 2 : 3.1661636964498814,
436 2 : 3.2241298552002142,
437 2 : 3.2831441707487263,
438 2 : 3.3432265516554995,
439 2 : 3.404397279040652,
440 2 : 3.4666770137878378,
441 2 : 3.5300868038849154,
442 2 : 3.5946480919044954,
443 2 : 3.6603827226270713,
444 2 : 3.7273129508095204,
445 2 : 3.7954614491018335,
446 2 : 3.86485131611494,
447 2 : 3.9355060846426038,
448 2 : 4.007449730040381,
449 2 : 4.080706678764683,
450 2 : 4.155301817075124,
451 2 : 4.231260499903286,
452 2 : 4.308608559891147,
453 2 : 4.387372316602526,
454 2 : 4.467578585910861,
455 2 : 4.549254689566789,
456 2 : 4.63242846494903,
457 2 : 4.717128275002124,
458 2 : 4.803383018364691,
459 2 : 4.891222139691893,
460 2 : 4.980675640175906,
461 2 : 5.071774088268262,
462 2 : 5.164548630607934,
463 2 : 5.259031003159258,
464 2 : 5.355253542563704,
465 2 : 5.453249197709705,
466 2 : 5.553051541524743,
467 2 : 5.6546947829940635,
468 2 : 5.758213779410398,
469 2 : 5.863644048859215,
470 2 : 5.971021782944045,
471 2 : 6.080383859756595,
472 2 : 6.191767857096375,
473 2 : 6.305212065944719,
474 2 : 6.420755504198142,
475 2 : 6.538437930666071,
476 2 : 6.65829985933811,
477 2 : 6.780382573926037,
478 2 : 6.904728142685951,
479 2 : 7.0313794335259585,
480 2 : 7.160380129404964,
481 2 : 7.291774744028273,
482 2 : 7.4256086378456825,
483 2 : 7.561928034358068,
484 2 : 7.700780036738363,
485 2 : 7.842212644773086,
486 2 : 7.986274772130717,
487 2 : 8.133016263963086,
488 2 : 8.28248791484652,
489 2 : 8.43474148706911,
490 2 : 8.589829729271003,
491 2 : 8.747806395444519,
492 2 : 8.908726264301011,
493 2 : 9.072645159011813,
494 2 : 9.239619967330317,
495 2 : 9.409708662102759,
496 2 : 9.582970322175203,
497 2 : 9.75946515370445};
498 2 : }
499 :
500 : template <typename T>
501 : std::vector<T> get_bessi2()
502 2 : {
503 2 : return {0,
504 2 : 5.0505475599532676e-05,
505 2 : 0.00020204230873677322,
506 2 : 0.00045467172615736847,
507 2 : 0.0008084957982060425,
508 2 : 0.0012636574774897687,
509 2 : 0.001820340653026622,
510 2 : 0.0024787702199007265,
511 2 : 0.003239212164449581,
512 2 : 0.004101973665015862,
513 2 : 0.005067403208301722,
514 2 : 0.006135890721369453,
515 2 : 0.0073078677193383,
516 2 : 0.008583807468833105,
517 2 : 0.009964225167246418,
518 2 : 0.011449678137881784,
519 2 : 0.013040766041051548,
520 2 : 0.014738131101209136,
521 2 : 0.016542458350201156,
522 2 : 0.01845447588673118,
523 2 : 0.0204749551521332,
524 2 : 0.022604711222558457,
525 2 : 0.024844603117686125,
526 2 : 0.02719553412607416,
527 2 : 0.029658452147272904,
528 2 : 0.03223435005083083,
529 2 : 0.03492426605232732,
530 2 : 0.03772928410657475,
531 2 : 0.040650534318138046,
532 2 : 0.043689193369326314,
533 2 : 0.046846484965818516,
534 2 : 0.0501236803000905,
535 2 : 0.053522098532818946,
536 2 : 0.05704310729244349,
537 2 : 0.06068812319307514,
538 2 : 0.06445861237094723,
539 2 : 0.06835609103960995,
540 2 : 0.0723821260640794,
541 2 : 0.0765383355541563,
542 2 : 0.08082638947713966,
543 2 : 0.08524801029016496,
544 2 : 0.08980497359240662,
545 2 : 0.09449910879739037,
546 2 : 0.09933229982566918,
547 2 : 0.10430648581812395,
548 2 : 0.10942366187015808,
549 2 : 0.1146858797870636,
550 2 : 0.12009524886084279,
551 2 : 0.12565393666877872,
552 2 : 0.13136416989405722,
553 2 : 0.13722823516874758,
554 2 : 0.14324847993946252,
555 2 : 0.14942731335602244,
556 2 : 0.15576720718345935,
557 2 : 0.16227069673770672,
558 2 : 0.16894038184532442,
559 2 : 0.17577892782762544,
560 2 : 0.18278906650957238,
561 2 : 0.18997359725382562,
562 2 : 0.1973353880203344,
563 2 : 0.20487737645186924,
564 2 : 0.21260257098590535,
565 2 : 0.22051405199327948,
566 2 : 0.2286149729440451,
567 2 : 0.23690856160097168,
568 2 : 0.24539812124113286,
569 2 : 0.25408703190604964,
570 2 : 0.2629787516808582,
571 2 : 0.27207681800298333,
572 2 : 0.28138484900081656,
573 2 : 0.29090654486289924,
574 2 : 0.30064568923813095,
575 2 : 0.31060615066753033,
576 2 : 0.32079188404808884,
577 2 : 0.3312069321292713,
578 2 : 0.34185542704272825,
579 2 : 0.3527415918657937,
580 2 : 0.363869742219368,
581 2 : 0.37524428790077763,
582 2 : 0.38686973455223783,
583 2 : 0.39875068536554376,
584 2 : 0.4108918428236337,
585 2 : 0.4232980104796862,
586 2 : 0.4359740947744172,
587 2 : 0.4489251068922676,
588 2 : 0.4621561646571832,
589 2 : 0.47567249446869825,
590 2 : 0.48947943327906107,
591 2 : 0.5035824306121399,
592 2 : 0.5179870506248805,
593 2 : 0.5326989742120887,
594 2 : 0.5477240011553345,
595 2 : 0.5630680523167912,
596 2 : 0.5787371718788351,
597 2 : 0.5947375296302571,
598 2 : 0.6110754232999434,
599 2 : 0.6277572809389151,
600 2 : 0.6447896633516188,
601 2 : 0.6621792665773948,
602 2 : 0.6799329244230516,
603 2 : 0.6980576110475167,
604 2 : 0.7165604435995256,
605 2 : 0.7354486849093591,
606 2 : 0.754729746235636,
607 2 : 0.7744111900682099,
608 2 : 0.7945007329882181,
609 2 : 0.8150062485863767,
610 2 : 0.8359357704406098,
611 2 : 0.857297495154156,
612 2 : 0.8790997854552841,
613 2 : 0.9013511733598061,
614 2 : 0.9240603633975651,
615 2 : 0.9472362359041415,
616 2 : 0.9708878503789938,
617 2 : 0.9950244489113315,
618 2 : 1.0196554596749978,
619 2 : 1.0447905004936888,
620 2 : 1.0704393824778653,
621 2 : 1.096612113734715,
622 2 : 1.1233189031525876,
623 2 : 1.1505701642613242,
624 2 : 1.1783765191699433,
625 2 : 1.2067488025831705,
626 2 : 1.235698065898337,
627 2 : 1.265235581384194,
628 2 : 1.29537284644322,
629 2 : 1.3261215879590424,
630 2 : 1.3574937667306146,
631 2 : 1.389501581994817,
632 2 : 1.422157476039214,
633 2 : 1.455474138906692,
634 2 : 1.4894645131937692,
635 2 : 1.5241417989443995,
636 2 : 1.5595194586411023,
637 2 : 1.5956112222953296,
638 2 : 1.632431092638987,
639 2 : 1.6699933504190654,
640 2 : 1.7083125597974174,
641 2 : 1.7474035738576765,
642 2 : 1.7872815402214506,
643 2 : 1.8279619067758837,
644 2 : 1.8694604275147741,
645 2 : 1.9117931684954486,
646 2 : 1.9549765139136515,
647 2 : 1.9990271722987536,
648 2 : 2.043962182831626,
649 2 : 2.089798921787561,
650 2 : 2.1365551091067023,
651 2 : 2.184248815094444,
652 2 : 2.2328984672543672,
653 2 : 2.282522857256276,
654 2 : 2.333141148041992,
655 2 : 2.3847728810715823,
656 2 : 2.437437983712789,
657 2 : 2.4911567767764367,
658 2 : 2.5459499822006695,
659 2 : 2.601838730886982,
660 2 : 2.6588445706909223,
661 2 : 2.716989474570594,
662 2 : 2.7762958488959613,
663 2 : 2.836786541922166,
664 2 : 2.8984848524300317,
665 2 : 2.9614145385370487,
666 2 : 3.0255998266821775,
667 2 : 3.091065420787862,
668 2 : 3.1578365116027403,
669 2 : 3.225938786228604,
670 2 : 3.2953984378351775,
671 2 : 3.3662421755664567,
672 2 : 3.4384972346423233,
673 2 : 3.512191386659254,
674 2 : 3.587352950094097,
675 2 : 3.6640108010148085,
676 2 : 3.7421943840022998,
677 2 : 3.821933723287446,
678 2 : 3.9032594341075746,
679 2 : 3.9862027342866666,
680 2 : 4.070795456043695,
681 2 : 4.157070058033586,
682 2 : 4.245059637625357,
683 2 : 4.334797943422077,
684 2 : 4.426319388027436,
685 2 : 4.519659061063735,
686 2 : 4.614852742446251,
687 2 : 4.711936915918998,
688 2 : 4.810948782857054,
689 2 : 4.911926276340646,
690 2 : 5.014908075506364,
691 2 : 5.119933620180959,
692 2 : 5.227043125803248,
693 2 : 5.3362775986397954,
694 2 : 5.447678851300188,
695 2 : 5.561289518557729,
696 2 : 5.677153073481613,
697 2 : 5.795313843886671,
698 2 : 5.915817029106927,
699 2 : 6.038708717099392,
700 2 : 6.164035901884489,
701 2 : 6.291846501329841,
702 2 : 6.4221893752841055};
703 2 : }
704 :
705 : template <typename T>
706 : std::vector<T> get_bessi3()
707 2 : {
708 2 : return {0,
709 2 : 1.6919614903091235e-07,
710 2 : 1.353671735367887e-06,
711 2 : 4.569218958530584e-06,
712 2 : 1.0832655760001668e-05,
713 2 : 2.1162339238135916e-05,
714 2 : 3.6578679716028364e-05,
715 2 : 5.8104655680404866e-05,
716 2 : 8.676632980995128e-05,
717 2 : 0.00012359336631193464,
718 2 : 0.0001696195497865034,
719 2 : 0.00022588330583866398,
720 2 : 0.0002934282236586467,
721 2 : 0.0003733035807921578,
722 2 : 0.0004665648703229054,
723 2 : 0.0005742743306907715,
724 2 : 0.0006975014783700358,
725 2 : 0.0008373236436332582,
726 2 : 0.0009948265096276253,
727 2 : 0.0011711046549919481,
728 2 : 0.0013672621002438843,
729 2 : 0.0015844128581685274,
730 2 : 0.0018236814884410913,
731 2 : 0.0020862036567181126,
732 2 : 0.0023731266984334714,
733 2 : 0.00268561018753731,
734 2 : 0.0030248265104180754,
735 2 : 0.00339196144524986,
736 2 : 0.0037882147470095057,
737 2 : 0.004214800738410149,
738 2 : 0.004672948907000421,
739 2 : 0.00516390450868069,
740 2 : 0.005688929177890831,
741 2 : 0.006249301544726066,
742 2 : 0.006846317859240882,
743 2 : 0.007481292623203301,
744 2 : 0.008155559229565302,
745 2 : 0.008870470609918031,
746 2 : 0.009627399890203671,
747 2 : 0.010427741054959227,
748 2 : 0.011272909620371023,
749 2 : 0.01216434331642206,
750 2 : 0.013103502778418086,
751 2 : 0.014091872248182332,
752 2 : 0.015130960285212203,
753 2 : 0.016222300488095694,
754 2 : 0.01736745222648932,
755 2 : 0.018568001383963566,
756 2 : 0.019825561112026022,
757 2 : 0.021141772595637435,
758 2 : 0.022518305830540025,
759 2 : 0.02395686041272236,
760 2 : 0.025459166340350007,
761 2 : 0.027026984828496095,
762 2 : 0.02866210913701144,
763 2 : 0.030366365411878322,
764 2 : 0.0321416135403986,
765 2 : 0.03398974802057159,
766 2 : 0.035912698845022815,
767 2 : 0.03791243239985146,
768 2 : 0.039990952378769117,
769 2 : 0.04215030071290977,
770 2 : 0.04439255851669639,
771 2 : 0.04671984705015648,
772 2 : 0.04913432869808529,
773 2 : 0.05163820796646223,
774 2 : 0.0542337324965332,
775 2 : 0.05692319409697838,
776 2 : 0.059708929794591976,
777 2 : 0.06259332290390936,
778 2 : 0.06557880411622181,
779 2 : 0.06866785260843075,
780 2 : 0.07186299717219762,
781 2 : 0.07516681736385548,
782 2 : 0.07858194467555787,
783 2 : 0.08211106372814582,
784 2 : 0.0857569134862262,
785 2 : 0.0895222884959609,
786 2 : 0.0934100401460765,
787 2 : 0.09742307795261411,
788 2 : 0.1015643708679463,
789 2 : 0.10583694861460136,
790 2 : 0.1102439030444411,
791 2 : 0.11478838952375167,
792 2 : 0.11947362834481563,
793 2 : 0.12430290616454555,
794 2 : 0.12927957747076765,
795 2 : 0.13440706607675867,
796 2 : 0.13968886664464733,
797 2 : 0.14512854623830573,
798 2 : 0.15072974590636554,
799 2 : 0.1564961822960081,
800 2 : 0.1624316492981892,
801 2 : 0.16854001972497007,
802 2 : 0.17482524701964278,
803 2 : 0.18129136700034723,
804 2 : 0.18794249963789406,
805 2 : 0.19478285086851832,
806 2 : 0.20181671444230492,
807 2 : 0.20904847380804073,
808 2 : 0.21648260403526146,
809 2 : 0.22412367377427936,
810 2 : 0.23197634725498792,
811 2 : 0.24004538632526268,
812 2 : 0.24833565252978468,
813 2 : 0.256852109230136,
814 2 : 0.265599823767031,
815 2 : 0.2745839696655606,
816 2 : 0.28380982888435113,
817 2 : 0.2932827941095507,
818 2 : 0.3030083710945754,
819 2 : 0.312992181046568,
820 2 : 0.32323996306054115,
821 2 : 0.33375757660218763,
822 2 : 0.34455100404037414,
823 2 : 0.35562635323034253,
824 2 : 0.3669898601486669,
825 2 : 0.378647891581041,
826 2 : 0.3906069478639777,
827 2 : 0.4028736656815414,
828 2 : 0.415454820918244,
829 2 : 0.42835733156925837,
830 2 : 0.44158826070913515,
831 2 : 0.4551548195202176,
832 2 : 0.46906437038198867,
833 2 : 0.4833244300225978,
834 2 : 0.49794267273384313,
835 2 : 0.5129269336509122,
836 2 : 0.5282852120982043,
837 2 : 0.5440256750025944,
838 2 : 0.5601566603755134,
839 2 : 0.5766866808652543,
840 2 : 0.5936244273809439,
841 2 : 0.6109787727896347,
842 2 : 0.6287587756880244,
843 2 : 0.6469736842503151,
844 2 : 0.6656329401537708,
845 2 : 0.6847461825835597,
846 2 : 0.7043232523184924,
847 2 : 0.7243741958993116,
848 2 : 0.7449092698812078,
849 2 : 0.7659389451722828,
850 2 : 0.787473911459708,
851 2 : 0.809525081725358,
852 2 : 0.8321035968527459,
853 2 : 0.8552208303271174,
854 2 : 0.8788883930305853,
855 2 : 0.9031181381342575,
856 2 : 0.9279221660893021,
857 2 : 0.9533128297189871,
858 2 : 0.9793027394137209,
859 2 : 1.005904768431197,
860 2 : 1.0331320583037769,
861 2 : 1.0609980243552777,
862 2 : 1.0895163613293897,
863 2 : 1.1187010491319884,
864 2 : 1.1485663586896477,
865 2 : 1.179126857926702,
866 2 : 1.2103974178632815,
867 2 : 1.2423932188367386,
868 2 : 1.2751297568489972,
869 2 : 1.3086228500423505,
870 2 : 1.342888645306322,
871 2 : 1.3779436250182402,
872 2 : 1.4138046139202223,
873 2 : 1.450488786135344,
874 2 : 1.4880136723258008,
875 2 : 1.5263971669959326,
876 2 : 1.5656575359430462,
877 2 : 1.6058134238590207,
878 2 : 1.6468838620857433,
879 2 : 1.688888276527491,
880 2 : 1.7318464957234243,
881 2 : 1.7757787590834313,
882 2 : 1.8207057252906176,
883 2 : 1.866648480873818,
884 2 : 1.9136285489535583,
885 2 : 1.9616678981649707,
886 2 : 2.0107889517612354,
887 2 : 2.0610145969011975,
888 2 : 2.112368194124877,
889 2 : 2.164873587020655,
890 2 : 2.218555112088024,
891 2 : 2.2734376087998367,
892 2 : 2.329546429868071,
893 2 : 2.3869074517172373,
894 2 : 2.4455470851696055,
895 2 : 2.5054922863465303,
896 2 : 2.5667705677902317,
897 2 : 2.6294100098104596,
898 2 : 2.6934392720606253,
899 2 : 2.7588876053479687,
900 2 : 2.8257848636825256,
901 2 : 2.894161516569692,
902 2 : 2.964048661551282,
903 2 : 3.035478037000126,
904 2 : 3.108482035173281,
905 2 : 3.1830937155290875,
906 2 : 3.2593468183133907,
907 2 : 3.337275778420344};
908 2 : }
909 :
910 : template <typename T>
911 : std::vector<T> get_bessi4()
912 2 : {
913 2 : return {0,
914 2 : 4.251138053610002e-10,
915 2 : 6.802233115956739e-09,
916 2 : 3.4439783575902826e-08,
917 2 : 1.0886211591814133e-07,
918 2 : 2.6582497305541694e-07,
919 2 : 5.513371542136172e-07,
920 2 : 1.0216883863187517e-06,
921 2 : 1.7434834157739435e-06,
922 2 : 2.79368233669353e-06,
923 2 : 4.259647174599181e-06,
924 2 : 6.239194747528768e-06,
925 2 : 8.840655829464334e-06,
926 2 : 1.2182940643951585e-05,
927 2 : 1.639561071876163e-05,
928 2 : 2.1618957135437665e-05,
929 2 : 2.8004085210575038e-05,
930 2 : 3.5713005648705694e-05,
931 2 : 4.4918732209697604e-05,
932 2 : 5.5805385936637634e-05,
933 2 : 6.856830599324426e-05,
934 2 : 8.341416716295565e-05,
935 2 : 0.000100561104064961,
936 2 : 0.00012023884214558616,
937 2 : 0.00014268883550662152,
938 2 : 0.0001681644116353672,
939 2 : 0.00019693092310440994,
940 2 : 0.00022926590631238515,
941 2 : 0.0002654592473402805,
942 2 : 0.00030581335500113677,
943 2 : 0.0003506433411643747,
944 2 : 0.0004002772084393381,
945 2 : 0.00045505604530609125,
946 2 : 0.0005153342287849543,
947 2 : 0.0005814796347397653,
948 2 : 0.000653873855913398,
949 2 : 0.0007329124277976599,
950 2 : 0.0008190050624432972,
951 2 : 0.0009125758903195469,
952 2 : 0.0010140637103363496,
953 2 : 0.0011239222481461508,
954 2 : 0.0012426204228460198,
955 2 : 0.0013706426222046732,
956 2 : 0.0015084889865429473,
957 2 : 0.0016566757014002272,
958 2 : 0.001815735299123363,
959 2 : 0.0019862169695187624,
960 2 : 0.0021686868797124196,
961 2 : 0.002363728503366927,
962 2 : 0.002571942959408786,
963 2 : 0.0027939493604236644,
964 2 : 0.003030385170881721,
965 2 : 0.0032819065753594864,
966 2 : 0.003549188856929499,
967 2 : 0.0038329267858934818,
968 2 : 0.00413383501903943,
969 2 : 0.004452648509607965,
970 2 : 0.004790122928158068,
971 2 : 0.0051470350945272015,
972 2 : 0.005524183421086026,
973 2 : 0.0059223883674928675,
974 2 : 0.006342492907158404,
975 2 : 0.006785363005636281,
976 2 : 0.007251888111160784,
977 2 : 0.007742981657558191,
978 2 : 0.008259581579763964,
979 2 : 0.008802650842183646,
980 2 : 0.009373177980141171,
981 2 : 0.00997217765466402,
982 2 : 0.010600691220860898,
983 2 : 0.011259787310153407,
984 2 : 0.011950562426629712,
985 2 : 0.012674141557794378,
986 2 : 0.013431678799994762,
987 2 : 0.014224357998811719,
988 2 : 0.015053393404707792,
989 2 : 0.015920030344234178,
990 2 : 0.016825545907104014,
991 2 : 0.01777124964944633,
992 2 : 0.01875848431356323,
993 2 : 0.019788626564519195,
994 2 : 0.0208630877438992,
995 2 : 0.02198331464108066,
996 2 : 0.02315079028237066,
997 2 : 0.024367034738369094,
998 2 : 0.025633605949925944,
999 2 : 0.026952100573068773,
1000 2 : 0.028324154843285872,
1001 2 : 0.029751445459557872,
1002 2 : 0.031235690488540573,
1003 2 : 0.032778650289309735,
1004 2 : 0.03438212845908797,
1005 2 : 0.03604797280038357,
1006 2 : 0.03777807630997939,
1007 2 : 0.0395743781902212,
1008 2 : 0.04143886488306303,
1009 2 : 0.043373571127338306,
1010 2 : 0.045380581039735336,
1011 2 : 0.047462029219965694,
1012 2 : 0.049620101880625656,
1013 2 : 0.051857038002260866,
1014 2 : 0.05417513051415563,
1015 2 : 0.056576727501379695,
1016 2 : 0.05906423343863698,
1017 2 : 0.06164011045147218,
1018 2 : 0.06430687960540292,
1019 2 : 0.06706712222355823,
1020 2 : 0.06992348123341527,
1021 2 : 0.07287866254324074,
1022 2 : 0.07593543644885406,
1023 2 : 0.07909663907134482,
1024 2 : 0.08236517382638914,
1025 2 : 0.08574401292582427,
1026 2 : 0.08923619891215318,
1027 2 : 0.0928448462266678,
1028 2 : 0.0965731428118915,
1029 2 : 0.10042435174905882,
1030 2 : 0.10440181293136315,
1031 2 : 0.10850894477372057,
1032 2 : 0.11274924595981353,
1033 2 : 0.11712629722719285,
1034 2 : 0.12164376319123549,
1035 2 : 0.12630539420877013,
1036 2 : 0.1311150282821999,
1037 2 : 0.1360765930049717,
1038 2 : 0.1411941075492563,
1039 2 : 0.14647168469672317,
1040 2 : 0.15191353291331272,
1041 2 : 0.1575239584689267,
1042 2 : 0.16330736760297856,
1043 2 : 0.16926826873676337,
1044 2 : 0.17541127473362858,
1045 2 : 0.18174110520794734,
1046 2 : 0.18826258888391514,
1047 2 : 0.1949806660052162,
1048 2 : 0.20190039079662336,
1049 2 : 0.20902693397862032,
1050 2 : 0.21636558533615788,
1051 2 : 0.2239217563426762,
1052 2 : 0.23170098284055435,
1053 2 : 0.2397089277791656,
1054 2 : 0.24795138401174951,
1055 2 : 0.25643427715232975,
1056 2 : 0.26516366849393563,
1057 2 : 0.27414575798941515,
1058 2 : 0.28338688729614625,
1059 2 : 0.29289354288598707,
1060 2 : 0.3026723592218327,
1061 2 : 0.3127301220021694,
1062 2 : 0.3230737714750542,
1063 2 : 0.33371040582297207,
1064 2 : 0.34464728462005545,
1065 2 : 0.35589183236317773,
1066 2 : 0.36745164207847403,
1067 2 : 0.3793344790048593,
1068 2 : 0.391548284356163,
1069 2 : 0.40410117916352184,
1070 2 : 0.4170014681997084,
1071 2 : 0.430257643987116,
1072 2 : 0.44387839089114084,
1073 2 : 0.45787258930075575,
1074 2 : 0.47224931989809643,
1075 2 : 0.48701786801891833,
1076 2 : 0.5021877281058309,
1077 2 : 0.5177686082562388,
1078 2 : 0.533770434866983,
1079 2 : 0.5502033573776905,
1080 2 : 0.5670777531149014,
1081 2 : 0.5844042322390799,
1082 2 : 0.6021936427966552,
1083 2 : 0.6204570758792871,
1084 2 : 0.6392058708925981,
1085 2 : 0.6584516209366557,
1086 2 : 0.6782061783005394,
1087 2 : 0.6984816600733684,
1088 2 : 0.7192904538742332,
1089 2 : 0.7406452237034986,
1090 2 : 0.7625589159180217,
1091 2 : 0.7850447653328629,
1092 2 : 0.8081163014521312,
1093 2 : 0.8317873548316577,
1094 2 : 0.8560720635762478,
1095 2 : 0.8809848799743105,
1096 2 : 0.9065405772727443,
1097 2 : 0.9327542565949803,
1098 2 : 0.9596413540051885,
1099 2 : 0.9872176477216817,
1100 2 : 1.0154992654826218,
1101 2 : 1.0445026920672151,
1102 2 : 1.074244776975617,
1103 2 : 1.1047427422708673,
1104 2 : 1.136014190586217,
1105 2 : 1.1680771133013013,
1106 2 : 1.2009498988906657,
1107 2 : 1.234651341448228,
1108 2 : 1.2692006493913501,
1109 2 : 1.3046174543482463,
1110 2 : 1.3409218202325457,
1111 2 : 1.378134252508895,
1112 2 : 1.416275707653589};
1113 2 : }
1114 : TEST_SUITE_END();
|