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