ampsci
High-precision calculations for one- and two-valence atomic systems
SphericalBessel.testdata.hpp
1#include <vector>
2
3namespace UnitTest {
4
5struct BesselTestData {
6 int k;
7 double x;
8 double value;
9};
10
11// Spherical Bessel j_k(x) data from Mathematica
12const std::vector<BesselTestData> jk_DATA{
13 {0, 1.0 / 1000000, 0.999999999999833},
14 {0, 1.0 / 100000, 0.999999999983333},
15 {0, 1.0 / 10000, 0.999999998333333},
16 {0, 1.0 / 1000, 0.999999833333342},
17 {0, 1.0 / 100, 0.999983333416666},
18 {0, 1.0 / 10, 0.998334166468282},
19 {0, 1, 0.841470984807897},
20 {0, 10, -0.0544021110889370},
21 {1, 1.0 / 1000000, 3.33333333333300e-7},
22 {1, 1.0 / 100000, 3.33333333330000e-6},
23 {1, 1.0 / 10000, 0.0000333333333000000},
24 {1, 1.0 / 1000, 0.000333333300000001},
25 {1, 1.0 / 100, 0.00333330000011905},
26 {1, 1.0 / 10, 0.0333000119025576},
27 {1, 1, 0.301168678939757},
28 {1, 10, 0.0784669417987515},
29 {2, 1.0 / 1000000, 6.66666666666619e-14},
30 {2, 1.0 / 100000, 6.66666666661905e-12},
31 {2, 1.0 / 10000, 6.66666666190476e-10},
32 {2, 1.0 / 1000, 6.66666619047620e-8},
33 {2, 1.0 / 100, 6.66661904775132e-6},
34 {2, 1.0 / 10, 0.000666190608445569},
35 {2, 1, 0.0620350520113739},
36 {2, 10, 0.0779421936285624},
37 {3, 1.0 / 1000000, 9.52380952380899e-21},
38 {3, 1.0 / 100000, 9.52380952375661e-18},
39 {3, 1.0 / 10000, 9.52380951851852e-15},
40 {3, 1.0 / 1000, 9.52380899470901e-12},
41 {3, 1.0 / 100, 9.52375661387686e-9},
42 {3, 1.0 / 10, 9.51851972086557e-6},
43 {3, 1, 0.00900658111711252},
44 {3, 10, -0.0394958449844703},
45 {4, 1.0 / 1000000, 1.05820105820101e-27},
46 {4, 1.0 / 100000, 1.05820105819625e-23},
47 {4, 1.0 / 10000, 1.05820105772006e-19},
48 {4, 1.0 / 1000, 1.05820101010101e-15},
49 {4, 1.0 / 100, 1.05819624820550e-11},
50 {4, 1.0 / 10, 1.05772015020987e-7},
51 {4, 1, 0.00101101580841375},
52 {4, 10, -0.105589285117692},
53 {5, 1.0 / 1000000, 9.62000962000925e-35},
54 {5, 1.0 / 100000, 9.62000961997262e-30},
55 {5, 1.0 / 10000, 9.62000961630962e-25},
56 {5, 1.0 / 1000, 9.62000925000926e-20},
57 {5, 1.0 / 100, 9.61997262003429e-15},
58 {5, 1.0 / 10, 9.61631023291645e-10},
59 {5, 1, 0.0000925611586112582},
60 {5, 10, -0.0555345116214522},
61 {6, 1.0 / 1000000, 7.40000740000715e-42},
62 {6, 1.0 / 100000, 7.40000739998273e-36},
63 {6, 1.0 / 10000, 7.40000739754073e-30},
64 {6, 1.0 / 1000, 7.40000715334049e-24},
65 {6, 1.0 / 100, 7.39998273335234e-18},
66 {6, 1.0 / 10, 7.39754109358771e-12},
67 {6, 1, 7.15693631008709e-6},
68 {6, 10, 0.0445013223340943},
69 {7, 1.0 / 1000000, 4.93333826667145e-49},
70 {7, 1.0 / 100000, 4.93333826665709e-42},
71 {7, 1.0 / 10000, 4.93333826522062e-35},
72 {7, 1.0 / 1000, 4.93333812157342e-28},
73 {7, 1.0 / 100, 4.93332375687226e-21},
74 {7, 1.0 / 10, 4.93188747573197e-14},
75 {7, 1, 4.79013419873949e-7},
76 {7, 10, 0.113386230655775},
77 {8, 1.0 / 1000000, 2.90196368627734e-56},
78 {8, 1.0 / 100000, 2.90196368626978e-48},
79 {8, 1.0 / 10000, 2.90196368551374e-40},
80 {8, 1.0 / 1000, 2.90196360990995e-32},
81 {8, 1.0 / 100, 2.90195604953996e-24},
82 {8, 1.0 / 10, 2.90120010253019e-16},
83 {8, 1, 2.82649880221473e-8},
84 {8, 10, 0.125578023649568},
85 {9, 1.0 / 1000000, 1.52734930856702e-63},
86 {9, 1.0 / 100000, 1.52734930856342e-54},
87 {9, 1.0 / 10000, 1.52734930820340e-45},
88 {9, 1.0 / 1000, 1.52734927220160e-36},
89 {9, 1.0 / 100, 1.52734567202504e-27},
90 {9, 1.0 / 10, 1.52698569349482e-18},
91 {9, 1, 1.49137650255515e-9},
92 {9, 10, 0.100096409548491},
93 {10, 1.0 / 1000000, 7.27309194555726e-71},
94 {10, 1.0 / 100000, 7.27309194554161e-61},
95 {10, 1.0 / 10000, 7.27309194397632e-51},
96 {10, 1.0 / 1000, 7.27309178744673e-41},
97 {10, 1.0 / 100, 7.27307613450379e-31},
98 {10, 1.0 / 10, 7.27151099671367e-21},
99 {10, 1, 7.11655264004731e-11},
100 {10, 10, 0.0646051544925643}};
101
102// phi^tilde = (1-phi) , where phi(x) = [(2k+1)!! / x^k ] * j_k(x)
103const std::vector<BesselTestData> PhikTilde_DATA{
104 {0, 1.0 / 1000000, 1.66666666666658e-13},
105 {0, 1.0 / 100000, 1.66666666665833e-11},
106 {0, 1.0 / 10000, 1.66666666583333e-9},
107 {0, 1.0 / 1000, 1.66666658333334e-7},
108 {0, 1.0 / 100, 0.0000166665833335317},
109 {0, 1.0 / 10, 0.00166583353171848},
110 {0, 1, 0.158529015192103},
111 {0, 10, 1.05440211108894},
112 {1, 1.0 / 1000000, 9.99999999999964e-14},
113 {1, 1.0 / 100000, 9.99999999996429e-12},
114 {1, 1.0 / 10000, 9.99999999642857e-10},
115 {1, 1.0 / 1000, 9.99999964285715e-8},
116 {1, 1.0 / 100, 9.99996428578042e-6},
117 {1, 1.0 / 10, 0.000999642923272908},
118 {1, 1, 0.0964939631807296},
119 {1, 10, 0.976459917460375},
120 {2, 1.0 / 1000000, 7.14285714285694e-14},
121 {2, 1.0 / 100000, 7.14285714283730e-12},
122 {2, 1.0 / 10000, 7.14285714087302e-10},
123 {2, 1.0 / 1000, 7.14285694444445e-8},
124 {2, 1.0 / 100, 7.14283730161736e-6},
125 {2, 1.0 / 10, 0.000714087331646941},
126 {2, 1, 0.0694742198293921},
127 {2, 10, 0.988308670955716},
128 {3, 1.0 / 1000000, 5.55555555555543e-14},
129 {3, 1.0 / 100000, 5.55555555554293e-12},
130 {3, 1.0 / 10000, 5.55555555429293e-10},
131 {3, 1.0 / 1000, 5.55555542929293e-8},
132 {3, 1.0 / 100, 5.55554292930912e-6},
133 {3, 1.0 / 10, 0.000555429309115460},
134 {3, 1, 0.0543089827031858},
135 {3, 10, 1.00414706372337},
136 {4, 1.0 / 1000000, 4.54545454545446e-14},
137 {4, 1.0 / 100000, 4.54545454544580e-12},
138 {4, 1.0 / 10000, 4.54545454458042e-10},
139 {4, 1.0 / 1000, 4.54545445804196e-8},
140 {4, 1.0 / 100, 4.54544580420552e-6},
141 {4, 1.0 / 10, 0.000454458051669838},
142 {4, 1, 0.0445900610490037},
143 {4, 10, 1.00997818744362},
144 {5, 1.0 / 1000000, 3.84615384615378e-14},
145 {5, 1.0 / 100000, 3.84615384614744e-12},
146 {5, 1.0 / 10000, 3.84615384551282e-10},
147 {5, 1.0 / 1000, 3.84615378205128e-8},
148 {5, 1.0 / 100, 3.84614743590372e-6},
149 {5, 1.0 / 10, 0.000384551288335434},
150 {5, 1, 0.0378267562359714},
151 {5, 10, 1.00577281248305},
152 {6, 1.0 / 1000000, 3.33333333333328e-14},
153 {6, 1.0 / 100000, 3.33333333332843e-12},
154 {6, 1.0 / 10000, 3.33333333284314e-10},
155 {6, 1.0 / 1000, 3.33333328431373e-8},
156 {6, 1.0 / 100, 3.33332843137685e-6},
157 {6, 1.0 / 10, 0.000333284318025200},
158 {6, 1, 0.0328474117363817},
159 {6, 10, 0.993986313806382},
160 {7, 1.0 / 1000000, 2.94117647058820e-14},
161 {7, 1.0 / 100000, 2.94117647058437e-12},
162 {7, 1.0 / 10000, 2.94117647020124e-10},
163 {7, 1.0 / 1000, 2.94117643188855e-8},
164 {7, 1.0 / 100, 2.94117260062227e-6},
165 {7, 1.0 / 10, 0.000294078950439658},
166 {7, 1, 0.0290278225800088},
167 {7, 10, 0.977016327580498},
168 {8, 1.0 / 1000000, 2.63157894736839e-14},
169 {8, 1.0 / 100000, 2.63157894736529e-12},
170 {8, 1.0 / 10000, 2.63157894705514e-10},
171 {8, 1.0 / 1000, 2.63157891604010e-8},
172 {8, 1.0 / 100, 2.63157581453861e-6},
173 {8, 1.0 / 10, 0.000263126568686095},
174 {8, 1, 0.0260047651249170},
175 {8, 10, 0.956726535123995},
176 {9, 1.0 / 1000000, 2.38095238095236e-14},
177 {9, 1.0 / 100000, 2.38095238094979e-12},
178 {9, 1.0 / 10000, 2.38095238069358e-10},
179 {9, 1.0 / 1000, 2.38095235507246e-8},
180 {9, 1.0 / 100, 2.38094979296239e-6},
181 {9, 1.0 / 10, 0.000238069359903302},
182 {9, 1, 0.0235524420053343},
183 {9, 10, 0.934463970365496},
184 {10, 1.0 / 1000000, 2.17391304347824e-14},
185 {10, 1.0 / 100000, 2.17391304347609e-12},
186 {10, 1.0 / 10000, 2.17391304326087e-10},
187 {10, 1.0 / 1000, 2.17391302173913e-8},
188 {10, 1.0 / 100, 2.17391086956656e-6},
189 {10, 1.0 / 10, 0.000217369566559255},
190 {10, 1, 0.0215230752865331},
191 {10, 10, 0.911172366613588}};
192
193// Spherical Bessel (2nd kind) y_k(x) data from Mathematica
194const std::vector<BesselTestData> yk_DATA{
195 {0, 1.0 / 1000000, -999999.999999500},
196 {0, 1.0 / 100000, -99999.9999950000},
197 {0, 1.0 / 10000, -9999.99995000000},
198 {0, 1.0 / 1000, -999.999500000042},
199 {0, 1.0 / 100, -99.9950000416665},
200 {0, 1.0 / 10, -9.95004165278026},
201 {0, 1, -0.540302305868140},
202 {0, 10, 0.0839071529076452},
203 {1, 1.0 / 1000000, -1.00000000000050e12},
204 {1, 1.0 / 100000, -1.00000000005000e10},
205 {1, 1.0 / 10000, -1.00000000500000e8},
206 {1, 1.0 / 1000, -1.00000049999988e6},
207 {1, 1.0 / 100, -10000.4999875001},
208 {1, 1.0 / 10, -100.498750694271},
209 {1, 1, -1.38177329067604},
210 {1, 10, 0.0627928263797015},
211 {2, 1.0 / 1000000, -3.00000000000050e18},
212 {2, 1.0 / 100000, -3.00000000005000e15},
213 {2, 1.0 / 10000, -3.00000000500000e12},
214 {2, 1.0 / 1000, -3.00000050000012e9},
215 {2, 1.0 / 100, -3.00005000124998e6},
216 {2, 1.0 / 10, -3005.01247917535},
217 {2, 1, -3.60501756615997},
218 {2, 10, -0.0650693049937348},
219 {3, 1.0 / 1000000, -1.50000000000015e25},
220 {3, 1.0 / 100000, -1.50000000001500e21},
221 {3, 1.0 / 10000, -1.50000000150000e17},
222 {3, 1.0 / 1000, -1.50000015000001e13},
223 {3, 1.0 / 100, -1.50001500012500e9},
224 {3, 1.0 / 10, -150150.125208073},
225 {3, 1, -16.6433145401238},
226 {3, 10, -0.0953274788765689},
227 {4, 1.0 / 1000000, -1.05000000000008e32},
228 {4, 1.0 / 100000, -1.05000000000750e27},
229 {4, 1.0 / 10000, -1.05000000075000e22},
230 {4, 1.0 / 1000, -1.05000007500000e17},
231 {4, 1.0 / 100, -1.05000750003750e12},
232 {4, 1.0 / 10, -1.05075037520859e7},
233 {4, 1, -112.898184214707},
234 {4, 10, -0.00165993021986344},
235 {5, 1.0 / 1000000, -9.45000000000053e38},
236 {5, 1.0 / 100000, -9.45000000005250e32},
237 {5, 1.0 / 10000, -9.45000000525000e26},
238 {5, 1.0 / 1000, -9.45000052500002e20},
239 {5, 1.0 / 100, -9.45005250018750e14},
240 {5, 1.0 / 10, -9.45525187562526e8},
241 {5, 1, -999.440343392236},
242 {5, 10, 0.0938335416786918},
243 {6, 1.0 / 1000000, -1.03950000000005e46},
244 {6, 1.0 / 100000, -1.03950000000473e39},
245 {6, 1.0 / 10000, -1.03950000047250e32},
246 {6, 1.0 / 1000, -1.03950004725000e25},
247 {6, 1.0 / 100, -1.03950472501313e18},
248 {6, 1.0 / 10, -1.03997263128126e11},
249 {6, 1, -10880.9455930999},
250 {6, 10, 0.104876826066424},
251 {7, 1.0 / 1000000, -1.35135000000005e53},
252 {7, 1.0 / 100000, -1.35135000000520e45},
253 {7, 1.0 / 10000, -1.35135000051975e37},
254 {7, 1.0 / 1000, -1.35135005197500e29},
255 {7, 1.0 / 100, -1.35135519751181e21},
256 {7, 1.0 / 10, -1.35186986814688e13},
257 {7, 1, -140452.852366906},
258 {7, 10, 0.0425063322076599},
259 {8, 1.0 / 1000000, -2.02702500000007e60},
260 {8, 1.0 / 100000, -2.02702500000676e51},
261 {8, 1.0 / 10000, -2.02702500067568e42},
262 {8, 1.0 / 1000, -2.02702506756750e33},
263 {8, 1.0 / 100, -2.02703175676299e24},
264 {8, 1.0 / 10, -2.02770080495719e15},
265 {8, 1, -2.09591183991050e6},
266 {8, 10, -0.0411173277549345},
267 {9, 1.0 / 1000000, -3.44594250000010e67},
268 {9, 1.0 / 100000, -3.44594250001014e57},
269 {9, 1.0 / 10000, -3.44594250101351e47},
270 {9, 1.0 / 1000, -3.44594260135125e37},
271 {9, 1.0 / 100, -3.44595263514189e27},
272 {9, 1.0 / 10, -3.44695618144041e17},
273 {9, 1, -3.54900484261115e7},
274 {9, 10, -0.112405789391049},
275 {10, 1.0 / 1000000, -6.54729075000017e74},
276 {10, 1.0 / 100000, -6.54729075001723e63},
277 {10, 1.0 / 10000, -6.54729075172297e52},
278 {10, 1.0 / 1000, -6.54729092229713e41},
279 {10, 1.0 / 100, -6.54730797973784e30},
280 {10, 1.0 / 10, -6.54901397465628e19},
281 {10, 1, -6.72215008256208e8},
282 {10, 10, -0.172453672088058}};
283
284// psi^tilde = (1-psi) , where psi(x) = [ x^{k+1} / (2k-1)!! ] * y_k(x)
285const std::vector<BesselTestData> PsikTilde_DATA{
286 {0, 1.0 / 1000000, 4.99999999999958e-13},
287 {0, 1.0 / 100000, 4.99999999995833e-11},
288 {0, 1.0 / 10000, 4.99999999583333e-9},
289 {0, 1.0 / 1000, 4.99999958333335e-7},
290 {0, 1.0 / 100, 0.0000499995833347222},
291 {0, 1.0 / 10, 0.00499583472197423},
292 {0, 1, 0.459697694131860},
293 {0, 10, 1.83907152907645},
294 {1, 1.0 / 1000000, -4.99999999999875e-13},
295 {1, 1.0 / 100000, -4.99999999987500e-11},
296 {1, 1.0 / 10000, -4.99999998750000e-9},
297 {1, 1.0 / 1000, -4.99999875000007e-7},
298 {1, 1.0 / 100, -0.0000499987500069444},
299 {1, 1.0 / 10, -0.00498750694270858},
300 {1, 1, -0.381773290676036},
301 {1, 10, 7.27928263797015},
302 {2, 1.0 / 1000000, -1.66666666666708e-13},
303 {2, 1.0 / 100000, -1.66666666670833e-11},
304 {2, 1.0 / 10000, -1.66666667083333e-9},
305 {2, 1.0 / 1000, -1.66666708333326e-7},
306 {2, 1.0 / 100, -0.0000166670833263889},
307 {2, 1.0 / 10, -0.00167082639178183},
308 {2, 1, -0.201672522053323},
309 {2, 10, -20.6897683312449},
310 {3, 1.0 / 1000000, -1.00000000000008e-13},
311 {3, 1.0 / 100000, -1.00000000000833e-11},
312 {3, 1.0 / 10000, -1.00000000083333e-9},
313 {3, 1.0 / 1000, -1.00000008333335e-7},
314 {3, 1.0 / 100, -0.0000100000833347222},
315 {3, 1.0 / 10, -0.00100083472048669},
316 {3, 1, -0.109554302674921},
317 {3, 10, -62.5516525843793},
318 {4, 1.0 / 1000000, -7.14285714285750e-14},
319 {4, 1.0 / 100000, -7.14285714289286e-12},
320 {4, 1.0 / 10000, -7.14285714642857e-10},
321 {4, 1.0 / 1000, -7.14285750000002e-8},
322 {4, 1.0 / 100, -7.14289285734127e-6},
323 {4, 1.0 / 10, -0.000714643055803323},
324 {4, 1, -0.0752208020448256},
325 {4, 10, -0.580885923679465},
326 {5, 1.0 / 1000000, -5.55555555555575e-14},
327 {5, 1.0 / 100000, -5.55555555557540e-12},
328 {5, 1.0 / 10000, -5.55555555753968e-10},
329 {5, 1.0 / 1000, -5.55555575396826e-8},
330 {5, 1.0 / 100, -5.55557539689153e-6},
331 {5, 1.0 / 10, -0.000555754034419119},
332 {5, 1, -0.0576088289864936},
333 {5, 10, 100.294753099145},
334 {6, 1.0 / 1000000, -4.54545454545467e-14},
335 {6, 1.0 / 100000, -4.54545454546717e-12},
336 {6, 1.0 / 10000, -4.54545454671717e-10},
337 {6, 1.0 / 1000, -4.54545467171717e-8},
338 {6, 1.0 / 100, -4.54546717174723e-6},
339 {6, 1.0 / 10, -0.000454671747241765},
340 {6, 1, -0.0467480128042226},
341 {6, 10, 101.891607567508},
342 {7, 1.0 / 1000000, -3.84615384615393e-14},
343 {7, 1.0 / 100000, -3.84615384616259e-12},
344 {7, 1.0 / 10000, -3.84615384702797e-10},
345 {7, 1.0 / 1000, -3.84615393356644e-8},
346 {7, 1.0 / 100, -3.84616258742877e-6},
347 {7, 1.0 / 10, -0.000384702813393205},
348 {7, 1, -0.0393521468672541},
349 {7, 10, 32.4547172883856},
350 {8, 1.0 / 1000000, -3.33333333333340e-14},
351 {8, 1.0 / 100000, -3.33333333333974e-12},
352 {8, 1.0 / 10000, -3.33333333397436e-10},
353 {8, 1.0 / 1000, -3.33333339743590e-8},
354 {8, 1.0 / 100, -3.33333974359946e-6},
355 {8, 1.0 / 10, -0.000333397445611295},
356 {8, 1, -0.0339842083400530},
357 {8, 10, -19.2845686436697},
358 {9, 1.0 / 1000000, -2.94117647058828e-14},
359 {9, 1.0 / 100000, -2.94117647059314e-12},
360 {9, 1.0 / 10000, -2.94117647107843e-10},
361 {9, 1.0 / 1000, -2.94117651960784e-8},
362 {9, 1.0 / 100, -2.94118137255530e-6},
363 {9, 1.0 / 10, -0.000294166672951946},
364 {9, 1, -0.0299083175680245},
365 {9, 10, -31.6197518940170},
366 {10, 1.0 / 1000000, -2.63157894736846e-14},
367 {10, 1.0 / 100000, -2.63157894737229e-12},
368 {10, 1.0 / 10000, -2.63157894775542e-10},
369 {10, 1.0 / 1000, -2.63157898606811e-8},
370 {10, 1.0 / 100, -2.63158281734176e-6},
371 {10, 1.0 / 10, -0.000263196598727624},
372 {10, 1, -0.0267071280685197},
373 {10, 10, -25.3396996823545}};
374
375} // namespace UnitTest