Line data Source code
1 : #include "doctest/doctest.h"
2 :
3 : #include "Blobs.h"
4 : #include "spdlog/fmt/fmt.h"
5 : #include <unordered_map>
6 :
7 : using namespace elsa;
8 : using namespace doctest;
9 :
10 : TEST_SUITE_BEGIN("projectors");
11 :
12 : constexpr index_t size = 101;
13 :
14 : template <typename data_t>
15 : constexpr std::array<double, size> getExpected(data_t a, data_t alphas, data_t ms);
16 :
17 : TEST_CASE_TEMPLATE("Blobs: Test evaluation of projected blob derivative", data_t, float, double)
18 2 : {
19 2 : constexpr std::array<data_t, 3> scales{100, 50, 30};
20 2 : constexpr std::array<data_t, 2> as{1, 2};
21 2 : constexpr std::array<data_t, 4> alphas{2.5, 5., 7.5, 10.83};
22 2 : constexpr std::array<index_t, 2> ms{1, 2};
23 :
24 4 : for (const auto a : as) {
25 4 : const auto scale = scales[static_cast<index_t>(a - 1)];
26 16 : for (const auto alpha : alphas) {
27 32 : for (const auto m : ms) {
28 32 : CAPTURE(scale);
29 32 : CAPTURE(a);
30 32 : CAPTURE(alpha);
31 32 : CAPTURE(m);
32 :
33 32 : auto expected = getExpected<data_t>(1, alpha, m);
34 :
35 32 : ProjectedBlob<data_t> blob(a, alpha, m);
36 3264 : for (int i = 0; i <= 100; ++i) {
37 3232 : const auto x = i / scale;
38 :
39 3232 : CAPTURE(x);
40 :
41 3232 : CHECK_EQ(Approx(blob.derivative(x)), expected[i]);
42 3232 : }
43 32 : }
44 16 : }
45 4 : }
46 2 : }
47 :
48 : /// These values here are computed using python, by evaluating the following python function:
49 : /// Ref:
50 : /// Investigation of discrete imaging models and iterative image reconstruction in differential
51 : /// X-ray phase-contrast tomography - Qiaofeng Xu (Appendix B)
52 : /// ```python
53 : /// def blob_derivative_projected(s, a, alpha, m):
54 : /// sda = s/a
55 : /// sdas = sda**2
56 : /// w = math.sqrt(1 - sdas)
57 : /// Imalpha = iv(m,alpha)
58 : /// Iwalpha = iv(m-0.5,alpha*w)
59 : /// wroot = math.pow(w,m-0.5)
60 : /// return - math.sqrt(2*math.pi*alpha) * sda * wroot * Iwalpha / Imalpha
61 : /// ```
62 : template <typename data_t>
63 : constexpr std::array<double, size> getExpected(data_t a, data_t alpha, data_t m)
64 64 : {
65 64 : if (a == 1) {
66 64 : if (alpha == 2.5) {
67 16 : if (m == 1) {
68 : // Blob evaulations with a = 1, alpha = 2.5 and m = 1, for values from 0 to 1.0
69 8 : return {-0.0,
70 8 : -0.04807405669417535,
71 8 : -0.09611157073815496,
72 8 : -0.14407602627431668,
73 8 : -0.19193096100651463,
74 8 : -0.2396399929216377,
75 8 : -0.28716684694015165,
76 8 : -0.33447538147194333,
77 8 : -0.38152961485378584,
78 8 : -0.42829375164472916,
79 8 : -0.47473220875571487,
80 8 : -0.5208096413896902,
81 8 : -0.5664909687684836,
82 8 : -0.6117413996226595,
83 8 : -0.6565264574205596,
84 8 : -0.7008120053126505,
85 8 : -0.7445642707672788,
86 8 : -0.7877498698738223,
87 8 : -0.8303358312891594,
88 8 : -0.8722896198032404,
89 8 : -0.9135791594994244,
90 8 : -0.9541728564850634,
91 8 : -0.9940396211676154,
92 8 : -1.0331488900513377,
93 8 : -1.071470647029303,
94 8 : -1.1089754441451802,
95 8 : -1.1456344217987895,
96 8 : -1.1814193283690078,
97 8 : -1.2163025392270497,
98 8 : -1.2502570751125324,
99 8 : -1.2832566198439892,
100 8 : -1.315275537334685,
101 8 : -1.3462888878835981,
102 8 : -1.3762724437103127,
103 8 : -1.4052027037012949,
104 8 : -1.4330569073335366,
105 8 : -1.4598130477398297,
106 8 : -1.4854498838780155,
107 8 : -1.5099469517642643,
108 8 : -1.533284574727882,
109 8 : -1.5554438726421873,
110 8 : -1.5764067700825484,
111 8 : -1.5961560033588256,
112 8 : -1.6146751263648933,
113 8 : -1.6319485151828044,
114 8 : -1.6479613713731385,
115 8 : -1.6626997238762438,
116 8 : -1.676150429441121,
117 8 : -1.688301171489543,
118 8 : -1.6991404573123547,
119 8 : -1.7086576134826073,
120 8 : -1.7168427793558587,
121 8 : -1.723686898511292,
122 8 : -1.7291817079678848,
123 8 : -1.7333197249870882,
124 8 : -1.7360942312468244,
125 8 : -1.7374992541402585,
126 8 : -1.7375295449157813,
127 8 : -1.736180553330982,
128 8 : -1.7334483984414153,
129 8 : -1.7293298350832413,
130 8 : -1.7238222155349454,
131 8 : -1.7169234457547784,
132 8 : -1.7086319354838593,
133 8 : -1.6989465413757934,
134 8 : -1.6878665021568602,
135 8 : -1.675391364629175,
136 8 : -1.6615208990941923,
137 8 : -1.6462550024837521,
138 8 : -1.6295935871257068,
139 8 : -1.6115364526214515,
140 8 : -1.5920831377473172,
141 8 : -1.571232748576346,
142 8 : -1.5489837581046209,
143 8 : -1.525333771493923,
144 8 : -1.5002792495230353,
145 8 : -1.4738151808528506,
146 8 : -1.44593469108631,
147 8 : -1.4166285731022619,
148 8 : -1.3858847184157466,
149 8 : -1.3536874228587878,
150 8 : -1.3200165309319556,
151 8 : -1.284846370609036,
152 8 : -1.248144412431194,
153 8 : -1.2098695606446148,
154 8 : -1.1699699454792534,
155 8 : -1.1283800271114788,
156 8 : -1.0850167309636753,
157 8 : -1.0397741889669891,
158 8 : -0.992516422618059,
159 8 : -0.9430668960088342,
160 8 : -0.8911931412487312,
161 8 : -0.8365833010253952,
162 8 : -0.7788087380649978,
163 8 : -0.717261109232539,
164 8 : -0.651038854443691,
165 8 : -0.5787226550702489,
166 8 : -0.4978698225088995,
167 8 : -0.4036254593620892,
168 8 : -0.28324549831372686,
169 8 : -0.0};
170 8 : } else if (m == 2) {
171 : // Blob evaulations with a = 1, alpha = 2.5 and m = 2, for values from 0 to 1.0
172 8 : return {-0.0,
173 8 : -0.058151976312665624,
174 8 : -0.1162328780220491,
175 8 : -0.1741717205711958,
176 8 : -0.23189769940337918,
177 8 : -0.2893402797312516,
178 8 : -0.34642928602913425,
179 8 : -0.40309499115664704,
180 8 : -0.4592682050223054,
181 8 : -0.5148803626962262,
182 8 : -0.5698636118817275,
183 8 : -0.6241508996563326,
184 8 : -0.6776760583935352,
185 8 : -0.7303738907776194,
186 8 : -0.7821802538249071,
187 8 : -0.8330321418259148,
188 8 : -0.882867768124222,
189 8 : -0.9316266456491777,
190 8 : -0.9792496661210799,
191 8 : -1.0256791778490237,
192 8 : -1.070859062043333,
193 8 : -1.114734807566266,
194 8 : -1.1572535840466232,
195 8 : -1.1983643132858957,
196 8 : -1.2380177388857248,
197 8 : -1.2761664940287272,
198 8 : -1.3127651673470648,
199 8 : -1.3477703668156729,
200 8 : -1.3811407816096424,
201 8 : -1.4128372418680206,
202 8 : -1.442822776309121,
203 8 : -1.4710626676455085,
204 8 : -1.4975245057499011,
205 8 : -1.522178238526585,
206 8 : -1.5449962204463592,
207 8 : -1.5659532587066571,
208 8 : -1.5850266569822982,
209 8 : -1.6021962567362662,
210 8 : -1.6174444760641575,
211 8 : -1.6307563460502783,
212 8 : -1.6421195446180668,
213 8 : -1.6515244278623749,
214 8 : -1.65896405885635,
215 8 : -1.6644342339311602,
216 8 : -1.6679335064326248,
217 8 : -1.669463207965089,
218 8 : -1.6690274671395164,
219 8 : -1.666633225849943,
220 8 : -1.6622902531101917,
221 8 : -1.656011156491004,
222 8 : -1.6478113912068921,
223 8 : -1.637709266911829,
224 8 : -1.6257259522737322,
225 8 : -1.6118854774095943,
226 8 : -1.596214734276256,
227 8 : -1.5787434751263987,
228 8 : -1.5595043091556684,
229 8 : -1.5385326974850821,
230 8 : -1.515866946643465,
231 8 : -1.4915482007380236,
232 8 : -1.4656204325277207,
233 8 : -1.4381304336445375,
234 8 : -1.4091278042427424,
235 8 : -1.37866494239675,
236 8 : -1.3467970336153543,
237 8 : -1.3135820408951175,
238 8 : -1.2790806958006447,
239 8 : -1.2433564911360266,
240 8 : -1.2064756758629946,
241 8 : -1.1685072530304697,
242 8 : -1.1295229816115775,
243 8 : -1.0895973833035024,
244 8 : -1.048807755539759,
245 8 : -1.0072341922030916,
246 8 : -0.9649596138224134,
247 8 : -0.9220698094052853,
248 8 : -0.8786534925200584,
249 8 : -0.834802374828399,
250 8 : -0.7906112610196104,
251 8 : -0.7461781700683584,
252 8 : -0.7016044890049901,
253 8 : -0.6569951670629964,
254 8 : -0.6124589603108012,
255 8 : -0.5681087399189,
256 8 : -0.5240618814081323,
257 8 : -0.4804407581039403,
258 8 : -0.4373733704172193,
259 8 : -0.39499415481628714,
260 8 : -0.35344503463861615,
261 8 : -0.31287680294031595,
262 8 : -0.27345097196361634,
263 8 : -0.2353422965966166,
264 8 : -0.19874230374778465,
265 8 : -0.16386438369761855,
266 8 : -0.13095142847966623,
267 8 : -0.10028788910515746,
268 8 : -0.07222014823654624,
269 8 : -0.047194395748366216,
270 8 : -0.025838028396018092,
271 8 : -0.009185149750792604,
272 8 : -0.0};
273 8 : }
274 48 : } else if (alpha == 5.0) {
275 16 : if (m == 1) {
276 : // Blob evaulations with a = 1, alpha = 5 and m = 1, for values from 0 to 1.0
277 8 : return {-0.0,
278 8 : -0.06096790831435612,
279 8 : -0.12184437931741952,
280 8 : -0.18253815850449168,
281 8 : -0.24295835656819004,
282 8 : -0.3030146309584343,
283 8 : -0.3626173661988426,
284 8 : -0.4216778525496929,
285 8 : -0.48010846261161183,
286 8 : -0.5378228254691266,
287 8 : -0.5947359979791815,
288 8 : -0.6507646328166162,
289 8 : -0.7058271428964454,
290 8 : -0.7598438618015483,
291 8 : -0.8127371998540317,
292 8 : -0.8644317954790264,
293 8 : -0.9148546615210973,
294 8 : -0.9639353261855772,
295 8 : -1.0116059682901435,
296 8 : -1.0578015465256445,
297 8 : -1.1024599224396492,
298 8 : -1.1455219768712817,
299 8 : -1.1869317195816806,
300 8 : -1.2266363918407948,
301 8 : -1.2645865617480867,
302 8 : -1.300736212082269,
303 8 : -1.3350428204929832,
304 8 : -1.3674674318657796,
305 8 : -1.39797472271041,
306 8 : -1.4265330574415525,
307 8 : -1.453114536440374,
308 8 : -1.4776950358049836,
309 8 : -1.5002542387175255,
310 8 : -1.5207756583756054,
311 8 : -1.5392466524556816,
312 8 : -1.5556584290961206,
313 8 : -1.570006044407514,
314 8 : -1.582288391537871,
315 8 : -1.5925081813399824,
316 8 : -1.6006719147079176,
317 8 : -1.6067898466689672,
318 8 : -1.610875942336377,
319 8 : -1.6129478248470133,
320 8 : -1.6130267154263658,
321 8 : -1.6111373657412094,
322 8 : -1.6073079827175654,
323 8 : -1.6015701460184648,
324 8 : -1.5939587183920816,
325 8 : -1.5845117491163903,
326 8 : -1.5732703707811346,
327 8 : -1.5602786896618868,
328 8 : -1.5455836699539478,
329 8 : -1.5292350121459382,
330 8 : -1.5112850258239534,
331 8 : -1.491788497207062,
332 8 : -1.4708025517235637,
333 8 : -1.4483865119447796,
334 8 : -1.4246017511989413,
335 8 : -1.3995115431919796,
336 8 : -1.373180907964323,
337 8 : -1.3456764545131374,
338 8 : -1.3170662204073935,
339 8 : -1.2874195087183506,
340 8 : -1.2568067225801987,
341 8 : -1.2252991976839938,
342 8 : -1.1929690329920124,
343 8 : -1.1598889199383702,
344 8 : -1.126131970353892,
345 8 : -1.091771543317406,
346 8 : -1.056881071089628,
347 8 : -1.0215338842270827,
348 8 : -0.9858030358983793,
349 8 : -0.9497611253286321,
350 8 : -0.9134801201734538,
351 8 : -0.8770311774623835,
352 8 : -0.8404844625401815,
353 8 : -0.8039089651553144,
354 8 : -0.7673723114725965,
355 8 : -0.7309405702849278,
356 8 : -0.694678051013885,
357 8 : -0.6586470901417438,
358 8 : -0.6229078213895192,
359 8 : -0.5875179230652792,
360 8 : -0.5525323332712235,
361 8 : -0.5180029196262311,
362 8 : -0.4839780840992146,
363 8 : -0.4505022742321992,
364 8 : -0.4176153573546913,
365 8 : -0.3853517906163295,
366 8 : -0.3537394799190827,
367 8 : -0.3227981519318874,
368 8 : -0.29253693880048004,
369 8 : -0.262950638485734,
370 8 : -0.23401363645206702,
371 8 : -0.20566943971699614,
372 8 : -0.17781131639713244,
373 8 : -0.1502429589235722,
374 8 : -0.12258739023785722,
375 8 : -0.09402928486974793,
376 8 : -0.06226588848255436,
377 8 : -0.0};
378 8 : } else if (m == 2) {
379 : // Blob evaulations with a = 1, alpha = 5 and m = 2, for values from 0 to 1.0
380 8 : return {-0.0,
381 8 : -0.06780768117960852,
382 8 : -0.13548827711973616,
383 8 : -0.20291502022494148,
384 8 : -0.2699617772988131,
385 8 : -0.336503364523465,
386 8 : -0.4024158597822807,
387 8 : -0.4675769114524211,
388 8 : -0.5318660428039375,
389 8 : -0.5951649511551781,
390 8 : -0.6573578009495088,
391 8 : -0.7183315099361487,
392 8 : -0.7779760276580748,
393 8 : -0.8361846054724478,
394 8 : -0.8928540573537695,
395 8 : -0.9478850107568905,
396 8 : -1.0011821468460915,
397 8 : -1.0526544294274727,
398 8 : -1.1022153219549384,
399 8 : -1.149782992014864,
400 8 : -1.1952805027311246,
401 8 : -1.2386359905703432,
402 8 : -1.2797828290669018,
403 8 : -1.3186597780283935,
404 8 : -1.3552111178244786,
405 8 : -1.3893867684057066,
406 8 : -1.4211423927433124,
407 8 : -1.450439484426457,
408 8 : -1.4772454391995082,
409 8 : -1.5015336102687844,
410 8 : -1.5232833472553597,
411 8 : -1.5424800187182375,
412 8 : -1.5591150182198783,
413 8 : -1.5731857539540095,
414 8 : -1.5846956220033646,
415 8 : -1.5936539633425848,
416 8 : -1.6000760047486715,
417 8 : -1.603982783828106,
418 8 : -1.6054010584157734,
419 8 : -1.6043632006461421,
420 8 : -1.600907076041546,
421 8 : -1.5950759080057269,
422 8 : -1.5869181281530806,
423 8 : -1.5764872129449328,
424 8 : -1.563841507143734,
425 8 : -1.5490440346341214,
426 8 : -1.5321622971962698,
427 8 : -1.5132680618516168,
428 8 : -1.4924371374341256,
429 8 : -1.4697491410711843,
430 8 : -1.4452872552874492,
431 8 : -1.4191379764719905,
432 8 : -1.3913908554740595,
433 8 : -1.3621382311157162,
434 8 : -1.3314749574301852,
435 8 : -1.2994981254532727,
436 8 : -1.2663067804114772,
437 8 : -1.232001635164393,
438 8 : -1.1966847807708674,
439 8 : -1.160459395058042,
440 8 : -1.1234294500799022,
441 8 : -1.0856994193575618,
442 8 : -1.0473739857970485,
443 8 : -1.0085577511822712,
444 8 : -0.9693549481410969,
445 8 : -0.9298691554814814,
446 8 : -0.8902030177925294,
447 8 : -0.8504579702027925,
448 8 : -0.8107339691853905,
449 8 : -0.7711292302974146,
450 8 : -0.7317399737403671,
451 8 : -0.6926601786301624,
452 8 : -0.6539813468708464,
453 8 : -0.6157922775375951,
454 8 : -0.5781788526940611,
455 8 : -0.5412238356000356,
456 8 : -0.5050066823120596,
457 8 : -0.4696033677479527,
458 8 : -0.43508622738455155,
459 8 : -0.40152381589765296,
460 8 : -0.36898078425068154,
461 8 : -0.33751777701733693,
462 8 : -0.3071913521177943,
463 8 : -0.2780539257089847,
464 8 : -0.25015374577439475,
465 8 : -0.22353489912735394,
466 8 : -0.1982373582632427,
467 8 : -0.17429707707756015,
468 8 : -0.15174614842124765,
469 8 : -0.1306130426760709,
470 8 : -0.11092295658224333,
471 8 : -0.0926983183873736,
472 8 : -0.07595952479237222,
473 8 : -0.06072603916725868,
474 8 : -0.04701808593238235,
475 8 : -0.03485939827254995,
476 8 : -0.024281994048674854,
477 8 : -0.015335335014670217,
478 8 : -0.008106708104619532,
479 8 : -0.0027799757213245483,
480 8 : -0.0};
481 8 : }
482 32 : } else if (alpha == 7.5) {
483 16 : if (m == 1) {
484 : // Blob evaulations with a = 1, alpha = 7.5 and m = 1, for values from 0 to 1.0
485 8 : return {-0.0,
486 8 : -0.07241495084698643,
487 8 : -0.14466703922253218,
488 8 : -0.2165939316897052,
489 8 : -0.2880343507879577,
490 8 : -0.35882859779904375,
491 8 : -0.4288190692722565,
492 8 : -0.49785076527200856,
493 8 : -0.5657717873476202,
494 8 : -0.6324338242708478,
495 8 : -0.6976926236410406,
496 8 : -0.7614084475205377,
497 8 : -0.8234465103337589,
498 8 : -0.8836773973419927,
499 8 : -0.9419774620918768,
500 8 : -0.9982292013284546,
501 8 : -1.052321605963155,
502 8 : -1.1041504867925311,
503 8 : -1.1536187737746233,
504 8 : -1.200636787785865,
505 8 : -1.245122483901989,
506 8 : -1.287001665370778,
507 8 : -1.3262081675722321,
508 8 : -1.362684011392151,
509 8 : -1.3963795255676226,
510 8 : -1.4272534376968664,
511 8 : -1.455272933740707,
512 8 : -1.4804136859779102,
513 8 : -1.5026598495112224,
514 8 : -1.5220040275544442,
515 8 : -1.5384472058626921,
516 8 : -1.55199865679763,
517 8 : -1.56267581364601,
518 8 : -1.5705041159332018,
519 8 : -1.5755168265924697,
520 8 : -1.5777548219654995,
521 8 : -1.5772663557191389,
522 8 : -1.574106797867371,
523 8 : -1.5683383501855024,
524 8 : -1.5600297393950497,
525 8 : -1.5492558895824886,
526 8 : -1.5360975753925095,
527 8 : -1.5206410576063538,
528 8 : -1.5029777027779179,
529 8 : -1.4832035886543646,
530 8 : -1.4614190971538208,
531 8 : -1.4377284967100181,
532 8 : -1.4122395158226402,
533 8 : -1.3850629096722156,
534 8 : -1.3563120216699673,
535 8 : -1.3261023418158076,
536 8 : -1.2945510637319317,
537 8 : -1.2617766422250642,
538 8 : -1.2278983532077519,
539 8 : -1.1930358577780853,
540 8 : -1.1573087722182203,
541 8 : -1.1208362456253007,
542 8 : -1.0837365468340898,
543 8 : -1.0461266622290433,
544 8 : -1.0081219059753013,
545 8 : -0.9698355441231151,
546 8 : -0.9313784339593727,
547 8 : -0.8928586798931916,
548 8 : -0.8543813070707299,
549 8 : -0.8160479538176909,
550 8 : -0.7779565839069803,
551 8 : -0.7402012195440995,
552 8 : -0.7028716958545148,
553 8 : -0.6660534375459036,
554 8 : -0.6298272583041974,
555 8 : -0.5942691833661163,
556 8 : -0.5594502955926605,
557 8 : -0.5254366052479041,
558 8 : -0.49228894356557085,
559 8 : -0.4600628800618465,
560 8 : -0.4288086634263202,
561 8 : -0.3985711856926835,
562 8 : -0.36938996925518025,
563 8 : -0.3412991761529581,
564 8 : -0.3143276388879587,
565 8 : -0.28849891186590054,
566 8 : -0.26383134234333566,
567 8 : -0.24033815950945578,
568 8 : -0.21802758000172284,
569 8 : -0.19690292770447096,
570 8 : -0.17696276503452257,
571 8 : -0.15820103195005367,
572 8 : -0.14060718740482167,
573 8 : -0.12416634550538615,
574 8 : -0.10885939445637816,
575 8 : -0.09466307901782807,
576 8 : -0.08155001361394922,
577 8 : -0.06948856684135377,
578 8 : -0.058442503655584024,
579 8 : -0.04837015053510147,
580 8 : -0.039222554360971905,
581 8 : -0.030939297547201764,
582 8 : -0.02343801989008018,
583 8 : -0.0165829220056439,
584 8 : -0.010049253935595227,
585 8 : -0.0};
586 8 : } else if (m == 2) {
587 : // Blob evaulations with a = 1, alpha = 7.5 and m = 2, for values from 0 to 1.0
588 8 : return {-0.0,
589 8 : -0.07769098464274034,
590 8 : -0.15518037347234012,
591 8 : -0.23226732622269844,
592 8 : -0.30875251028613243,
593 8 : -0.3844388459708989,
594 8 : -0.45913224152152693,
595 8 : -0.5326423145706437,
596 8 : -0.604783096759932,
597 8 : -0.6753737183533233,
598 8 : -0.7442390697670577,
599 8 : -0.8112104370582878,
600 8 : -0.8761261085458513,
601 8 : -0.9388319498828767,
602 8 : -0.9991819450603868,
603 8 : -1.0570387009929998,
604 8 : -1.1122739135213628,
605 8 : -1.164768792860085,
606 8 : -1.2144144467235525,
607 8 : -1.2611122195741247,
608 8 : -1.3047739866565742,
609 8 : -1.3453224017080985,
610 8 : -1.3826910974636333,
611 8 : -1.4168248383102628,
612 8 : -1.4476796246809382,
613 8 : -1.4752227490153702,
614 8 : -1.4994328033534403,
615 8 : -1.5202996388626002,
616 8 : -1.5378242778342293,
617 8 : -1.552018778913541,
618 8 : -1.562906056552209,
619 8 : -1.570519655891258,
620 8 : -1.5749034844926193,
621 8 : -1.5761115025403563,
622 8 : -1.574207373325422,
623 8 : -1.569264076010401,
624 8 : -1.5613634828416036,
625 8 : -1.5505959031347731,
626 8 : -1.5370595965062808,
627 8 : -1.5208602579536301,
628 8 : -1.502110477506581,
629 8 : -1.480929177272751,
630 8 : -1.457441028788659,
631 8 : -1.431775853658453,
632 8 : -1.4040680105177585,
633 8 : -1.3744557713990448,
634 8 : -1.3430806905973072,
635 8 : -1.3100869691410442,
636 8 : -1.275620817963179,
637 8 : -1.2398298228401676,
638 8 : -1.2028623141251698,
639 8 : -1.1648667442432459,
640 8 : -1.1259910758434086,
641 8 : -1.086382183414702,
642 8 : -1.0461852710716781,
643 8 : -1.0055433090994563,
644 8 : -0.9645964917208084,
645 8 : -0.9234817184080505,
646 8 : -0.8823321009118432,
647 8 : -0.8412764980184207,
648 8 : -0.8004390798769224,
649 8 : -0.7599389235607502,
650 8 : -0.7198896413420146,
651 8 : -0.6803990429674528,
652 8 : -0.6415688330287239,
653 8 : -0.6034943443208579,
654 8 : -0.5662643078811233,
655 8 : -0.5299606601977286,
656 8 : -0.49465838787492955,
657 8 : -0.46042540983931435,
658 8 : -0.42732249697264685,
659 8 : -0.39540322886077445,
660 8 : -0.36471398715695463,
661 8 : -0.3352939848728696,
662 8 : -0.3071753307326837,
663 8 : -0.28038312755618355,
664 8 : -0.25493560347762106,
665 8 : -0.23084427465891738,
666 8 : -0.2081141380210743,
667 8 : -0.18674389239801786,
668 8 : -0.16672618641526565,
669 8 : -0.14804789131513288,
670 8 : -0.1306903968953521,
671 8 : -0.11462992870580156,
672 8 : -0.0998378846686358,
673 8 : -0.08628118936628222,
674 8 : -0.07392266440475362,
675 8 : -0.06272141354807492,
676 8 : -0.052633221804167934,
677 8 : -0.043610968447785094,
678 8 : -0.035605055319589164,
679 8 : -0.02856385407611022,
680 8 : -0.022434180252563902,
681 8 : -0.017161809887783548,
682 8 : -0.012692070267750337,
683 8 : -0.008970570597231688,
684 8 : -0.005944220514474687,
685 8 : -0.0035629099795605724,
686 8 : -0.001782980842507198,
687 8 : -0.0005771716363401995,
688 8 : -0.0};
689 8 : }
690 16 : } else if (alpha == Approx(10.83)) {
691 16 : if (m == 1) {
692 : // Blob evaulations with a = 1, alpha = 10.83 and m = 0, for values from 0 to 1.0
693 8 : return {-0.0,
694 8 : -0.08549984026761001,
695 8 : -0.17072208239140316,
696 8 : -0.25539049145599496,
697 8 : -0.33923155048790277,
698 8 : -0.4219757982013247,
699 8 : -0.5033591414475242,
700 8 : -0.5831241342238286,
701 8 : -0.6610212153422091,
702 8 : -0.7368098971586319,
703 8 : -0.8102598981203354,
704 8 : -0.8811522122961025,
705 8 : -0.9492801095110626,
706 8 : -1.0144500602089472,
707 8 : -1.076482579706935,
708 8 : -1.1352129870869088,
709 8 : -1.190492074577474,
710 8 : -1.2421866839184907,
711 8 : -1.2901801868591984,
712 8 : -1.3343728676167999,
713 8 : -1.3746822058095702,
714 8 : -1.411043059071377,
715 8 : -1.4434077452478782,
716 8 : -1.4717460247629617,
717 8 : -1.496044984421918,
718 8 : -1.5163088245803076,
719 8 : -1.5325585522493126,
720 8 : -1.5448315833248183,
721 8 : -1.553181257713913,
722 8 : -1.5576762716846946,
723 8 : -1.558400032279075,
724 8 : -1.5554499391004266,
725 8 : -1.5489365992145896,
726 8 : -1.5389829812817357,
727 8 : -1.5257235153649427,
728 8 : -1.509303145137451,
729 8 : -1.4898763394325802,
730 8 : -1.4676060702474918,
731 8 : -1.4426627644235277,
732 8 : -1.4152232362815986,
733 8 : -1.3854696084916887,
734 8 : -1.353588228401295,
735 8 : -1.3197685869402513,
736 8 : -1.284202247060166,
737 8 : -1.2470817884579766,
738 8 : -1.2085997750772282,
739 8 : -1.1689477515803985,
740 8 : -1.1283152746441918,
741 8 : -1.086888984550545,
742 8 : -1.0448517221328584,
743 8 : -1.0023816956936944,
744 8 : -0.9596517020408879,
745 8 : -0.9168284052980535,
746 8 : -0.8740716766372262,
747 8 : -0.8315339975602657,
748 8 : -0.7893599288261924,
749 8 : -0.7476856465883376,
750 8 : -0.7066385467724514,
751 8 : -0.6663369181990599,
752 8 : -0.6268896844347566,
753 8 : -0.5883962138515453,
754 8 : -0.5509461968850489,
755 8 : -0.5146195890146231,
756 8 : -0.4794866175449323,
757 8 : -0.4456078498521187,
758 8 : -0.41303432037142646,
759 8 : -0.3818077132493505,
760 8 : -0.3519605972642322,
761 8 : -0.323516709336635,
762 8 : -0.2964912827060825,
763 8 : -0.27089141564501173,
764 8 : -0.24671647641479558,
765 8 : -0.22395854004263124,
766 8 : -0.20260285241212733,
767 8 : -0.1826283171139817,
768 8 : -0.16400800049561198,
769 8 : -0.14670965037880496,
770 8 : -0.13069622398103703,
771 8 : -0.11592642067729776,
772 8 : -0.10235521537298914,
773 8 : -0.08993438842239877,
774 8 : -0.07861304821863029,
775 8 : -0.06833814279661843,
776 8 : -0.05905495702738001,
777 8 : -0.05070759223463777,
778 8 : -0.04323942532902969,
779 8 : -0.03659354482299295,
780 8 : -0.030713161350365423,
781 8 : -0.02554199055147808,
782 8 : -0.02102460636642979,
783 8 : -0.017106762847846277,
784 8 : -0.013735682439226739,
785 8 : -0.010860307999472126,
786 8 : -0.008431514052664273,
787 8 : -0.006402268152025606,
788 8 : -0.004727721099914972,
789 8 : -0.0033651693463591843,
790 8 : -0.0022737121974922593,
791 8 : -0.0014129017679336262,
792 8 : -0.0007361597600503701,
793 8 : -0.0};
794 8 : } else if (m == 2) {
795 : // Blob evaulations with a = 1, alpha = 10.83 and m = 1, for values from 0 to 1.0
796 8 : return {-0.0,
797 8 : -0.08970870892840589,
798 8 : -0.17909654687881035,
799 8 : -0.26784437875727957,
800 8 : -0.35563652930600537,
801 8 : -0.4421624832871329,
802 8 : -0.5271185502529296,
803 8 : -0.6102094825408508,
804 8 : -0.6911500355067857,
805 8 : -0.7696664594718747,
806 8 : -0.8454979134036369,
807 8 : -0.9183977909758657,
808 8 : -0.9881349503484358,
809 8 : -1.0544948397713847,
810 8 : -1.1172805119409395,
811 8 : -1.1763135209110158,
812 8 : -1.2314346962846365,
813 8 : -1.2825047903674207,
814 8 : -1.3294049949516629,
815 8 : -1.372037325405639,
816 8 : -1.4103248707603944,
817 8 : -1.444211909506026,
818 8 : -1.4736638918232672,
819 8 : -1.4986672899749498,
820 8 : -1.5192293195573565,
821 8 : -1.5353775352556074,
822 8 : -1.5471593056519102,
823 8 : -1.5546411724936946,
824 8 : -1.5579081006331938,
825 8 : -1.557062625594656,
826 8 : -1.5522239064042773,
827 8 : -1.5435266919261814,
828 8 : -1.5311202094804435,
829 8 : -1.5151669849732547,
830 8 : -1.495841604141175,
831 8 : -1.4733294247995286,
832 8 : -1.4478252501872437,
833 8 : -1.419531973617019,
834 8 : -1.3886592046701633,
835 8 : -1.3554218871210428,
836 8 : -1.3200389186386585,
837 8 : -1.2827317820945643,
838 8 : -1.243723198010711,
839 8 : -1.2032358073113427,
840 8 : -1.1614908931045327,
841 8 : -1.118707149716182,
842 8 : -1.0750995066379099,
843 8 : -1.030878014436251,
844 8 : -0.9862467990103835,
845 8 : -0.9414030898858058,
846 8 : -0.8965363274991592,
847 8 : -0.8518273536716898,
848 8 : -0.8074476886930679,
849 8 : -0.7635588976507305,
850 8 : -0.7203120478497846,
851 8 : -0.6778472583820527,
852 8 : -0.6362933421270739,
853 8 : -0.5957675397095211,
854 8 : -0.5563753442030087,
855 8 : -0.5182104146659609,
856 8 : -0.4813545759264531,
857 8 : -0.445877901405388,
858 8 : -0.41183887518544293,
859 8 : -0.3792846290013888,
860 8 : -0.348251249349081,
861 8 : -0.3187641494889199,
862 8 : -0.2908385007571138,
863 8 : -0.26447971729660674,
864 8 : -0.2396839880801905,
865 8 : -0.21643884992163567,
866 8 : -0.19472379505661072,
867 8 : -0.17451090682304785,
868 8 : -0.15576551697911548,
869 8 : -0.13844687826434998,
870 8 : -0.12250884593330752,
871 8 : -0.10790056216855802,
872 8 : -0.09456713750756723,
873 8 : -0.08245032369235135,
874 8 : -0.07148917266760471,
875 8 : -0.06162067680795976,
876 8 : -0.05278038584350806,
877 8 : -0.044902996369897634,
878 8 : -0.0379229102703325,
879 8 : -0.03177475883674966,
880 8 : -0.026393889851509665,
881 8 : -0.02171681537458387,
882 8 : -0.017681618470379065,
883 8 : -0.014228317599792588,
884 8 : -0.011299187895158045,
885 8 : -0.008839039029507416,
886 8 : -0.0067954498934794565,
887 8 : -0.005118960820510834,
888 8 : -0.0037632246942695476,
889 8 : -0.002685119026170983,
890 8 : -0.0018448222347190884,
891 8 : -0.001205859493358183,
892 8 : -0.0007351283953634148,
893 8 : -0.00040292828426683115,
894 8 : -0.00018306476980228695,
895 8 : -5.333866529830615e-05,
896 8 : -0.0};
897 8 : }
898 0 : }
899 64 : }
900 0 : return {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
901 0 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
902 0 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
903 0 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
904 0 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
905 0 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
906 0 : }
907 : TEST_SUITE_END();
|