New upstream version 2.21.0
Julien Puydt
2 years ago
14 | 14 | BUILD_DIRS = fmpr arf mag arb arb_mat arb_poly arb_calc acb acb_mat acb_poly \ |
15 | 15 | acb_dft acb_calc acb_hypgeom acb_elliptic acb_modular dirichlet acb_dirichlet \ |
16 | 16 | arb_hypgeom bernoulli hypgeom fmpz_extras bool_mat partitions dlog \ |
17 | arb_fmpz_poly \ | |
17 | arb_fmpz_poly arb_fpwrap \ | |
18 | 18 | $(EXTRA_BUILD_DIRS) |
19 | 19 | |
20 | 20 | TEMPLATE_DIRS = |
107 | 107 | void |
108 | 108 | acb_barnes_g(acb_t res, const acb_t z, slong prec) |
109 | 109 | { |
110 | int real; | |
111 | ||
112 | real = acb_is_real(z); | |
113 | ||
110 | 114 | if (acb_is_int(z)) |
111 | 115 | { |
112 | 116 | if (arb_is_nonpositive(acb_realref(z))) |
125 | 129 | |
126 | 130 | _acb_log_barnes_g_zeta(res, z, prec); |
127 | 131 | acb_exp(res, res, prec); |
132 | ||
133 | if (real) | |
134 | arb_zero(acb_imagref(res)); | |
128 | 135 | } |
129 | 136 |
10 | 10 | |
11 | 11 | #include "acb.h" |
12 | 12 | |
13 | void acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
13 | void acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
14 | 14 | const acb_t x, int use_reflect, int digamma, slong prec); |
15 | 15 | |
16 | 16 | void acb_gamma_stirling_eval(acb_t s, const acb_t z, slong nterms, int digamma, slong prec); |
31 | 31 | |
32 | 32 | wp = prec + FLINT_BIT_COUNT(prec); |
33 | 33 | |
34 | acb_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 1, wp); | |
34 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 1, wp); | |
35 | 35 | |
36 | 36 | acb_init(t); |
37 | 37 | acb_init(u); |
10 | 10 | |
11 | 11 | #include "bernoulli.h" |
12 | 12 | #include "acb.h" |
13 | #include "acb_hypgeom.h" | |
13 | 14 | |
14 | 15 | void |
15 | 16 | acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, |
18 | 19 | void acb_gamma_stirling_bound(mag_ptr err, const acb_t z, slong k0, slong knum, slong n); |
19 | 20 | |
20 | 21 | void arb_gamma_stirling_coeff(arb_t b, ulong k, int digamma, slong prec); |
22 | ||
21 | 23 | |
22 | 24 | void |
23 | 25 | acb_gamma_stirling_eval(acb_t s, const acb_t z, slong nterms, int digamma, slong prec) |
109 | 111 | arb_clear(b); |
110 | 112 | } |
111 | 113 | |
112 | static void | |
113 | _acb_gamma(acb_t y, const acb_t x, slong prec, int inverse) | |
114 | { | |
115 | int reflect; | |
116 | slong r, n, wp; | |
117 | acb_t t, u, v; | |
118 | double acc; | |
119 | ||
120 | wp = prec + FLINT_BIT_COUNT(prec); | |
121 | ||
122 | /* todo: for large x (if exact or accurate enough), increase precision */ | |
123 | acc = acb_rel_accuracy_bits(x); | |
124 | acc = FLINT_MAX(acc, 0); | |
125 | wp = FLINT_MIN(prec, acc + 20); | |
126 | wp = FLINT_MAX(wp, 2); | |
127 | wp = wp + FLINT_BIT_COUNT(wp); | |
128 | ||
129 | if (acc < 3) /* try to avoid divisions blowing up */ | |
130 | { | |
131 | if (arf_cmp_d(arb_midref(acb_realref(x)), -0.5) < 0) | |
132 | { | |
133 | reflect = 1; | |
134 | r = 0; | |
135 | } | |
136 | else if (arf_cmp_si(arb_midref(acb_realref(x)), 1) < 0) | |
137 | { | |
138 | reflect = 0; | |
139 | r = 1; | |
140 | } | |
141 | else | |
142 | { | |
143 | reflect = 0; | |
144 | r = 0; | |
145 | } | |
146 | ||
147 | n = 1; | |
148 | } | |
149 | else | |
150 | { | |
151 | acb_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
152 | } | |
153 | ||
154 | acb_init(t); | |
155 | acb_init(u); | |
156 | acb_init(v); | |
157 | ||
158 | if (reflect) | |
159 | { | |
160 | acb_sub_ui(t, x, 1, wp); | |
161 | acb_neg(t, t); | |
162 | acb_rising_ui_rec(u, t, r, wp); | |
163 | arb_const_pi(acb_realref(v), wp); | |
164 | acb_mul_arb(u, u, acb_realref(v), wp); | |
165 | acb_add_ui(t, t, r, wp); | |
166 | acb_gamma_stirling_eval(v, t, n, 0, wp); | |
167 | ||
168 | if (inverse) | |
169 | { | |
170 | /* rgamma(x) = gamma(1-x+r) sin(pi x) / ((rf(1-x, r) * pi) */ | |
171 | acb_exp(v, v, wp); | |
172 | acb_sin_pi(t, x, wp); | |
173 | acb_mul(v, v, t, wp); | |
174 | acb_mul(y, u, v, wp); | |
175 | acb_div(y, v, u, prec); | |
176 | } | |
177 | else | |
178 | { | |
179 | /* gamma(x) = (rf(1-x, r) * pi) rgamma(1-x+r) csc(pi x) */ | |
180 | acb_neg(v, v); | |
181 | acb_exp(v, v, wp); | |
182 | acb_csc_pi(t, x, wp); | |
183 | acb_mul(v, v, t, wp); | |
184 | acb_mul(y, v, u, prec); | |
185 | } | |
186 | } | |
187 | else | |
188 | { | |
189 | acb_add_ui(t, x, r, wp); | |
190 | acb_gamma_stirling_eval(u, t, n, 0, wp); | |
191 | ||
192 | if (inverse) | |
193 | { | |
194 | /* rgamma(x) = rf(x,r) rgamma(x+r) */ | |
195 | acb_neg(u, u); | |
196 | acb_exp(u, u, prec); | |
197 | acb_rising_ui_rec(v, x, r, wp); | |
198 | acb_mul(y, v, u, prec); | |
199 | } | |
200 | else | |
201 | { | |
202 | /* gamma(x) = gamma(x+r) / rf(x,r) */ | |
203 | acb_exp(u, u, prec); | |
204 | acb_rising_ui_rec(v, x, r, wp); | |
205 | acb_div(y, u, v, prec); | |
206 | } | |
207 | } | |
208 | ||
209 | acb_clear(t); | |
210 | acb_clear(u); | |
211 | acb_clear(v); | |
212 | } | |
213 | ||
214 | 114 | void |
215 | 115 | acb_gamma(acb_t y, const acb_t x, slong prec) |
216 | 116 | { |
217 | if (acb_is_real(x)) | |
218 | { | |
219 | arb_gamma(acb_realref(y), acb_realref(x), prec); | |
220 | arb_zero(acb_imagref(y)); | |
221 | return; | |
222 | } | |
223 | ||
224 | _acb_gamma(y, x, prec, 0); | |
117 | acb_hypgeom_gamma(y, x, prec); | |
225 | 118 | } |
226 | 119 | |
227 | 120 | void |
228 | 121 | acb_rgamma(acb_t y, const acb_t x, slong prec) |
229 | 122 | { |
230 | if (acb_is_real(x)) | |
231 | { | |
232 | arb_rgamma(acb_realref(y), acb_realref(x), prec); | |
233 | arb_zero(acb_imagref(y)); | |
234 | return; | |
235 | } | |
236 | ||
237 | _acb_gamma(y, x, prec, 1); | |
238 | } | |
239 | ||
240 | /* corrects branch cut of sum_{k=0}^{r-1} log(z+k), given the | |
241 | logarithm of the product */ | |
242 | void | |
243 | _acb_log_rising_correct_branch(acb_t t, | |
244 | const acb_t t_wrong, const acb_t z, ulong r, slong prec) | |
245 | { | |
246 | acb_t f; | |
247 | arb_t pi, u, v; | |
248 | fmpz_t pi_mult; | |
249 | slong i, argprec; | |
250 | ||
251 | acb_init(f); | |
252 | ||
253 | arb_init(u); | |
254 | arb_init(pi); | |
255 | arb_init(v); | |
256 | ||
257 | fmpz_init(pi_mult); | |
258 | ||
259 | argprec = FLINT_MIN(prec, 40); | |
260 | ||
261 | arb_zero(u); | |
262 | for (i = 0; i < r; i++) | |
263 | { | |
264 | acb_add_ui(f, z, i, argprec); | |
265 | acb_arg(v, f, argprec); | |
266 | arb_add(u, u, v, argprec); | |
267 | } | |
268 | ||
269 | if (argprec == prec) | |
270 | { | |
271 | arb_set(acb_imagref(t), u); | |
272 | } | |
273 | else | |
274 | { | |
275 | arb_sub(v, u, acb_imagref(t), argprec); | |
276 | arb_const_pi(pi, argprec); | |
277 | arb_div(v, v, pi, argprec); | |
278 | ||
279 | if (arb_get_unique_fmpz(pi_mult, v)) | |
280 | { | |
281 | arb_const_pi(v, prec); | |
282 | arb_mul_fmpz(v, v, pi_mult, prec); | |
283 | arb_add(acb_imagref(t), acb_imagref(t), v, prec); | |
284 | } | |
285 | else | |
286 | { | |
287 | arb_zero(u); | |
288 | for (i = 0; i < r; i++) | |
289 | { | |
290 | acb_add_ui(f, z, i, prec); | |
291 | acb_arg(v, f, prec); | |
292 | arb_add(u, u, v, prec); | |
293 | } | |
294 | arb_set(acb_imagref(t), u); | |
295 | } | |
296 | } | |
297 | ||
298 | acb_clear(f); | |
299 | ||
300 | arb_clear(u); | |
301 | arb_clear(v); | |
302 | arb_clear(pi); | |
303 | ||
304 | fmpz_clear(pi_mult); | |
123 | acb_hypgeom_rgamma(y, x, prec); | |
305 | 124 | } |
306 | 125 | |
307 | 126 | void |
308 | 127 | acb_lgamma(acb_t y, const acb_t x, slong prec) |
309 | 128 | { |
310 | int reflect; | |
311 | slong r, n, wp; | |
312 | acb_t t, u, v; | |
313 | ||
314 | if (acb_is_real(x) && arb_is_positive(acb_realref(x))) | |
315 | { | |
316 | arb_lgamma(acb_realref(y), acb_realref(x), prec); | |
317 | arb_zero(acb_imagref(y)); | |
318 | return; | |
319 | } | |
320 | ||
321 | wp = prec + FLINT_BIT_COUNT(prec); | |
322 | ||
323 | acb_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
324 | ||
325 | acb_init(t); | |
326 | acb_init(u); | |
327 | acb_init(v); | |
328 | ||
329 | if (reflect) | |
330 | { | |
331 | /* log gamma(x) = log rf(1-x, r) - log gamma(1-x+r) - log sin(pi x) + log(pi) */ | |
332 | acb_sub_ui(u, x, 1, wp); | |
333 | acb_neg(u, u); | |
334 | ||
335 | acb_rising_ui_rec(t, u, r, prec); | |
336 | acb_log(t, t, wp); | |
337 | _acb_log_rising_correct_branch(t, t, u, r, wp); | |
338 | ||
339 | acb_add_ui(u, u, r, wp); | |
340 | acb_gamma_stirling_eval(v, u, n, 0, wp); | |
341 | acb_sub(t, t, v, wp); | |
342 | ||
343 | acb_log_sin_pi(u, x, wp); | |
344 | acb_sub(t, t, u, wp); | |
345 | ||
346 | acb_const_pi(u, wp); | |
347 | acb_log(u, u, wp); | |
348 | ||
349 | acb_add(y, t, u, wp); | |
350 | } | |
351 | else | |
352 | { | |
353 | /* log gamma(x) = log gamma(x+r) - log rf(x,r) */ | |
354 | ||
355 | acb_add_ui(t, x, r, wp); | |
356 | acb_gamma_stirling_eval(u, t, n, 0, wp); | |
357 | ||
358 | acb_rising_ui_rec(t, x, r, prec); | |
359 | acb_log(t, t, wp); | |
360 | _acb_log_rising_correct_branch(t, t, x, r, wp); | |
361 | ||
362 | acb_sub(y, u, t, prec); | |
363 | } | |
364 | ||
365 | acb_clear(t); | |
366 | acb_clear(u); | |
367 | acb_clear(v); | |
129 | acb_hypgeom_lgamma(y, x, prec); | |
368 | 130 | } |
369 |
9 | 9 | */ |
10 | 10 | |
11 | 11 | #include "acb.h" |
12 | #include "acb_hypgeom.h" | |
12 | 13 | |
13 | 14 | void |
14 | 15 | acb_rising2_ui(acb_t u, acb_t v, const acb_t x, ulong n, slong prec) |
15 | 16 | { |
16 | if (prec < 256 || n < 8 || acb_bits(x) < prec / 8) | |
17 | acb_rising2_ui_bs(u, v, x, n, prec); | |
17 | if (x == u || x == v) | |
18 | { | |
19 | acb_t t; | |
20 | acb_init(t); | |
21 | acb_set(t, x); | |
22 | acb_rising2_ui(u, v, t, n, prec); | |
23 | acb_clear(t); | |
24 | } | |
18 | 25 | else |
19 | acb_rising2_ui_rs(u, v, x, n, 0, prec); | |
26 | { | |
27 | acb_struct tmp[2]; | |
28 | ||
29 | tmp[0] = *u; | |
30 | tmp[1] = *v; | |
31 | ||
32 | acb_hypgeom_rising_ui_jet(tmp, x, n, 2, prec); | |
33 | ||
34 | *u = tmp[0]; | |
35 | *v = tmp[1]; | |
36 | } | |
20 | 37 | } |
21 | 38 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb.h" | |
12 | ||
13 | static void | |
14 | bsplit(acb_t p, acb_t q, const acb_t x, ulong a, ulong b, slong prec) | |
15 | { | |
16 | if (b - a < 8) | |
17 | { | |
18 | ulong k; | |
19 | acb_t t; | |
20 | ||
21 | acb_one(p); | |
22 | acb_add_ui(q, x, a, prec); | |
23 | ||
24 | acb_init(t); | |
25 | ||
26 | for (k = a + 1; k < b; k++) | |
27 | { | |
28 | acb_add_ui(t, x, k, prec); | |
29 | acb_mul(p, p, t, prec); | |
30 | acb_add(p, p, q, prec); | |
31 | acb_mul(q, q, t, prec); | |
32 | } | |
33 | ||
34 | acb_clear(t); | |
35 | } | |
36 | else | |
37 | { | |
38 | acb_t r, s; | |
39 | ulong m; | |
40 | ||
41 | acb_init(r); | |
42 | acb_init(s); | |
43 | ||
44 | m = a + (b - a) / 2; | |
45 | bsplit(p, q, x, a, m, prec); | |
46 | bsplit(r, s, x, m, b, prec); | |
47 | ||
48 | acb_mul(p, p, s, prec); | |
49 | acb_mul(r, r, q, prec); | |
50 | acb_add(p, p, r, prec); | |
51 | acb_mul(q, q, s, prec); | |
52 | ||
53 | acb_clear(r); | |
54 | acb_clear(s); | |
55 | } | |
56 | } | |
57 | ||
58 | void | |
59 | acb_rising2_ui_bs(acb_t u, acb_t v, const acb_t x, ulong n, slong prec) | |
60 | { | |
61 | if (n == 0) | |
62 | { | |
63 | acb_zero(v); | |
64 | acb_one(u); | |
65 | } | |
66 | else if (n == 1) | |
67 | { | |
68 | acb_set(u, x); | |
69 | acb_one(v); | |
70 | } | |
71 | else | |
72 | { | |
73 | acb_t t; | |
74 | slong wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
75 | ||
76 | acb_init(t); /* support aliasing */ | |
77 | acb_set(t, x); | |
78 | bsplit(v, u, t, 0, n, wp); | |
79 | acb_clear(t); | |
80 | } | |
81 | } | |
82 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/fmpz_poly.h" | |
12 | #include "acb.h" | |
13 | ||
14 | void _gamma_rf_bsplit(fmpz * A, ulong a, ulong b); | |
15 | ||
16 | void | |
17 | acb_rising2_ui_rs(acb_t u, acb_t v, | |
18 | const acb_t x, ulong n, ulong m, slong prec) | |
19 | { | |
20 | if (n == 0) | |
21 | { | |
22 | acb_zero(v); | |
23 | acb_one(u); | |
24 | } | |
25 | else if (n == 1) | |
26 | { | |
27 | acb_set(u, x); | |
28 | acb_one(v); | |
29 | } | |
30 | else | |
31 | { | |
32 | slong wp; | |
33 | ulong i, j, a, b; | |
34 | acb_ptr xs; | |
35 | acb_t S, T, U, V; | |
36 | fmpz *A, *B; | |
37 | ||
38 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
39 | ||
40 | if (m == 0) | |
41 | { | |
42 | ulong m1, m2; | |
43 | m1 = 0.6 * pow(wp, 0.4); | |
44 | m2 = n_sqrt(n); | |
45 | m = FLINT_MIN(m1, m2); | |
46 | } | |
47 | ||
48 | m = FLINT_MAX(m, 1); | |
49 | ||
50 | xs = _acb_vec_init(m + 1); | |
51 | A = _fmpz_vec_init(2 * m + 1); | |
52 | B = A + (m + 1); | |
53 | ||
54 | acb_init(S); | |
55 | acb_init(T); | |
56 | acb_init(U); | |
57 | acb_init(V); | |
58 | _acb_vec_set_powers(xs, x, m + 1, wp); | |
59 | ||
60 | for (i = 0; i < n; i += m) | |
61 | { | |
62 | a = i; | |
63 | b = FLINT_MIN(n, a + m); | |
64 | ||
65 | if (a == 0 || b != a + m) | |
66 | { | |
67 | _gamma_rf_bsplit(A, a, b); | |
68 | } | |
69 | else | |
70 | { | |
71 | fmpz tt = m; | |
72 | _fmpz_poly_taylor_shift(A, &tt, m + 1); | |
73 | } | |
74 | ||
75 | _fmpz_poly_derivative(B, A, b - a + 1); | |
76 | ||
77 | acb_set_fmpz(S, A); | |
78 | ||
79 | for (j = 1; j <= b - a; j++) | |
80 | acb_addmul_fmpz(S, xs + j, A + j, wp); | |
81 | ||
82 | acb_set_fmpz(T, B); | |
83 | ||
84 | for (j = 1; j < b - a; j++) | |
85 | acb_addmul_fmpz(T, xs + j, B + j, wp); | |
86 | ||
87 | if (i == 0) | |
88 | { | |
89 | acb_set(U, S); | |
90 | acb_set(V, T); | |
91 | } | |
92 | else | |
93 | { | |
94 | acb_mul(V, V, S, wp); | |
95 | acb_addmul(V, U, T, wp); | |
96 | acb_mul(U, U, S, wp); | |
97 | } | |
98 | } | |
99 | ||
100 | acb_set(u, U); | |
101 | acb_set(v, V); | |
102 | ||
103 | _acb_vec_clear(xs, m + 1); | |
104 | _fmpz_vec_clear(A, 2 * m + 1); | |
105 | ||
106 | acb_clear(S); | |
107 | acb_clear(T); | |
108 | acb_clear(U); | |
109 | acb_clear(V); | |
110 | } | |
111 | } | |
112 |
9 | 9 | */ |
10 | 10 | |
11 | 11 | #include "acb.h" |
12 | #include "acb_hypgeom.h" | |
12 | 13 | |
13 | 14 | void |
14 | 15 | acb_rising_ui(acb_t y, const acb_t x, ulong n, slong prec) |
15 | 16 | { |
16 | if (n < FLINT_MAX(prec, 100)) | |
17 | { | |
18 | acb_rising_ui_rec(y, x, n, prec); | |
19 | } | |
20 | else | |
21 | { | |
22 | acb_t t; | |
23 | acb_init(t); | |
24 | acb_add_ui(t, x, n, prec); | |
25 | acb_gamma(t, t, prec); | |
26 | acb_rgamma(y, x, prec); | |
27 | acb_mul(y, y, t, prec); | |
28 | acb_clear(t); | |
29 | } | |
17 | acb_hypgeom_rising_ui(y, x, n, prec); | |
30 | 18 | } |
31 | 19 | |
32 | 20 | void |
33 | 21 | acb_rising(acb_t y, const acb_t x, const acb_t n, slong prec) |
34 | 22 | { |
35 | if (acb_is_int(n) && arf_sgn(arb_midref(acb_realref(n))) >= 0 && | |
36 | arf_cmpabs_ui(arb_midref(acb_realref(n)), FLINT_MAX(prec, 100)) < 0) | |
37 | { | |
38 | acb_rising_ui_rec(y, x, | |
39 | arf_get_si(arb_midref(acb_realref(n)), ARF_RND_DOWN), prec); | |
40 | } | |
41 | else | |
42 | { | |
43 | acb_t t; | |
44 | acb_init(t); | |
45 | acb_add(t, x, n, prec); | |
46 | acb_gamma(t, t, prec); | |
47 | acb_rgamma(y, x, prec); | |
48 | acb_mul(y, y, t, prec); | |
49 | acb_clear(t); | |
50 | } | |
23 | acb_hypgeom_rising(y, x, n, prec); | |
51 | 24 | } |
52 | 25 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb.h" | |
12 | ||
13 | /* assumes y and x are not aliased */ | |
14 | static void | |
15 | bsplit(acb_t y, const acb_t x, ulong a, ulong b, slong prec) | |
16 | { | |
17 | if (b - a == 1) | |
18 | { | |
19 | acb_set_round(y, x, prec); | |
20 | } | |
21 | else if (b - a <= 10) | |
22 | { | |
23 | slong i; | |
24 | acb_t t; | |
25 | acb_init(t); | |
26 | ||
27 | acb_add_ui(t, x, a, prec); | |
28 | acb_add_ui(y, x, a + 1, prec); | |
29 | acb_mul(y, y, t, prec); | |
30 | ||
31 | for (i = a + 2; i < b; i++) | |
32 | { | |
33 | acb_add_ui(t, x, i, prec); | |
34 | acb_mul(y, y, t, prec); | |
35 | } | |
36 | ||
37 | acb_clear(t); | |
38 | } | |
39 | else | |
40 | { | |
41 | acb_t t, u; | |
42 | ulong m = a + (b - a) / 2; | |
43 | ||
44 | acb_init(t); | |
45 | acb_init(u); | |
46 | ||
47 | bsplit(t, x, a, m, prec); | |
48 | bsplit(u, x, m, b, prec); | |
49 | ||
50 | acb_mul(y, t, u, prec); | |
51 | ||
52 | acb_clear(t); | |
53 | acb_clear(u); | |
54 | } | |
55 | } | |
56 | ||
57 | void | |
58 | acb_rising_ui_bs(acb_t y, const acb_t x, ulong n, slong prec) | |
59 | { | |
60 | if (n == 0) | |
61 | { | |
62 | acb_one(y); | |
63 | } | |
64 | else if (n == 1) | |
65 | { | |
66 | acb_set_round(y, x, prec); | |
67 | } | |
68 | else | |
69 | { | |
70 | acb_t t; | |
71 | slong wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
72 | ||
73 | acb_init(t); | |
74 | bsplit(t, x, 0, n, wp); | |
75 | acb_set_round(y, t, prec); | |
76 | acb_clear(t); | |
77 | } | |
78 | } | |
79 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb.h" | |
12 | ||
13 | void | |
14 | acb_rising_ui_rec(acb_t y, const acb_t x, ulong n, slong prec) | |
15 | { | |
16 | if (prec < 256 || n < 8 || acb_bits(x) < prec / 8) | |
17 | acb_rising_ui_bs(y, x, n, prec); | |
18 | else | |
19 | acb_rising_ui_rs(y, x, n, 0, prec); | |
20 | } | |
21 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/fmpz_poly.h" | |
12 | #include "acb.h" | |
13 | ||
14 | void rising_difference_polynomial(fmpz * s, fmpz * c, ulong m); | |
15 | ||
16 | void | |
17 | acb_rising_ui_rs(acb_t y, const acb_t x, ulong n, ulong m, slong prec) | |
18 | { | |
19 | acb_ptr xs; | |
20 | acb_t t, u, v; | |
21 | ulong i, k, rem; | |
22 | fmpz_t c, h; | |
23 | fmpz *s, *d; | |
24 | slong wp; | |
25 | ||
26 | if (n == 0) | |
27 | { | |
28 | acb_one(y); | |
29 | return; | |
30 | } | |
31 | ||
32 | if (n == 1) | |
33 | { | |
34 | acb_set_round(y, x, prec); | |
35 | return; | |
36 | } | |
37 | ||
38 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
39 | ||
40 | acb_init(t); | |
41 | acb_init(u); | |
42 | acb_init(v); | |
43 | fmpz_init(c); | |
44 | fmpz_init(h); | |
45 | ||
46 | if (m == 0) | |
47 | { | |
48 | ulong m1, m2; | |
49 | m1 = 0.2 * pow(2.0 * wp, 0.4); | |
50 | m2 = n_sqrt(n); | |
51 | m = FLINT_MIN(m1, m2); | |
52 | } | |
53 | ||
54 | m = FLINT_MIN(m, n); | |
55 | m = FLINT_MAX(m, 1); | |
56 | ||
57 | xs = _acb_vec_init(m + 1); | |
58 | d = _fmpz_vec_init(m * m); | |
59 | s = _fmpz_vec_init(m + 1); | |
60 | ||
61 | _acb_vec_set_powers(xs, x, m + 1, wp); | |
62 | ||
63 | rising_difference_polynomial(s, d, m); | |
64 | ||
65 | /* tail */ | |
66 | rem = m; | |
67 | while (rem + m <= n) | |
68 | rem += m; | |
69 | acb_one(y); | |
70 | for (k = rem; k < n; k++) | |
71 | { | |
72 | acb_add_ui(t, xs + 1, k, wp); | |
73 | acb_mul(y, y, t, wp); | |
74 | } | |
75 | ||
76 | /* initial rising factorial */ | |
77 | acb_zero(t); | |
78 | for (i = 1; i <= m; i++) | |
79 | acb_addmul_fmpz(t, xs + i, s + i, wp); | |
80 | ||
81 | acb_mul(y, y, t, wp); | |
82 | ||
83 | /* the leading coefficient is always the same */ | |
84 | acb_mul_fmpz(xs + m - 1, xs + m - 1, d + m - 1 + 0, wp); | |
85 | ||
86 | for (k = 0; k + 2 * m <= n; k += m) | |
87 | { | |
88 | for (i = 0; i < m - 1; i++) | |
89 | { | |
90 | fmpz_set_ui(h, k); | |
91 | _fmpz_poly_evaluate_horner_fmpz(c, d + i * m, m - i, h); | |
92 | ||
93 | if (i == 0) | |
94 | acb_add_fmpz(t, t, c, wp); | |
95 | else | |
96 | acb_addmul_fmpz(t, xs + i, c, wp); | |
97 | } | |
98 | ||
99 | acb_add(t, t, xs + m - 1, wp); | |
100 | acb_mul(y, y, t, wp); | |
101 | } | |
102 | ||
103 | acb_set_round(y, y, prec); | |
104 | ||
105 | acb_clear(t); | |
106 | acb_clear(u); | |
107 | acb_clear(v); | |
108 | _acb_vec_clear(xs, m + 1); | |
109 | _fmpz_vec_clear(d, m * m); | |
110 | _fmpz_vec_clear(s, m + 1); | |
111 | fmpz_clear(c); | |
112 | fmpz_clear(h); | |
113 | } | |
114 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/arith.h" | |
12 | #include "acb_poly.h" | |
13 | ||
14 | int main() | |
15 | { | |
16 | slong iter; | |
17 | flint_rand_t state; | |
18 | ||
19 | flint_printf("rising2_ui_bs...."); | |
20 | fflush(stdout); | |
21 | ||
22 | flint_randinit(state); | |
23 | ||
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | acb_t a, u, v, u2, v2; | |
27 | fmpz *f; | |
28 | acb_ptr g; | |
29 | ulong n; | |
30 | slong i, prec; | |
31 | ||
32 | acb_init(a); | |
33 | acb_init(u); | |
34 | acb_init(v); | |
35 | acb_init(u2); | |
36 | acb_init(v2); | |
37 | ||
38 | acb_randtest(a, state, 1 + n_randint(state, 4000), 10); | |
39 | acb_randtest(u, state, 1 + n_randint(state, 4000), 10); | |
40 | acb_randtest(v, state, 1 + n_randint(state, 4000), 10); | |
41 | n = n_randint(state, 120); | |
42 | ||
43 | f = _fmpz_vec_init(n + 1); | |
44 | g = _acb_vec_init(n + 1); | |
45 | ||
46 | prec = 2 + n_randint(state, 4000); | |
47 | acb_rising2_ui_bs(u, v, a, n, prec); | |
48 | ||
49 | arith_stirling_number_1u_vec(f, n, n + 1); | |
50 | for (i = 0; i <= n; i++) | |
51 | acb_set_fmpz(g + i, f + i); | |
52 | _acb_poly_evaluate(u2, g, n + 1, a, prec); | |
53 | ||
54 | _acb_poly_derivative(g, g, n + 1, prec); | |
55 | _acb_poly_evaluate(v2, g, n, a, prec); | |
56 | ||
57 | if (!acb_overlaps(u, u2) || !acb_overlaps(v, v2)) | |
58 | { | |
59 | flint_printf("FAIL: overlap\n\n"); | |
60 | flint_printf("n = %wu\n", n); | |
61 | flint_printf("a = "); acb_printd(a, 15); flint_printf("\n\n"); | |
62 | flint_printf("u = "); acb_printd(u, 15); flint_printf("\n\n"); | |
63 | flint_printf("u2 = "); acb_printd(u2, 15); flint_printf("\n\n"); | |
64 | flint_printf("v = "); acb_printd(v, 15); flint_printf("\n\n"); | |
65 | flint_printf("v2 = "); acb_printd(v2, 15); flint_printf("\n\n"); | |
66 | flint_abort(); | |
67 | } | |
68 | ||
69 | acb_set(u2, a); | |
70 | acb_rising2_ui_bs(u2, v, u2, n, prec); | |
71 | ||
72 | if (!acb_equal(u2, u)) | |
73 | { | |
74 | flint_printf("FAIL: aliasing 1\n\n"); | |
75 | flint_printf("a = "); acb_printd(a, 15); flint_printf("\n\n"); | |
76 | flint_printf("u = "); acb_printd(u, 15); flint_printf("\n\n"); | |
77 | flint_printf("u2 = "); acb_printd(u2, 15); flint_printf("\n\n"); | |
78 | flint_printf("n = %wu\n", n); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | acb_set(v2, a); | |
83 | acb_rising2_ui_bs(u, v2, v2, n, prec); | |
84 | ||
85 | if (!acb_equal(v2, v)) | |
86 | { | |
87 | flint_printf("FAIL: aliasing 2\n\n"); | |
88 | flint_printf("a = "); acb_printd(a, 15); flint_printf("\n\n"); | |
89 | flint_printf("v = "); acb_printd(v, 15); flint_printf("\n\n"); | |
90 | flint_printf("v2 = "); acb_printd(v2, 15); flint_printf("\n\n"); | |
91 | flint_printf("n = %wu\n", n); | |
92 | flint_abort(); | |
93 | } | |
94 | ||
95 | acb_clear(a); | |
96 | acb_clear(u); | |
97 | acb_clear(v); | |
98 | acb_clear(u2); | |
99 | acb_clear(v2); | |
100 | _fmpz_vec_clear(f, n + 1); | |
101 | _acb_vec_clear(g, n + 1); | |
102 | } | |
103 | ||
104 | flint_randclear(state); | |
105 | flint_cleanup(); | |
106 | flint_printf("PASS\n"); | |
107 | return EXIT_SUCCESS; | |
108 | } | |
109 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/arith.h" | |
12 | #include "acb_poly.h" | |
13 | ||
14 | int main() | |
15 | { | |
16 | slong iter; | |
17 | flint_rand_t state; | |
18 | ||
19 | flint_printf("rising2_ui_rs...."); | |
20 | fflush(stdout); | |
21 | ||
22 | flint_randinit(state); | |
23 | ||
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | acb_t a, u, v, u2, v2; | |
27 | fmpz *f; | |
28 | acb_ptr g; | |
29 | ulong n; | |
30 | slong i, prec; | |
31 | ||
32 | acb_init(a); | |
33 | acb_init(u); | |
34 | acb_init(v); | |
35 | acb_init(u2); | |
36 | acb_init(v2); | |
37 | ||
38 | acb_randtest(a, state, 1 + n_randint(state, 4000), 10); | |
39 | acb_randtest(u, state, 1 + n_randint(state, 4000), 10); | |
40 | acb_randtest(v, state, 1 + n_randint(state, 4000), 10); | |
41 | n = n_randint(state, 120); | |
42 | ||
43 | f = _fmpz_vec_init(n + 1); | |
44 | g = _acb_vec_init(n + 1); | |
45 | ||
46 | prec = 2 + n_randint(state, 4000); | |
47 | acb_rising2_ui_rs(u, v, a, n, 0, prec); | |
48 | ||
49 | arith_stirling_number_1u_vec(f, n, n + 1); | |
50 | for (i = 0; i <= n; i++) | |
51 | acb_set_fmpz(g + i, f + i); | |
52 | _acb_poly_evaluate(u2, g, n + 1, a, prec); | |
53 | ||
54 | _acb_poly_derivative(g, g, n + 1, prec); | |
55 | _acb_poly_evaluate(v2, g, n, a, prec); | |
56 | ||
57 | if (!acb_overlaps(u, u2) || !acb_overlaps(v, v2)) | |
58 | { | |
59 | flint_printf("FAIL: overlap\n\n"); | |
60 | flint_printf("n = %wu\n", n); | |
61 | flint_printf("a = "); acb_printd(a, 15); flint_printf("\n\n"); | |
62 | flint_printf("u = "); acb_printd(u, 15); flint_printf("\n\n"); | |
63 | flint_printf("u2 = "); acb_printd(u2, 15); flint_printf("\n\n"); | |
64 | flint_printf("v = "); acb_printd(v, 15); flint_printf("\n\n"); | |
65 | flint_printf("v2 = "); acb_printd(v2, 15); flint_printf("\n\n"); | |
66 | flint_abort(); | |
67 | } | |
68 | ||
69 | acb_set(u2, a); | |
70 | acb_rising2_ui_rs(u2, v, u2, n, 0, prec); | |
71 | ||
72 | if (!acb_equal(u2, u)) | |
73 | { | |
74 | flint_printf("FAIL: aliasing 1\n\n"); | |
75 | flint_printf("a = "); acb_printd(a, 15); flint_printf("\n\n"); | |
76 | flint_printf("u = "); acb_printd(u, 15); flint_printf("\n\n"); | |
77 | flint_printf("u2 = "); acb_printd(u2, 15); flint_printf("\n\n"); | |
78 | flint_printf("n = %wu\n", n); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | acb_set(v2, a); | |
83 | acb_rising2_ui_rs(u, v2, v2, n, 0, prec); | |
84 | ||
85 | if (!acb_equal(v2, v)) | |
86 | { | |
87 | flint_printf("FAIL: aliasing 2\n\n"); | |
88 | flint_printf("a = "); acb_printd(a, 15); flint_printf("\n\n"); | |
89 | flint_printf("v = "); acb_printd(v, 15); flint_printf("\n\n"); | |
90 | flint_printf("v2 = "); acb_printd(v2, 15); flint_printf("\n\n"); | |
91 | flint_printf("n = %wu\n", n); | |
92 | flint_abort(); | |
93 | } | |
94 | ||
95 | acb_clear(a); | |
96 | acb_clear(u); | |
97 | acb_clear(v); | |
98 | acb_clear(u2); | |
99 | acb_clear(v2); | |
100 | _fmpz_vec_clear(f, n + 1); | |
101 | _acb_vec_clear(g, n + 1); | |
102 | } | |
103 | ||
104 | flint_randclear(state); | |
105 | flint_cleanup(); | |
106 | flint_printf("PASS\n"); | |
107 | return EXIT_SUCCESS; | |
108 | } | |
109 |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_bs...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | /* check functional equation */ | |
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | acb_t x, xn, y, z; | |
27 | ulong n, m; | |
28 | ||
29 | acb_init(x); | |
30 | acb_init(xn); | |
31 | acb_init(y); | |
32 | acb_init(z); | |
33 | ||
34 | acb_randtest(x, state, 1 + n_randint(state, 4000), 10); | |
35 | n = n_randint(state, 40); | |
36 | m = n_randint(state, 40); | |
37 | acb_add_ui(xn, x, n, 1 + n_randint(state, 4000)); | |
38 | ||
39 | acb_rising_ui_bs(y, x, n, 2 + n_randint(state, 4000)); | |
40 | acb_rising_ui_bs(z, xn, m, 2 + n_randint(state, 4000)); | |
41 | acb_mul(y, y, z, 2 + n_randint(state, 4000)); | |
42 | ||
43 | acb_rising_ui_bs(z, x, n + m, 2 + n_randint(state, 4000)); | |
44 | ||
45 | if (!acb_overlaps(y, z)) | |
46 | { | |
47 | flint_printf("FAIL: overlap\n\n"); | |
48 | flint_printf("n = %wu\n", n); | |
49 | flint_printf("m = %wu\n", m); | |
50 | flint_printf("x = "); acb_print(x); flint_printf("\n\n"); | |
51 | flint_printf("xn = "); acb_print(xn); flint_printf("\n\n"); | |
52 | flint_printf("y = "); acb_print(y); flint_printf("\n\n"); | |
53 | flint_printf("z = "); acb_print(z); flint_printf("\n\n"); | |
54 | flint_abort(); | |
55 | } | |
56 | ||
57 | acb_clear(x); | |
58 | acb_clear(xn); | |
59 | acb_clear(y); | |
60 | acb_clear(z); | |
61 | } | |
62 | ||
63 | /* aliasing of y and x */ | |
64 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
65 | { | |
66 | acb_t x, y; | |
67 | ulong n; | |
68 | slong prec; | |
69 | ||
70 | acb_init(x); | |
71 | acb_init(y); | |
72 | ||
73 | acb_randtest(x, state, 1 + n_randint(state, 200), 10); | |
74 | acb_randtest(y, state, 1 + n_randint(state, 200), 10); | |
75 | n = n_randint(state, 100); | |
76 | ||
77 | prec = 2 + n_randint(state, 4000); | |
78 | acb_rising_ui_bs(y, x, n, prec); | |
79 | acb_rising_ui_bs(x, x, n, prec); | |
80 | ||
81 | if (!acb_equal(x, y)) | |
82 | { | |
83 | flint_printf("FAIL: aliasing\n\n"); | |
84 | flint_printf("x = "); acb_print(x); flint_printf("\n\n"); | |
85 | flint_printf("y = "); acb_print(y); flint_printf("\n\n"); | |
86 | flint_printf("n = %wu\n", n); | |
87 | flint_abort(); | |
88 | } | |
89 | ||
90 | acb_clear(x); | |
91 | acb_clear(y); | |
92 | } | |
93 | ||
94 | flint_randclear(state); | |
95 | flint_cleanup(); | |
96 | flint_printf("PASS\n"); | |
97 | return EXIT_SUCCESS; | |
98 | } |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_rec...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | /* check functional equation */ | |
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | acb_t x, xn, y, z; | |
27 | ulong n, m; | |
28 | ||
29 | acb_init(x); | |
30 | acb_init(xn); | |
31 | acb_init(y); | |
32 | acb_init(z); | |
33 | ||
34 | acb_randtest(x, state, 1 + n_randint(state, 4000), 10); | |
35 | n = n_randint(state, 80); | |
36 | m = n_randint(state, 40); | |
37 | acb_add_ui(xn, x, n, 1 + n_randint(state, 4000)); | |
38 | ||
39 | acb_rising_ui_rec(y, x, n, 2 + n_randint(state, 4000)); | |
40 | acb_rising_ui_rec(z, xn, m, 2 + n_randint(state, 4000)); | |
41 | acb_mul(y, y, z, 2 + n_randint(state, 4000)); | |
42 | ||
43 | acb_rising_ui_rec(z, x, n + m, 2 + n_randint(state, 4000)); | |
44 | ||
45 | if (!acb_overlaps(y, z)) | |
46 | { | |
47 | flint_printf("FAIL: overlap\n\n"); | |
48 | flint_printf("n = %wu\n", n); | |
49 | flint_printf("m = %wu\n", m); | |
50 | flint_printf("x = "); acb_print(x); flint_printf("\n\n"); | |
51 | flint_printf("xn = "); acb_print(xn); flint_printf("\n\n"); | |
52 | flint_printf("y = "); acb_print(y); flint_printf("\n\n"); | |
53 | flint_printf("z = "); acb_print(z); flint_printf("\n\n"); | |
54 | flint_abort(); | |
55 | } | |
56 | ||
57 | acb_clear(x); | |
58 | acb_clear(xn); | |
59 | acb_clear(y); | |
60 | acb_clear(z); | |
61 | } | |
62 | ||
63 | /* aliasing of y and x */ | |
64 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
65 | { | |
66 | acb_t x, y; | |
67 | ulong n; | |
68 | slong prec; | |
69 | ||
70 | acb_init(x); | |
71 | acb_init(y); | |
72 | ||
73 | acb_randtest(x, state, 1 + n_randint(state, 200), 10); | |
74 | acb_randtest(y, state, 1 + n_randint(state, 200), 10); | |
75 | n = n_randint(state, 100); | |
76 | ||
77 | prec = 2 + n_randint(state, 4000); | |
78 | acb_rising_ui_rec(y, x, n, prec); | |
79 | acb_rising_ui_rec(x, x, n, prec); | |
80 | ||
81 | if (!acb_equal(x, y)) | |
82 | { | |
83 | flint_printf("FAIL: aliasing\n\n"); | |
84 | flint_printf("x = "); acb_print(x); flint_printf("\n\n"); | |
85 | flint_printf("y = "); acb_print(y); flint_printf("\n\n"); | |
86 | flint_printf("n = %wu\n", n); | |
87 | flint_abort(); | |
88 | } | |
89 | ||
90 | acb_clear(x); | |
91 | acb_clear(y); | |
92 | } | |
93 | ||
94 | flint_randclear(state); | |
95 | flint_cleanup(); | |
96 | flint_printf("PASS\n"); | |
97 | return EXIT_SUCCESS; | |
98 | } |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_rs...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | /* check functional equation */ | |
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | acb_t x, xn, y, z; | |
27 | ulong n, m, step1, step2, step3; | |
28 | ||
29 | acb_init(x); | |
30 | acb_init(xn); | |
31 | acb_init(y); | |
32 | acb_init(z); | |
33 | ||
34 | acb_randtest(x, state, 1 + n_randint(state, 4000), 10); | |
35 | n = n_randint(state, 80); | |
36 | m = n_randint(state, 40); | |
37 | acb_add_ui(xn, x, n, 1 + n_randint(state, 4000)); | |
38 | ||
39 | step1 = n_randint(state, 20); | |
40 | step2 = n_randint(state, 20); | |
41 | step3 = n_randint(state, 20); | |
42 | ||
43 | acb_rising_ui_rs(y, x, n, step1, 2 + n_randint(state, 4000)); | |
44 | acb_rising_ui_rs(z, xn, m, step2, 2 + n_randint(state, 4000)); | |
45 | acb_mul(y, y, z, 2 + n_randint(state, 4000)); | |
46 | ||
47 | acb_rising_ui_rs(z, x, n + m, step3, 2 + n_randint(state, 4000)); | |
48 | ||
49 | if (!acb_overlaps(y, z)) | |
50 | { | |
51 | flint_printf("FAIL: overlap\n\n"); | |
52 | flint_printf("n = %wu\n", n); | |
53 | flint_printf("m = %wu\n", m); | |
54 | flint_printf("x = "); acb_print(x); flint_printf("\n\n"); | |
55 | flint_printf("xn = "); acb_print(xn); flint_printf("\n\n"); | |
56 | flint_printf("y = "); acb_print(y); flint_printf("\n\n"); | |
57 | flint_printf("z = "); acb_print(z); flint_printf("\n\n"); | |
58 | flint_abort(); | |
59 | } | |
60 | ||
61 | acb_clear(x); | |
62 | acb_clear(xn); | |
63 | acb_clear(y); | |
64 | acb_clear(z); | |
65 | } | |
66 | ||
67 | /* aliasing of y and x */ | |
68 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
69 | { | |
70 | acb_t x, y; | |
71 | ulong n; | |
72 | slong prec; | |
73 | ulong step; | |
74 | ||
75 | acb_init(x); | |
76 | acb_init(y); | |
77 | ||
78 | acb_randtest(x, state, 1 + n_randint(state, 200), 10); | |
79 | acb_randtest(y, state, 1 + n_randint(state, 200), 10); | |
80 | n = n_randint(state, 100); | |
81 | ||
82 | step = n_randint(state, 20); | |
83 | ||
84 | prec = 2 + n_randint(state, 4000); | |
85 | acb_rising_ui_rs(y, x, n, step, prec); | |
86 | acb_rising_ui_rs(x, x, n, step, prec); | |
87 | ||
88 | if (!acb_equal(x, y)) | |
89 | { | |
90 | flint_printf("FAIL: aliasing\n\n"); | |
91 | flint_printf("x = "); acb_print(x); flint_printf("\n\n"); | |
92 | flint_printf("y = "); acb_print(y); flint_printf("\n\n"); | |
93 | flint_printf("n = %wu\n", n); | |
94 | flint_abort(); | |
95 | } | |
96 | ||
97 | acb_clear(x); | |
98 | acb_clear(y); | |
99 | } | |
100 | ||
101 | flint_randclear(state); | |
102 | flint_cleanup(); | |
103 | flint_printf("PASS\n"); | |
104 | return EXIT_SUCCESS; | |
105 | } |
328 | 328 | { |
329 | 329 | arb_add_error_mag(acb_realref(x), err); |
330 | 330 | arb_add_error_mag(acb_imagref(x), err); |
331 | } | |
332 | ||
333 | ACB_INLINE void | |
334 | acb_add_error_arb(acb_t x, const arb_t err) | |
335 | { | |
336 | arb_add_error(acb_realref(x), err); | |
337 | arb_add_error(acb_imagref(x), err); | |
331 | 338 | } |
332 | 339 | |
333 | 340 | void acb_get_mag(mag_t z, const acb_t x); |
760 | 767 | void acb_chebyshev_u_ui(acb_t a, ulong n, const acb_t x, slong prec); |
761 | 768 | void acb_chebyshev_u2_ui(acb_t a, acb_t b, ulong n, const acb_t x, slong prec); |
762 | 769 | |
763 | void acb_rising_ui_bs(acb_t y, const acb_t x, ulong n, slong prec); | |
764 | void acb_rising_ui_rs(acb_t y, const acb_t x, ulong n, ulong m, slong prec); | |
765 | void acb_rising_ui_rec(acb_t y, const acb_t x, ulong n, slong prec); | |
766 | 770 | void acb_rising_ui(acb_t z, const acb_t x, ulong n, slong prec); |
767 | 771 | void acb_rising(acb_t z, const acb_t x, const acb_t n, slong prec); |
768 | ||
769 | void acb_rising2_ui_bs(acb_t u, acb_t v, const acb_t x, ulong n, slong prec); | |
770 | void acb_rising2_ui_rs(acb_t u, acb_t v, const acb_t x, ulong n, ulong m, slong prec); | |
771 | 772 | void acb_rising2_ui(acb_t u, acb_t v, const acb_t x, ulong n, slong prec); |
772 | 773 | |
773 | 774 | void acb_rising_ui_get_mag(mag_t bound, const acb_t s, ulong n); |
861 | 862 | } |
862 | 863 | |
863 | 864 | ACB_INLINE void |
865 | _acb_vec_swap(acb_ptr res, acb_ptr vec, slong len) | |
866 | { | |
867 | slong i; | |
868 | for (i = 0; i < len; i++) | |
869 | acb_swap(res + i, vec + i); | |
870 | } | |
871 | ||
872 | ACB_INLINE void | |
864 | 873 | _acb_vec_neg(acb_ptr res, acb_srcptr vec, slong len) |
865 | 874 | { |
866 | 875 | slong i; |
1013 | 1022 | acb_printn(const acb_t x, slong digits, ulong flags) |
1014 | 1023 | { |
1015 | 1024 | acb_fprintn(stdout, x, digits, flags); |
1025 | } | |
1026 | ||
1027 | ACB_INLINE void | |
1028 | _acb_vec_printn(acb_srcptr vec, slong len, slong ndigits, ulong flags) | |
1029 | { | |
1030 | slong i; | |
1031 | for (i = 0; i < len; i++) | |
1032 | { | |
1033 | acb_printn(vec + i, ndigits, flags); | |
1034 | if (i < len - 1) | |
1035 | flint_printf(", "); | |
1036 | } | |
1016 | 1037 | } |
1017 | 1038 | |
1018 | 1039 | void acb_randtest(acb_t z, flint_rand_t state, slong prec, slong mag_bits); |
46 | 46 | 16,997,2,1,4,1,2,1009,8,1013,2,1,4076,1021,2,1 |
47 | 47 | }; |
48 | 48 | |
49 | static __inline__ slong fdiv(slong x, slong y) | |
49 | static __inline__ slong rj_fdiv(slong x, slong y) | |
50 | 50 | { |
51 | 51 | if (x < 0) |
52 | 52 | return -1; |
90 | 90 | /* Precompute powers of E2 and E3 */ |
91 | 91 | for (m2 = 0; m2 <= NMAX / 2; m2++) |
92 | 92 | { |
93 | for (m3 = 0; m3 <= fdiv(NMAX - 2 * m2, 3); m3++) | |
93 | for (m3 = 0; m3 <= rj_fdiv(NMAX - 2 * m2, 3); m3++) | |
94 | 94 | { |
95 | 95 | slong i, j, k; |
96 | 96 | |
128 | 128 | for (m5 = m5start; m5 >= 0; m5--) |
129 | 129 | { |
130 | 130 | acb_zero(s4); |
131 | m4start = fdiv(NMAX - 5 * m5, 4); | |
131 | m4start = rj_fdiv(NMAX - 5 * m5, 4); | |
132 | 132 | if (m5 != m5start) |
133 | 133 | { |
134 | 134 | fmpz_mul_ui(c5, c5, 2 * m5 + 2); |
144 | 144 | for (m4 = m4start; m4 >= 0; m4--) |
145 | 145 | { |
146 | 146 | acb_zero(s3); |
147 | m3start = fdiv(NMAX - 5 * m5 - 4 * m4, 3); | |
147 | m3start = rj_fdiv(NMAX - 5 * m5 - 4 * m4, 3); | |
148 | 148 | if (m4 != m4start) |
149 | 149 | { |
150 | 150 | fmpz_mul_ui(c4, c4, 2 * m4 + 2); |
154 | 154 | |
155 | 155 | for (m3 = 0; m3 <= m3start; m3++) |
156 | 156 | { |
157 | m2start = fdiv(NMAX - 5 * m5 - 4 * m4 - 3 * m3, 2); | |
157 | m2start = rj_fdiv(NMAX - 5 * m5 - 4 * m4 - 3 * m3, 2); | |
158 | 158 | fmpz_set(c2, c3); |
159 | 159 | for (m2 = 0; m2 <= m2start; m2++) |
160 | 160 | { |
68 | 68 | mag_set_d(arb_radref(acb_realref(r2)), 1e-14 * fabs(testdata_pi[k][4])); |
69 | 69 | mag_set_d(arb_radref(acb_imagref(r2)), 1e-14 * fabs(testdata_pi[k][5])); |
70 | 70 | |
71 | for (prec1 = 32; prec1 <= 256; prec1 *= 2) | |
71 | for (prec1 = 32; prec1 <= (arb_test_multiplier() < 1.0 ? 64 : 256); prec1 *= 2) | |
72 | 72 | { |
73 | 73 | acb_elliptic_pi(r1, n, m, prec1 + 30); |
74 | 74 |
0 | /* | |
1 | Copyright (C) 2014, 2015, 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | #include "arb_hypgeom.h" | |
13 | ||
14 | void | |
15 | acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
16 | const acb_t z, int use_reflect, int digamma, slong prec); | |
17 | ||
18 | void acb_gamma_stirling_bound(mag_ptr err, const acb_t x, slong k0, slong knum, slong n); | |
19 | ||
20 | void | |
21 | acb_hypgeom_gamma_stirling_inner(acb_t s, const acb_t z, slong N, slong prec) | |
22 | { | |
23 | acb_t logz, t; | |
24 | mag_t err; | |
25 | ||
26 | mag_init(err); | |
27 | acb_init(t); | |
28 | acb_init(logz); | |
29 | ||
30 | acb_gamma_stirling_bound(err, z, 0, 1, N); | |
31 | ||
32 | /* t = (z-0.5)*log(z) - z + log(2*pi)/2 */ | |
33 | acb_log(logz, z, prec); | |
34 | arb_one(acb_realref(t)); | |
35 | arb_mul_2exp_si(acb_realref(t), acb_realref(t), -1); | |
36 | acb_sub(t, z, t, prec); | |
37 | acb_mul(t, logz, t, prec); | |
38 | acb_sub(t, t, z, prec); | |
39 | arb_const_log_sqrt2pi(acb_realref(logz), prec); | |
40 | arb_add(acb_realref(t), acb_realref(t), acb_realref(logz), prec); | |
41 | ||
42 | /* sum part */ | |
43 | if (prec <= 128 || (prec <= 1024 && N <= 40) || (prec <= 2048 && N <= 16)) | |
44 | acb_hypgeom_gamma_stirling_sum_horner(s, z, N, prec); | |
45 | else | |
46 | acb_hypgeom_gamma_stirling_sum_improved(s, z, N, 0, prec); | |
47 | ||
48 | acb_add(s, s, t, prec); | |
49 | acb_add_error_mag(s, err); | |
50 | ||
51 | acb_clear(t); | |
52 | acb_clear(logz); | |
53 | mag_clear(err); | |
54 | } | |
55 | ||
56 | ||
57 | void | |
58 | acb_hypgeom_gamma_stirling(acb_t y, const acb_t x, int reciprocal, slong prec) | |
59 | { | |
60 | int reflect; | |
61 | slong r, n, wp; | |
62 | acb_t t, u, v; | |
63 | double acc; | |
64 | ||
65 | wp = prec + FLINT_BIT_COUNT(prec); | |
66 | ||
67 | /* todo: for large x (if exact or accurate enough), increase precision */ | |
68 | acc = acb_rel_accuracy_bits(x); | |
69 | acc = FLINT_MAX(acc, 0); | |
70 | wp = FLINT_MIN(prec, acc + 20); | |
71 | wp = FLINT_MAX(wp, 2); | |
72 | wp = wp + FLINT_BIT_COUNT(wp); | |
73 | ||
74 | if (acc < 3) /* try to avoid divisions blowing up */ | |
75 | { | |
76 | if (arf_cmp_d(arb_midref(acb_realref(x)), -0.5) < 0) | |
77 | { | |
78 | reflect = 1; | |
79 | r = 0; | |
80 | } | |
81 | else if (arf_cmp_si(arb_midref(acb_realref(x)), 1) < 0) | |
82 | { | |
83 | reflect = 0; | |
84 | r = 1; | |
85 | } | |
86 | else | |
87 | { | |
88 | reflect = 0; | |
89 | r = 0; | |
90 | } | |
91 | ||
92 | n = 1; | |
93 | } | |
94 | else | |
95 | { | |
96 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
97 | } | |
98 | ||
99 | acb_init(t); | |
100 | acb_init(u); | |
101 | acb_init(v); | |
102 | ||
103 | if (reflect) | |
104 | { | |
105 | acb_sub_ui(t, x, 1, wp); | |
106 | acb_neg(t, t); | |
107 | acb_hypgeom_rising_ui_rec(u, t, r, wp); | |
108 | arb_const_pi(acb_realref(v), wp); | |
109 | acb_mul_arb(u, u, acb_realref(v), wp); | |
110 | acb_add_ui(t, t, r, wp); | |
111 | acb_hypgeom_gamma_stirling_inner(v, t, n, wp); | |
112 | ||
113 | if (reciprocal) | |
114 | { | |
115 | /* rgamma(x) = gamma(1-x+r) sin(pi x) / ((rf(1-x, r) * pi) */ | |
116 | acb_exp(v, v, wp); | |
117 | acb_sin_pi(t, x, wp); | |
118 | acb_mul(v, v, t, wp); | |
119 | acb_mul(y, u, v, wp); | |
120 | acb_div(y, v, u, prec); | |
121 | } | |
122 | else | |
123 | { | |
124 | /* gamma(x) = (rf(1-x, r) * pi) rgamma(1-x+r) csc(pi x) */ | |
125 | acb_neg(v, v); | |
126 | acb_exp(v, v, wp); | |
127 | acb_csc_pi(t, x, wp); | |
128 | acb_mul(v, v, t, wp); | |
129 | acb_mul(y, v, u, prec); | |
130 | } | |
131 | } | |
132 | else | |
133 | { | |
134 | acb_add_ui(t, x, r, wp); | |
135 | acb_hypgeom_gamma_stirling_inner(u, t, n, wp); | |
136 | ||
137 | if (reciprocal) | |
138 | { | |
139 | /* rgamma(x) = rf(x,r) rgamma(x+r) */ | |
140 | acb_neg(u, u); | |
141 | acb_exp(u, u, prec); | |
142 | acb_hypgeom_rising_ui_rec(v, x, r, wp); | |
143 | acb_mul(y, v, u, prec); | |
144 | } | |
145 | else | |
146 | { | |
147 | /* gamma(x) = gamma(x+r) / rf(x,r) */ | |
148 | acb_exp(u, u, prec); | |
149 | acb_hypgeom_rising_ui_rec(v, x, r, wp); | |
150 | acb_div(y, u, v, prec); | |
151 | } | |
152 | } | |
153 | ||
154 | acb_clear(t); | |
155 | acb_clear(u); | |
156 | acb_clear(v); | |
157 | } | |
158 | ||
159 | void | |
160 | acb_hypgeom_gamma(acb_t y, const acb_t x, slong prec) | |
161 | { | |
162 | if (acb_is_real(x)) | |
163 | { | |
164 | arb_hypgeom_gamma(acb_realref(y), acb_realref(x), prec); | |
165 | arb_zero(acb_imagref(y)); | |
166 | return; | |
167 | } | |
168 | ||
169 | if (acb_hypgeom_gamma_taylor(y, x, 0, prec)) | |
170 | return; | |
171 | ||
172 | acb_hypgeom_gamma_stirling(y, x, 0, prec); | |
173 | } | |
174 | ||
175 | void | |
176 | acb_hypgeom_rgamma(acb_t y, const acb_t x, slong prec) | |
177 | { | |
178 | mag_t magz; | |
179 | ||
180 | if (acb_is_real(x)) | |
181 | { | |
182 | arb_hypgeom_rgamma(acb_realref(y), acb_realref(x), prec); | |
183 | arb_zero(acb_imagref(y)); | |
184 | return; | |
185 | } | |
186 | ||
187 | if (acb_hypgeom_gamma_taylor(y, x, 1, prec)) | |
188 | return; | |
189 | ||
190 | mag_init(magz); | |
191 | acb_get_mag(magz, x); | |
192 | ||
193 | if (mag_is_inf(magz)) | |
194 | { | |
195 | acb_indeterminate(y); | |
196 | } | |
197 | else | |
198 | { | |
199 | acb_hypgeom_gamma_stirling(y, x, 1, prec); | |
200 | ||
201 | /* Todo: improved bounds computation */ | |
202 | if (!acb_is_finite(y)) | |
203 | { | |
204 | arb_t t, u, R; | |
205 | ||
206 | arb_init(R); | |
207 | arb_init(t); | |
208 | arb_init(u); | |
209 | ||
210 | arf_set_mag(arb_midref(R), magz); | |
211 | ||
212 | arb_set_d(u, 0.5); | |
213 | arb_add(u, u, R, MAG_BITS); | |
214 | arb_pow(u, R, u, MAG_BITS); | |
215 | ||
216 | arb_const_pi(t, MAG_BITS); | |
217 | arb_mul(t, t, R, MAG_BITS); | |
218 | arb_mul_2exp_si(t, t, -1); | |
219 | arb_exp(t, t, MAG_BITS); | |
220 | ||
221 | arb_mul(t, t, u, MAG_BITS); | |
222 | ||
223 | arb_get_mag(magz, t); | |
224 | ||
225 | acb_zero(y); | |
226 | acb_add_error_mag(y, magz); | |
227 | ||
228 | arb_clear(R); | |
229 | arb_clear(t); | |
230 | arb_clear(u); | |
231 | } | |
232 | } | |
233 | ||
234 | mag_clear(magz); | |
235 | } | |
236 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "acb_hypgeom.h" | |
13 | ||
14 | void arb_gamma_stirling_coeff(acb_t b, ulong k, int digamma, slong prec); | |
15 | ||
16 | void | |
17 | acb_hypgeom_gamma_stirling_sum_horner(acb_t s, const acb_t z, slong N, slong prec) | |
18 | { | |
19 | acb_t b, t, zinv, w; | |
20 | mag_t zinv_mag; | |
21 | slong n, term_mag, term_prec; | |
22 | slong * term_mags; | |
23 | ||
24 | if (N <= 1) | |
25 | { | |
26 | acb_zero(s); | |
27 | return; | |
28 | } | |
29 | ||
30 | acb_init(b); | |
31 | acb_init(t); | |
32 | acb_init(zinv); | |
33 | acb_init(w); | |
34 | mag_init(zinv_mag); | |
35 | ||
36 | acb_inv(zinv, z, prec); | |
37 | acb_mul(w, zinv, zinv, prec); | |
38 | ||
39 | acb_get_mag(zinv_mag, zinv); | |
40 | term_mags = flint_malloc(sizeof(ulong) * N); | |
41 | ||
42 | _arb_hypgeom_gamma_stirling_term_bounds(term_mags, zinv_mag, N); | |
43 | ||
44 | acb_zero(s); | |
45 | ||
46 | for (n = N - 1; n >= 1; n--) | |
47 | { | |
48 | term_mag = term_mags[n]; | |
49 | term_prec = prec + term_mag; | |
50 | term_prec = FLINT_MIN(term_prec, prec); | |
51 | term_prec = FLINT_MAX(term_prec, 10); | |
52 | ||
53 | if (prec - term_prec > 200) | |
54 | { | |
55 | acb_set_round(t, w, term_prec); | |
56 | acb_mul(s, s, t, term_prec); | |
57 | } | |
58 | else | |
59 | acb_mul(s, s, w, term_prec); | |
60 | ||
61 | arb_gamma_stirling_coeff(b, n, 0, term_prec); | |
62 | acb_add(s, s, b, term_prec); | |
63 | } | |
64 | ||
65 | acb_mul(s, s, zinv, prec); | |
66 | ||
67 | flint_free(term_mags); | |
68 | ||
69 | acb_clear(t); | |
70 | acb_clear(b); | |
71 | acb_clear(zinv); | |
72 | acb_clear(w); | |
73 | mag_clear(zinv_mag); | |
74 | } | |
75 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "acb_hypgeom.h" | |
13 | #include "bernoulli.h" | |
14 | ||
15 | /* todo: move to acb module */ | |
16 | static void | |
17 | acb_fma_ui(acb_t res, const acb_t x, ulong y, const acb_t z, slong prec) | |
18 | { | |
19 | arf_t t; | |
20 | arf_init_set_ui(t, y); /* no need to free */ | |
21 | arb_fma_arf(acb_realref(res), acb_realref(x), t, acb_realref(z), prec); | |
22 | arb_fma_arf(acb_imagref(res), acb_imagref(x), t, acb_imagref(z), prec); | |
23 | } | |
24 | ||
25 | void | |
26 | acb_hypgeom_gamma_stirling_sum_improved(acb_t s, const acb_t z, slong N, slong K, slong prec) | |
27 | { | |
28 | acb_t b, t, zinv, w, u, S2, S3, S4; | |
29 | mag_t zinv_mag, err; | |
30 | slong n, term_mag, term_prec; | |
31 | slong * term_mags; | |
32 | slong i, j, k, M; | |
33 | slong * Mk; | |
34 | acb_ptr upow, ukpow; | |
35 | slong kodd, kpow_exp, wp; | |
36 | fmpz_t kpow; | |
37 | slong m; | |
38 | ||
39 | if (N <= 1) | |
40 | { | |
41 | acb_zero(s); | |
42 | return; | |
43 | } | |
44 | ||
45 | if (N == 2) | |
46 | { | |
47 | acb_mul_ui(s, z, 12, prec); | |
48 | acb_inv(s, s, prec); | |
49 | return; | |
50 | } | |
51 | ||
52 | if (K == 0) | |
53 | { | |
54 | if (prec <= 128) | |
55 | K = 1; | |
56 | else if (prec <= 1024) | |
57 | K = 2; | |
58 | else | |
59 | { | |
60 | K = 4 + 0.1 * sqrt(FLINT_MAX(prec - 4096, 0)); | |
61 | K = FLINT_MIN(K, 100); | |
62 | } | |
63 | } | |
64 | ||
65 | acb_init(b); | |
66 | acb_init(t); | |
67 | acb_init(zinv); | |
68 | acb_init(w); | |
69 | acb_init(u); | |
70 | acb_init(S2); | |
71 | acb_init(S3); | |
72 | acb_init(S4); | |
73 | mag_init(zinv_mag); | |
74 | mag_init(err); | |
75 | ||
76 | acb_inv(zinv, z, prec); | |
77 | acb_mul(w, zinv, zinv, prec); | |
78 | ||
79 | acb_get_mag(zinv_mag, zinv); | |
80 | ||
81 | term_mags = flint_malloc(sizeof(ulong) * (N + 1)); | |
82 | ||
83 | /* Avoid possible overflow. (This case is not interesting to handle well, | |
84 | but we need to handle it.) */ | |
85 | if (mag_cmp_2exp_si(zinv_mag, 10) > 0) | |
86 | K = 1; | |
87 | ||
88 | /* Avoid possible underflow. */ | |
89 | if (mag_cmp_2exp_si(zinv_mag, -100000) < 0) | |
90 | mag_set_ui_2exp_si(zinv_mag, 1, -100000); | |
91 | ||
92 | _arb_hypgeom_gamma_stirling_term_bounds(term_mags, zinv_mag, N + 1); | |
93 | ||
94 | /* We will assume below that term_mags is nonincreasing */ | |
95 | for (n = N - 2; n >= 1; n--) | |
96 | { | |
97 | if (term_mags[n] < term_mags[n + 1]) | |
98 | term_mags[n] = term_mags[n + 1]; | |
99 | } | |
100 | ||
101 | Mk = NULL; | |
102 | ||
103 | if (K > 1) | |
104 | { | |
105 | Mk = flint_malloc(sizeof(slong) * (K + 1)); | |
106 | Mk[0] = Mk[1] = N; | |
107 | ||
108 | for (k = 2; k <= K; k++) | |
109 | { | |
110 | double log2_k; | |
111 | ||
112 | Mk[k] = N; | |
113 | ||
114 | log2_k = log(k) * (1.0 / 0.693147180559945309); | |
115 | ||
116 | while (Mk[k] > 2) | |
117 | { | |
118 | slong err, Mnew; | |
119 | ||
120 | Mnew = Mk[k] - 1; | |
121 | err = term_mags[Mnew] - log2_k * (2 * Mnew) + FLINT_BIT_COUNT(N - Mnew); | |
122 | ||
123 | if (err < -prec) | |
124 | Mk[k] = Mnew; | |
125 | else | |
126 | break; | |
127 | } | |
128 | } | |
129 | ||
130 | /* We will assume that Mk is nonincreasing. */ | |
131 | for (k = 2; k <= K; k++) | |
132 | { | |
133 | if (Mk[k] > Mk[k - 1]) | |
134 | Mk[k] = Mk[k - 1]; | |
135 | } | |
136 | ||
137 | while (K >= 2 && Mk[K] == Mk[K - 1]) | |
138 | K--; | |
139 | ||
140 | M = Mk[K]; | |
141 | ||
142 | mag_hurwitz_zeta_uiui(err, 2 * M, K); | |
143 | mag_mul_ui(err, err, N - M); | |
144 | mag_mul_2exp_si(err, err, term_mags[M]); | |
145 | ||
146 | for (k = 1; k < K; k++) | |
147 | { | |
148 | mag_t t; | |
149 | mag_init(t); | |
150 | mag_set_ui_lower(t, k); | |
151 | mag_inv(t, t); | |
152 | mag_pow_ui(t, t, 2 * Mk[k]); | |
153 | mag_mul_ui(t, t, N - Mk[k]); | |
154 | mag_mul_2exp_si(t, t, term_mags[Mk[k]]); | |
155 | mag_add(err, err, t); | |
156 | mag_clear(t); | |
157 | } | |
158 | } | |
159 | else | |
160 | { | |
161 | M = N; | |
162 | } | |
163 | ||
164 | m = sqrt(N - M); | |
165 | m = FLINT_MAX(m, 1); | |
166 | ||
167 | /* S3 precision */ | |
168 | wp = prec + term_mags[M]; | |
169 | wp = FLINT_MIN(wp, prec); | |
170 | wp = FLINT_MAX(wp, 10); | |
171 | ||
172 | acb_zero(S3); | |
173 | ||
174 | /* todo: could avoid one mul + div with precomputation here */ | |
175 | /* u = -1 / (2 pi z)^2 */ | |
176 | acb_const_pi(u, wp); | |
177 | acb_mul(u, u, z, wp); | |
178 | acb_mul_2exp_si(u, u, 1); | |
179 | acb_mul(u, u, u, wp); | |
180 | acb_inv(u, u, wp); | |
181 | acb_neg(u, u); | |
182 | ||
183 | fmpz_init(kpow); | |
184 | upow = _acb_vec_init(m + 1); | |
185 | ukpow = _acb_vec_init(m + 1); | |
186 | ||
187 | _acb_vec_set_powers(upow, u, m + 1, wp); | |
188 | ||
189 | for (kodd = 1; kodd < K; kodd += 2) | |
190 | { | |
191 | for (k = kodd; k < K; k *= 2) | |
192 | { | |
193 | if (k == 1) | |
194 | { | |
195 | _acb_vec_set(ukpow, upow, m + 1); | |
196 | fmpz_one(kpow); | |
197 | kpow_exp = 0; | |
198 | } | |
199 | else if (k == kodd) | |
200 | { | |
201 | acb_set(ukpow + 0, upow + 0); | |
202 | for (j = 1; j <= FLINT_MIN(Mk[k] - M - 1, m); j++) | |
203 | { | |
204 | if (j == 1) | |
205 | fmpz_set_ui(kpow, k * k); | |
206 | else | |
207 | fmpz_mul_ui(kpow, kpow, k * k); | |
208 | acb_div_fmpz(ukpow + j, upow + j, kpow, wp); | |
209 | } | |
210 | ||
211 | /* set kpow = k^(2M) */ | |
212 | fmpz_ui_pow_ui(kpow, k * k, M); | |
213 | kpow_exp = 0; | |
214 | } | |
215 | else | |
216 | { | |
217 | /* compute x / k^(2j) given x / (k/2)^(2j) */ | |
218 | for (j = 1; j <= FLINT_MIN(Mk[k] - M - 1, m); j++) | |
219 | acb_mul_2exp_si(ukpow + j, ukpow + j, -2 * j); | |
220 | kpow_exp += 2 * M; | |
221 | } | |
222 | ||
223 | acb_zero(S4); | |
224 | ||
225 | for (n = Mk[k] - 1; n >= M; n--) | |
226 | { | |
227 | i = n - M; | |
228 | ||
229 | term_prec = prec + term_mags[n]; | |
230 | term_prec = FLINT_MIN(wp, prec); | |
231 | term_prec = FLINT_MAX(term_prec, 10); | |
232 | ||
233 | /* note: set_round makes small difference here */ | |
234 | acb_fma_ui(S4, S4, (2 * n) * (2 * n - 1), ukpow + i % m, term_prec); | |
235 | ||
236 | if (i != 0 && i % m == 0) | |
237 | { | |
238 | /* note: set_round makes small difference here */ | |
239 | acb_mul(S4, S4, ukpow + m, term_prec); | |
240 | } | |
241 | } | |
242 | ||
243 | /* divide by k^(2M) */ | |
244 | if (k != 1) | |
245 | { | |
246 | if (!fmpz_is_one(kpow)) | |
247 | acb_div_fmpz(S4, S4, kpow, wp); | |
248 | ||
249 | acb_mul_2exp_si(S4, S4, -kpow_exp); | |
250 | } | |
251 | ||
252 | acb_add(S3, S3, S4, wp); | |
253 | } | |
254 | } | |
255 | ||
256 | /* multiply by -2 (2M-2)! u^M z */ | |
257 | fmpz_fac_ui(kpow, 2 * M - 2); | |
258 | acb_mul_fmpz(S3, S3, kpow, wp); | |
259 | acb_pow_ui(u, u, M, wp); | |
260 | acb_mul(S3, S3, u, wp); | |
261 | acb_set_round(t, z, wp); | |
262 | acb_mul(S3, S3, t, wp); | |
263 | acb_mul_2exp_si(S3, S3, 1); | |
264 | acb_neg(S3, S3); | |
265 | ||
266 | acb_add_error_mag(S3, err); | |
267 | ||
268 | _acb_vec_clear(upow, m + 1); | |
269 | _acb_vec_clear(ukpow, m + 1); | |
270 | fmpz_clear(kpow); | |
271 | ||
272 | acb_zero(S2); | |
273 | ||
274 | m = sqrt(M); | |
275 | upow = _acb_vec_init(m + 1); | |
276 | _acb_vec_set_powers(upow, w, m + 1, prec); | |
277 | ||
278 | BERNOULLI_ENSURE_CACHED(2 * M - 2); | |
279 | ||
280 | { | |
281 | fmpz_t d, e, f, g, h; | |
282 | fmpz q[4]; | |
283 | ||
284 | fmpz_init(d); | |
285 | fmpz_init(e); | |
286 | fmpz_init(f); | |
287 | fmpz_init(g); | |
288 | fmpz_init(h); | |
289 | ||
290 | fmpz_init(q); | |
291 | fmpz_init(q + 1); | |
292 | fmpz_init(q + 2); | |
293 | fmpz_init(q + 3); | |
294 | ||
295 | for (n = M - 1; n >= 1; n--) | |
296 | { | |
297 | i = n - 1; | |
298 | ||
299 | if (i >= 4 && i % m >= 3 && prec >= 512 && prec <= 4096) | |
300 | { | |
301 | term_mag = term_mags[n - 3]; | |
302 | term_prec = prec + term_mag; | |
303 | term_prec = FLINT_MIN(term_prec, prec); | |
304 | term_prec = FLINT_MAX(term_prec, 10); | |
305 | ||
306 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * (n - 0)), 2 * (n - 0) * (2 * (n - 0) - 1)); | |
307 | fmpz_mul_ui(e, fmpq_denref(bernoulli_cache + 2 * (n - 1)), 2 * (n - 1) * (2 * (n - 1) - 1)); | |
308 | fmpz_mul_ui(g, fmpq_denref(bernoulli_cache + 2 * (n - 2)), 2 * (n - 2) * (2 * (n - 2) - 1)); | |
309 | fmpz_mul_ui(h, fmpq_denref(bernoulli_cache + 2 * (n - 3)), 2 * (n - 3) * (2 * (n - 3) - 1)); | |
310 | ||
311 | /* q3 = egh q2 = dgh q1 = deh q0 = deg d = degh */ | |
312 | fmpz_mul(q + 3, e, g); | |
313 | fmpz_mul(q + 0, q + 3, d); | |
314 | fmpz_mul(q + 3, q + 3, h); | |
315 | fmpz_mul(q + 2, d, h); | |
316 | fmpz_mul(q + 1, q + 2, e); | |
317 | fmpz_mul(q + 2, q + 2, g); | |
318 | fmpz_mul(d, q + 3, d); | |
319 | ||
320 | fmpz_mul(q + 3, q + 3, fmpq_numref(bernoulli_cache + 2 * (n - 0))); | |
321 | fmpz_mul(q + 2, q + 2, fmpq_numref(bernoulli_cache + 2 * (n - 1))); | |
322 | fmpz_mul(q + 1, q + 1, fmpq_numref(bernoulli_cache + 2 * (n - 2))); | |
323 | fmpz_mul(q + 0, q + 0, fmpq_numref(bernoulli_cache + 2 * (n - 3))); | |
324 | ||
325 | acb_dot_fmpz(t, NULL, 0, upow + i % m - 3, 1, q, 1, 4, term_prec); | |
326 | acb_div_fmpz(t, t, d, term_prec); | |
327 | acb_add(S2, S2, t, term_prec); | |
328 | ||
329 | n -= 3; | |
330 | i -= 3; | |
331 | } | |
332 | else if (i >= 3 && i % m >= 2) | |
333 | { | |
334 | term_mag = term_mags[n - 2]; | |
335 | term_prec = prec + term_mag; | |
336 | term_prec = FLINT_MIN(term_prec, prec); | |
337 | term_prec = FLINT_MAX(term_prec, 10); | |
338 | ||
339 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * (n - 0)), 2 * (n - 0) * (2 * (n - 0) - 1)); | |
340 | fmpz_mul_ui(e, fmpq_denref(bernoulli_cache + 2 * (n - 1)), 2 * (n - 1) * (2 * (n - 1) - 1)); | |
341 | fmpz_mul_ui(g, fmpq_denref(bernoulli_cache + 2 * (n - 2)), 2 * (n - 2) * (2 * (n - 2) - 1)); | |
342 | ||
343 | fmpz_mul(q + 2, e, g); | |
344 | fmpz_mul(q + 2, q + 2, fmpq_numref(bernoulli_cache + 2 * (n - 0))); | |
345 | fmpz_mul(q + 1, d, g); | |
346 | fmpz_mul(q + 1, q + 1, fmpq_numref(bernoulli_cache + 2 * (n - 1))); | |
347 | fmpz_mul(q + 0, d, e); | |
348 | fmpz_mul(d, q + 0, g); | |
349 | fmpz_mul(q + 0, q + 0, fmpq_numref(bernoulli_cache + 2 * (n - 2))); | |
350 | ||
351 | acb_dot_fmpz(t, NULL, 0, upow + i % m - 2, 1, q, 1, 3, term_prec); | |
352 | acb_div_fmpz(t, t, d, term_prec); | |
353 | acb_add(S2, S2, t, term_prec); | |
354 | ||
355 | n -= 2; | |
356 | i -= 2; | |
357 | } | |
358 | else if (i >= 1 && i % m >= 1) | |
359 | { | |
360 | term_mag = term_mags[n - 1]; | |
361 | term_prec = prec + term_mag; | |
362 | term_prec = FLINT_MIN(term_prec, prec); | |
363 | term_prec = FLINT_MAX(term_prec, 10); | |
364 | ||
365 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * (n - 0)), 2 * (n - 0) * (2 * (n - 0) - 1)); | |
366 | fmpz_mul_ui(e, fmpq_denref(bernoulli_cache + 2 * (n - 1)), 2 * (n - 1) * (2 * (n - 1) - 1)); | |
367 | ||
368 | fmpz_mul(f, fmpq_numref(bernoulli_cache + 2 * (n - 0)), e); | |
369 | acb_set_round(u, upow + i % m, term_prec); | |
370 | acb_mul_fmpz(t, u, f, term_prec); /* todo: output-sensitive mul */ | |
371 | fmpz_mul(f, fmpq_numref(bernoulli_cache + 2 * (n - 1)), d); | |
372 | acb_set_round(u, upow + i % m - 1, term_prec); | |
373 | acb_mul_fmpz(u, u, f, term_prec); /* todo: output-sensitive mul */ | |
374 | acb_add(t, t, u, term_prec); | |
375 | ||
376 | fmpz_mul(d, d, e); | |
377 | acb_div_fmpz(t, t, d, term_prec); | |
378 | acb_add(S2, S2, t, term_prec); | |
379 | ||
380 | n--; | |
381 | i--; | |
382 | } | |
383 | else | |
384 | { | |
385 | term_mag = term_mags[n]; | |
386 | term_prec = prec + term_mag; | |
387 | term_prec = FLINT_MIN(term_prec, prec); | |
388 | term_prec = FLINT_MAX(term_prec, 10); | |
389 | ||
390 | acb_set_round(u, upow + i % m, term_prec); | |
391 | acb_mul_fmpz(t, u, fmpq_numref(bernoulli_cache + 2 * n), term_prec); /* todo: output-sensitive mul */ | |
392 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * n), 2 * n * (2 * n - 1)); | |
393 | acb_div_fmpz(t, t, d, term_prec); | |
394 | ||
395 | acb_add(S2, S2, t, term_prec); | |
396 | } | |
397 | ||
398 | if (i != 0 && i % m == 0) | |
399 | { | |
400 | acb_set_round(u, upow + m, term_prec); /* todo: output-sensitive mul */ | |
401 | acb_mul(S2, S2, u, term_prec); | |
402 | } | |
403 | } | |
404 | ||
405 | fmpz_clear(q); | |
406 | fmpz_clear(q + 1); | |
407 | fmpz_clear(q + 2); | |
408 | fmpz_clear(q + 3); | |
409 | ||
410 | fmpz_clear(d); | |
411 | fmpz_clear(e); | |
412 | fmpz_clear(f); | |
413 | fmpz_clear(g); | |
414 | fmpz_clear(h); | |
415 | } | |
416 | ||
417 | _acb_vec_clear(upow, m + 1); | |
418 | ||
419 | acb_mul(S2, S2, zinv, prec); | |
420 | acb_add(s, S2, S3, prec); | |
421 | ||
422 | flint_free(term_mags); | |
423 | ||
424 | if (Mk != NULL) | |
425 | flint_free(Mk); | |
426 | ||
427 | acb_clear(b); | |
428 | acb_clear(t); | |
429 | acb_clear(zinv); | |
430 | acb_clear(w); | |
431 | acb_clear(u); | |
432 | acb_clear(S2); | |
433 | acb_clear(S3); | |
434 | acb_clear(S4); | |
435 | mag_clear(zinv_mag); | |
436 | mag_clear(err); | |
437 | } | |
438 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "acb_hypgeom.h" | |
13 | ||
14 | static void | |
15 | evaluate_rect(acb_t res, const short * term_prec, slong len, const acb_t x, slong prec) | |
16 | { | |
17 | slong i, j, m, r, n1, n2; | |
18 | acb_ptr xs; | |
19 | acb_t s, t; | |
20 | arb_struct c[17]; | |
21 | ||
22 | m = n_sqrt(len) + 1; | |
23 | m = FLINT_MIN(m, 16); | |
24 | r = (len + m - 1) / m; | |
25 | ||
26 | xs = _acb_vec_init(m + 1); | |
27 | acb_init(s); | |
28 | acb_init(t); | |
29 | _acb_vec_set_powers(xs, x, m + 1, prec); | |
30 | ||
31 | acb_zero(res); | |
32 | ||
33 | for (i = r - 1; i >= 0; i--) | |
34 | { | |
35 | n1 = m * i; | |
36 | n2 = FLINT_MIN(len, n1 + m); | |
37 | ||
38 | for (j = n1; j < n2; j++) | |
39 | { | |
40 | if (j == 0) | |
41 | { | |
42 | arb_init(c); | |
43 | arb_one(c); | |
44 | } | |
45 | else | |
46 | { | |
47 | if (!_arb_hypgeom_gamma_coeff_shallow(arb_midref(c + j - n1), arb_radref(c + j - n1), j, term_prec[j])) | |
48 | flint_abort(); | |
49 | } | |
50 | } | |
51 | ||
52 | arb_dot(acb_realref(s), NULL, 0, acb_realref(xs), 2, c, 1, n2 - n1, prec); | |
53 | arb_dot(acb_imagref(s), NULL, 0, acb_imagref(xs), 2, c, 1, n2 - n1, prec); | |
54 | ||
55 | #if 0 | |
56 | acb_set_round(t, xs + m, term_prec[n1]); | |
57 | acb_mul(res, res, t, term_prec[n1]); | |
58 | acb_add(res, res, s, term_prec[n1]); | |
59 | #else | |
60 | acb_mul(res, res, xs + m, term_prec[n1]); | |
61 | acb_add(res, res, s, term_prec[n1]); | |
62 | #endif | |
63 | } | |
64 | ||
65 | _acb_vec_clear(xs, m + 1); | |
66 | acb_clear(s); | |
67 | acb_clear(t); | |
68 | } | |
69 | ||
70 | /* Bound requires: |u| <= 20, N <= 10000, N != (1443, 2005, 9891). */ | |
71 | static void | |
72 | error_bound(mag_t err, const acb_t u, slong N) | |
73 | { | |
74 | mag_t t; | |
75 | mag_init(t); | |
76 | ||
77 | acb_get_mag(t, u); | |
78 | ||
79 | if (N >= 1443 || mag_cmp_2exp_si(t, 4) > 0) | |
80 | { | |
81 | mag_inf(err); | |
82 | } | |
83 | else | |
84 | { | |
85 | mag_pow_ui(err, t, N); | |
86 | mag_mul_2exp_si(err, err, arb_hypgeom_gamma_coeffs[N].exp); | |
87 | ||
88 | if (mag_cmp_2exp_si(t, -1) > 0) | |
89 | mag_mul(err, err, t); | |
90 | else | |
91 | mag_mul_2exp_si(err, err, -1); | |
92 | ||
93 | mag_mul_2exp_si(err, err, 3); | |
94 | ||
95 | if (mag_cmp_2exp_si(err, -8) > 0) | |
96 | mag_inf(err); | |
97 | } | |
98 | ||
99 | mag_clear(t); | |
100 | } | |
101 | ||
102 | static double | |
103 | want_taylor(double x, double y, slong prec) | |
104 | { | |
105 | if (y < 0.0) y = -y; | |
106 | if (x < 0.0) x = -x; | |
107 | ||
108 | if ((prec < 128 && y > 4.0) || (prec < 256 && y > 5.0) || | |
109 | (prec < 512 && y > 8.0) || (prec < 1024 && y > 9.0) || y > 10.0) | |
110 | { | |
111 | return 0; | |
112 | } | |
113 | ||
114 | if (x * (1.0 + 0.75 * y) > 8 + 0.15 * prec) | |
115 | { | |
116 | return 0; | |
117 | } | |
118 | ||
119 | return 1; | |
120 | } | |
121 | ||
122 | int | |
123 | acb_hypgeom_gamma_taylor(acb_t res, const acb_t z, int reciprocal, slong prec) | |
124 | { | |
125 | acb_t s, u; | |
126 | int success; | |
127 | double dua, dub, du2, log2u; | |
128 | slong i, r, n, wp, tail_bound, goal; | |
129 | short term_prec[ARB_HYPGEOM_GAMMA_TAB_NUM]; | |
130 | mag_t err; | |
131 | ||
132 | if (!acb_is_finite(z) || | |
133 | arf_cmp_2exp_si(arb_midref(acb_imagref(z)), 4) >= 0 || | |
134 | arf_cmp_2exp_si(arb_midref(acb_realref(z)), 10) >= 0) | |
135 | { | |
136 | return 0; | |
137 | } | |
138 | ||
139 | dua = arf_get_d(arb_midref(acb_realref(z)), ARF_RND_UP); | |
140 | dub = arf_get_d(arb_midref(acb_imagref(z)), ARF_RND_UP); | |
141 | dub = fabs(dub); | |
142 | ||
143 | if (!want_taylor(dua, dub, prec)) | |
144 | return 0; | |
145 | ||
146 | if (dua >= 0.0) | |
147 | r = (slong) (dua + 0.5); | |
148 | else | |
149 | r = -(slong) (-dua + 0.5); | |
150 | ||
151 | acb_init(s); | |
152 | acb_init(u); | |
153 | mag_init(err); | |
154 | ||
155 | success = 0; | |
156 | ||
157 | /* Argument reduction: u = z - r */ | |
158 | acb_sub_si(u, z, r, 2 * prec + 10); | |
159 | dua -= r; | |
160 | ||
161 | goal = acb_rel_accuracy_bits(u); | |
162 | ||
163 | /* not designed for wide intervals (yet) */ | |
164 | if (goal < 8) | |
165 | { | |
166 | success = 0; | |
167 | goto cleanup; | |
168 | } | |
169 | ||
170 | goal = FLINT_MIN(goal, prec - MAG_BITS) + MAG_BITS; | |
171 | goal = FLINT_MAX(goal, 5); | |
172 | goal = goal + 5; | |
173 | wp = goal + 4 + FLINT_BIT_COUNT(FLINT_ABS(r)); | |
174 | ||
175 | if (wp > ARB_HYPGEOM_GAMMA_TAB_PREC) | |
176 | { | |
177 | success = 0; | |
178 | goto cleanup; | |
179 | } | |
180 | ||
181 | if (!want_taylor(r, dub, goal)) | |
182 | { | |
183 | success = 0; | |
184 | goto cleanup; | |
185 | } | |
186 | ||
187 | du2 = dua * dua + dub * dub; | |
188 | ||
189 | if (du2 > 1e-8) | |
190 | { | |
191 | log2u = 0.5 * mag_d_log_upper_bound(du2) * 1.4426950408889634074 * (1 + 1e-14); | |
192 | } | |
193 | else | |
194 | { | |
195 | slong aexp, bexp; | |
196 | ||
197 | aexp = arf_cmpabs_2exp_si(arb_midref(acb_realref(u)), -wp) >= 0 ? ARF_EXP(arb_midref(acb_realref(u))) : -wp; | |
198 | bexp = arf_cmpabs_2exp_si(arb_midref(acb_imagref(u)), -wp) >= 0 ? ARF_EXP(arb_midref(acb_imagref(u))) : -wp; | |
199 | log2u = FLINT_MAX(aexp, bexp) + 1; | |
200 | } | |
201 | ||
202 | term_prec[0] = wp; | |
203 | n = 0; | |
204 | ||
205 | for (i = 1; i < ARB_HYPGEOM_GAMMA_TAB_NUM; i++) | |
206 | { | |
207 | tail_bound = arb_hypgeom_gamma_coeffs[i].exp + i * log2u + 5; | |
208 | ||
209 | if (tail_bound <= -goal) | |
210 | { | |
211 | n = i; | |
212 | break; | |
213 | } | |
214 | ||
215 | term_prec[i] = FLINT_MIN(FLINT_MAX(wp + tail_bound, 2), wp); | |
216 | ||
217 | if (term_prec[i] > arb_hypgeom_gamma_coeffs[i].nlimbs * FLINT_BITS) | |
218 | { | |
219 | success = 0; | |
220 | goto cleanup; | |
221 | } | |
222 | } | |
223 | ||
224 | if (n != 0) | |
225 | error_bound(err, u, n); | |
226 | ||
227 | if (n == 0 || mag_is_inf(err)) | |
228 | { | |
229 | success = 0; | |
230 | goto cleanup; | |
231 | } | |
232 | ||
233 | evaluate_rect(s, term_prec, n, u, wp); | |
234 | acb_add_error_mag(s, err); | |
235 | ||
236 | if (r == 0 || r == 1) | |
237 | { | |
238 | if (r == 0) | |
239 | acb_mul(s, s, u, wp); | |
240 | ||
241 | if (reciprocal) | |
242 | { | |
243 | acb_set_round(res, s, prec); | |
244 | } | |
245 | else | |
246 | { | |
247 | acb_one(u); | |
248 | acb_div(res, u, s, prec); | |
249 | } | |
250 | } | |
251 | else if (r >= 2) | |
252 | { | |
253 | acb_add_ui(u, u, 1, wp); | |
254 | acb_hypgeom_rising_ui_rec(u, u, r - 1, wp); | |
255 | ||
256 | if (reciprocal) | |
257 | acb_div(res, s, u, prec); | |
258 | else | |
259 | acb_div(res, u, s, prec); | |
260 | } | |
261 | else | |
262 | { | |
263 | /* gamma(x) = (-1)^r / (rgamma(1+x-r)*rf(1+r-x,-r)*(x-r)) */ | |
264 | /* 1/gamma(x) = (-1)^r * rgamma(1+x-r) * rf(1+r-x,-r) * (x-r) */ | |
265 | ||
266 | acb_neg(res, z); | |
267 | acb_add_si(res, res, 1 + r, wp); | |
268 | acb_hypgeom_rising_ui_rec(res, res, -r, wp); | |
269 | acb_mul(u, res, u, wp); | |
270 | ||
271 | if (reciprocal) | |
272 | { | |
273 | acb_mul(res, s, u, prec); | |
274 | } | |
275 | else | |
276 | { | |
277 | acb_mul(u, s, u, wp); | |
278 | acb_inv(res, u, prec); | |
279 | } | |
280 | ||
281 | if (r % 2) | |
282 | acb_neg(res, res); | |
283 | } | |
284 | ||
285 | success = 1; | |
286 | ||
287 | cleanup: | |
288 | acb_clear(s); | |
289 | acb_clear(u); | |
290 | mag_clear(err); | |
291 | ||
292 | return success; | |
293 | } | |
294 |
0 | /* | |
1 | Copyright (C) 2014, 2015, 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | #include "arb_hypgeom.h" | |
13 | ||
14 | void acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
15 | const acb_t z, int use_reflect, int digamma, slong prec); | |
16 | ||
17 | void acb_hypgeom_gamma_stirling_inner(acb_t s, const acb_t z, slong N, slong prec); | |
18 | ||
19 | static double | |
20 | want_taylor(double x, double y, slong prec) | |
21 | { | |
22 | if (y < 0.0) y = -y; | |
23 | if (x < 0.0) x = -2.0 * x; | |
24 | ||
25 | if ((prec < 128 && y > 4.0) || (prec < 256 && y > 5.0) || | |
26 | (prec < 512 && y > 8.0) || (prec < 1024 && y > 9.0) || y > 10.0) | |
27 | { | |
28 | return 0; | |
29 | } | |
30 | ||
31 | if (x * (1.0 + 0.75 * y) > 8 + 0.15 * prec) | |
32 | { | |
33 | return 0; | |
34 | } | |
35 | ||
36 | return 1; | |
37 | } | |
38 | ||
39 | /* Linear fit on [0.5, 1.5] for | |
40 | lambda x: findroot(lambda y: im(loggamma(x+1j*y)) - (n+0.5)*pi */ | |
41 | ||
42 | static const double Atab[] = { | |
43 | 4.5835631239879990091, | |
44 | 6.4037921417161376741, | |
45 | 7.9938623618272375768, | |
46 | 9.4449131928216797873, | |
47 | 10.802608819487725856, | |
48 | 12.0918817314347272, | |
49 | }; | |
50 | ||
51 | static const double Btab[] = { | |
52 | -1.1432582881376479127, | |
53 | -0.86248117216701645437, | |
54 | -0.75778990135448922722, | |
55 | -0.69734688055939976228, | |
56 | -0.65626499937495627271, | |
57 | -0.62578331900739100617, | |
58 | }; | |
59 | ||
60 | void | |
61 | _arb_const_log_pi(arb_t t, slong prec) | |
62 | { | |
63 | arb_const_pi(t, prec + 2); | |
64 | arb_log(t, t, prec); | |
65 | } | |
66 | ||
67 | ARB_DEF_CACHED_CONSTANT(arb_const_log_pi, _arb_const_log_pi) | |
68 | ||
69 | int | |
70 | acb_hypgeom_lgamma_taylor(acb_t res, const acb_t z, slong prec) | |
71 | { | |
72 | double x, y, acc; | |
73 | slong k, r, wp; | |
74 | acb_t t, u; | |
75 | int reflect; | |
76 | ||
77 | /* Assume xerr, yerr <= 1/16 */ | |
78 | if (mag_cmp_2exp_si(arb_radref(acb_realref(z)), -4) > 0) | |
79 | return 0; | |
80 | ||
81 | if (mag_cmp_2exp_si(arb_radref(acb_imagref(z)), -4) > 0) | |
82 | return 0; | |
83 | ||
84 | acc = acb_rel_accuracy_bits(z); | |
85 | acc = FLINT_MAX(acc, 0); | |
86 | wp = FLINT_MIN(prec, acc + 20); | |
87 | wp = FLINT_MAX(wp, 2); | |
88 | ||
89 | /* x, y plus eventual rounding error */ | |
90 | x = arf_get_d(arb_midref(acb_realref(z)), ARF_RND_NEAR); | |
91 | y = arf_get_d(arb_midref(acb_imagref(z)), ARF_RND_NEAR); | |
92 | ||
93 | if (!want_taylor(x, y, wp)) | |
94 | return 0; | |
95 | ||
96 | acb_init(t); | |
97 | acb_init(u); | |
98 | ||
99 | /* Reduce real part to (approximately) [0.5, 1.5]. */ | |
100 | r = floor(x - 0.5); | |
101 | ||
102 | /* Reflection formula is slower but improves accuracy. */ | |
103 | reflect = (x < -3.0); | |
104 | ||
105 | if (reflect) | |
106 | { | |
107 | acb_neg(u, z); | |
108 | acb_add_si(u, u, 2 + r, 2 * prec + 10); | |
109 | x = 2.0 + r - x; | |
110 | y = -y; | |
111 | } | |
112 | else | |
113 | { | |
114 | acb_sub_si(u, z, r, 2 * prec + 10); | |
115 | x = x - r; | |
116 | } | |
117 | ||
118 | for (k = 0; k < 6; k++) | |
119 | { | |
120 | if (fabs(y) <= Atab[k] + Btab[k] * x) | |
121 | { | |
122 | if (!acb_hypgeom_gamma_taylor(t, u, 1, wp)) | |
123 | { | |
124 | acb_clear(t); | |
125 | acb_clear(u); | |
126 | return 0; | |
127 | } | |
128 | ||
129 | if (k % 2 == 0) | |
130 | { | |
131 | acb_log(t, t, wp); | |
132 | acb_neg(t, t); | |
133 | } | |
134 | else | |
135 | { | |
136 | acb_neg(t, t); | |
137 | acb_log(t, t, wp); | |
138 | acb_neg(t, t); | |
139 | } | |
140 | ||
141 | if (k != 0) | |
142 | { | |
143 | arb_t pi; | |
144 | arb_init(pi); | |
145 | arb_const_pi(pi, wp); | |
146 | arb_addmul_si(acb_imagref(t), pi, (y > 0) ? k : -k, wp); | |
147 | arb_clear(pi); | |
148 | } | |
149 | ||
150 | if (reflect) | |
151 | { | |
152 | acb_t v; | |
153 | acb_init(v); | |
154 | ||
155 | /* loggamma(x) = log(pi) - lsin(x) - loggamma(2+r-x) - logrf(2+r-x, -r-1) */ | |
156 | ||
157 | acb_hypgeom_log_rising_ui(v, u, -r-1, wp); | |
158 | acb_log_sin_pi(res, z, wp); | |
159 | acb_add(res, res, v, wp); | |
160 | acb_add(res, res, t, wp); | |
161 | acb_neg(res, res); | |
162 | ||
163 | arb_const_log_pi(acb_realref(t), wp); | |
164 | arb_zero(acb_imagref(t)); | |
165 | acb_add(res, res, t, prec); | |
166 | ||
167 | acb_clear(v); | |
168 | } | |
169 | else if (r == 0) | |
170 | { | |
171 | acb_set_round(res, t, prec); | |
172 | } | |
173 | else if (r > 0) | |
174 | { | |
175 | acb_hypgeom_log_rising_ui(res, u, r, wp); | |
176 | acb_add(res, res, t, prec); | |
177 | } | |
178 | else | |
179 | { | |
180 | acb_hypgeom_log_rising_ui(res, z, -r, wp); | |
181 | acb_sub(res, t, res, prec); | |
182 | } | |
183 | ||
184 | acb_clear(t); | |
185 | acb_clear(u); | |
186 | return 1; | |
187 | } | |
188 | } | |
189 | ||
190 | acb_clear(t); | |
191 | acb_clear(u); | |
192 | return 0; | |
193 | } | |
194 | ||
195 | void | |
196 | acb_hypgeom_lgamma(acb_t y, const acb_t x, slong prec) | |
197 | { | |
198 | int reflect; | |
199 | slong r, n, wp; | |
200 | acb_t t, u, v; | |
201 | double acc; | |
202 | ||
203 | if (acb_is_real(x) && arb_is_positive(acb_realref(x))) | |
204 | { | |
205 | arb_hypgeom_lgamma(acb_realref(y), acb_realref(x), prec); | |
206 | arb_zero(acb_imagref(y)); | |
207 | return; | |
208 | } | |
209 | ||
210 | if (acb_hypgeom_lgamma_taylor(y, x, prec)) | |
211 | return; | |
212 | ||
213 | acc = acb_rel_accuracy_bits(x); | |
214 | acc = FLINT_MAX(acc, 0); | |
215 | wp = FLINT_MIN(prec, acc + 20); | |
216 | wp = FLINT_MAX(wp, 2); | |
217 | wp = wp + FLINT_BIT_COUNT(wp); | |
218 | ||
219 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
220 | ||
221 | acb_init(t); | |
222 | acb_init(u); | |
223 | acb_init(v); | |
224 | ||
225 | if (reflect) | |
226 | { | |
227 | /* log gamma(x) = log rf(1-x, r) - log gamma(1-x+r) - log sin(pi x) + log(pi) */ | |
228 | acb_sub_ui(u, x, 1, wp); | |
229 | acb_neg(u, u); | |
230 | ||
231 | acb_hypgeom_log_rising_ui(t, u, r, wp); | |
232 | ||
233 | acb_add_ui(u, u, r, wp); | |
234 | acb_hypgeom_gamma_stirling_inner(v, u, n, wp); | |
235 | acb_sub(t, t, v, wp); | |
236 | ||
237 | acb_log_sin_pi(u, x, wp); | |
238 | acb_sub(t, t, u, wp); | |
239 | ||
240 | arb_const_log_pi(acb_realref(u), wp); | |
241 | arb_zero(acb_imagref(u)); | |
242 | ||
243 | acb_add(y, t, u, wp); | |
244 | } | |
245 | else | |
246 | { | |
247 | /* log gamma(x) = log gamma(x+r) - log rf(x,r) */ | |
248 | acb_add_ui(t, x, r, wp); | |
249 | acb_hypgeom_gamma_stirling_inner(u, t, n, wp); | |
250 | acb_hypgeom_log_rising_ui(t, x, r, wp); | |
251 | acb_sub(y, u, t, prec); | |
252 | } | |
253 | ||
254 | if (!acb_is_finite(y)) | |
255 | acb_indeterminate(y); | |
256 | ||
257 | acb_clear(t); | |
258 | acb_clear(u); | |
259 | acb_clear(v); | |
260 | } | |
261 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | #include "arb_hypgeom.h" | |
13 | ||
14 | static void | |
15 | _acb_log_rising_correct_branch(acb_t res, | |
16 | const acb_t t_wrong, const acb_t z, ulong r, slong prec) | |
17 | { | |
18 | acb_t f; | |
19 | arb_t pi, u, v; | |
20 | fmpz_t pi_mult; | |
21 | slong i, argprec; | |
22 | ||
23 | acb_init(f); | |
24 | ||
25 | arb_init(u); | |
26 | arb_init(pi); | |
27 | arb_init(v); | |
28 | ||
29 | fmpz_init(pi_mult); | |
30 | ||
31 | argprec = FLINT_MIN(prec, 40); | |
32 | ||
33 | arb_zero(u); | |
34 | for (i = 0; i < r; i++) | |
35 | { | |
36 | acb_add_ui(f, z, i, argprec); | |
37 | acb_arg(v, f, argprec); | |
38 | arb_add(u, u, v, argprec); | |
39 | } | |
40 | ||
41 | if (argprec == prec) | |
42 | { | |
43 | arb_set(acb_imagref(res), u); | |
44 | } | |
45 | else | |
46 | { | |
47 | arb_sub(v, u, acb_imagref(t_wrong), argprec); | |
48 | arb_const_pi(pi, argprec); | |
49 | arb_div(v, v, pi, argprec); | |
50 | ||
51 | if (arb_get_unique_fmpz(pi_mult, v)) | |
52 | { | |
53 | arb_const_pi(v, prec); | |
54 | arb_mul_fmpz(v, v, pi_mult, prec); | |
55 | arb_add(acb_imagref(res), acb_imagref(t_wrong), v, prec); | |
56 | } | |
57 | else | |
58 | { | |
59 | arb_zero(u); | |
60 | for (i = 0; i < r; i++) | |
61 | { | |
62 | acb_add_ui(f, z, i, prec); | |
63 | acb_arg(v, f, prec); | |
64 | arb_add(u, u, v, prec); | |
65 | } | |
66 | arb_set(acb_imagref(res), u); | |
67 | } | |
68 | } | |
69 | ||
70 | arb_set(acb_realref(res), acb_realref(t_wrong)); | |
71 | ||
72 | acb_clear(f); | |
73 | ||
74 | arb_clear(u); | |
75 | arb_clear(v); | |
76 | arb_clear(pi); | |
77 | ||
78 | fmpz_clear(pi_mult); | |
79 | } | |
80 | ||
81 | void | |
82 | acb_hypgeom_log_rising_ui_jet_fallback(acb_ptr res, const acb_t z, slong r, slong len, slong prec) | |
83 | { | |
84 | acb_t t; | |
85 | acb_init(t); | |
86 | acb_set(t, z); | |
87 | ||
88 | if (len == 1) | |
89 | { | |
90 | acb_hypgeom_rising_ui_rec(res, t, r, prec); | |
91 | acb_log(res, res, prec); | |
92 | } | |
93 | else | |
94 | { | |
95 | acb_hypgeom_rising_ui_jet(res, t, r, len, prec); | |
96 | _acb_poly_log_series(res, res, FLINT_MIN(len, r + 1), len, prec); | |
97 | } | |
98 | ||
99 | _acb_log_rising_correct_branch(res, res, t, r, prec); | |
100 | ||
101 | acb_clear(t); | |
102 | } | |
103 | ||
104 | void | |
105 | acb_hypgeom_log_rising_ui_jet(acb_ptr res, const acb_t z, ulong r, slong len, slong prec) | |
106 | { | |
107 | double za, zb, sa, sb, ta, tb, ma, mb, zak; | |
108 | slong k, correction; | |
109 | int neg; | |
110 | ||
111 | if (r == 0 || len == 0) | |
112 | { | |
113 | _acb_vec_zero(res, len); | |
114 | return; | |
115 | } | |
116 | ||
117 | if (r == 1) | |
118 | { | |
119 | if (len == 1) | |
120 | { | |
121 | acb_log(res, z, prec); | |
122 | } | |
123 | else | |
124 | { | |
125 | acb_set(res, z); | |
126 | acb_one(res + 1); | |
127 | _acb_poly_log_series(res, res, 2, len, prec); | |
128 | } | |
129 | return; | |
130 | } | |
131 | ||
132 | if (arb_is_zero(acb_imagref(z))) | |
133 | { | |
134 | if (arb_is_positive(acb_realref(z))) | |
135 | { | |
136 | acb_hypgeom_rising_ui_jet(res, z, r, len, prec); | |
137 | _acb_poly_log_series(res, res, FLINT_MIN(len, r + 1), len, prec); | |
138 | } | |
139 | else if (arb_contains_int(acb_realref(z))) | |
140 | { | |
141 | _acb_vec_indeterminate(res, len); | |
142 | } | |
143 | else | |
144 | { | |
145 | arb_t t, u; | |
146 | ||
147 | arb_init(t); | |
148 | arb_init(u); | |
149 | ||
150 | arb_floor(u, acb_realref(z), prec); | |
151 | arb_neg(u, u); | |
152 | ||
153 | arb_set_ui(t, r); | |
154 | arb_min(u, u, t, prec); | |
155 | arb_const_pi(t, prec); | |
156 | arb_mul(t, u, t, prec); | |
157 | ||
158 | acb_hypgeom_rising_ui_jet(res, z, r, len, prec); | |
159 | _acb_vec_neg(res, res, FLINT_MIN(len, r + 1)); | |
160 | _acb_poly_log_series(res, res, FLINT_MIN(len, r + 1), len, prec); | |
161 | ||
162 | arb_swap(acb_imagref(res), t); | |
163 | ||
164 | arb_clear(t); | |
165 | arb_clear(u); | |
166 | } | |
167 | ||
168 | return; | |
169 | } | |
170 | ||
171 | /* We use doubles if it is safe. | |
172 | - No overflow/underflow possible. | |
173 | - Input is accurate enough (and not too close to the real line). | |
174 | Note: the relative error for a complex floating-point | |
175 | multiplication is bounded by sqrt(5) * eps, and we basically only | |
176 | need to determine the result to within one quadrant. */ | |
177 | ||
178 | /* todo: wide */ | |
179 | if (prec <= 20 || acb_rel_accuracy_bits(z) < 30 || arb_rel_accuracy_bits(acb_imagref(z)) < 30) | |
180 | { | |
181 | acb_hypgeom_log_rising_ui_jet_fallback(res, z, r, len, prec); | |
182 | return; | |
183 | } | |
184 | ||
185 | za = arf_get_d(arb_midref(acb_realref(z)), ARF_RND_NEAR); | |
186 | zb = arf_get_d(arb_midref(acb_imagref(z)), ARF_RND_NEAR); | |
187 | ||
188 | if (!(r <= 1e6 && za <= 1e6 && za >= -1e6 && zb <= 1e6 && zb >= -1e6 && (zb > 1e-6 || zb < -1e-6))) | |
189 | { | |
190 | acb_hypgeom_log_rising_ui_jet_fallback(res, z, r, len, prec); | |
191 | return; | |
192 | } | |
193 | ||
194 | sa = za; | |
195 | sb = zb; | |
196 | correction = 0; | |
197 | neg = 0; | |
198 | ||
199 | for (k = 1; k < r; k++) | |
200 | { | |
201 | zak = za + k; | |
202 | ||
203 | ta = sa * zak - sb * zb; | |
204 | tb = sb * zak + sa * zb; | |
205 | ||
206 | if (zb > 0.0) | |
207 | { | |
208 | if (sb >= 0.0 && tb < 0.0) | |
209 | correction += 2; | |
210 | } | |
211 | else | |
212 | { | |
213 | if (sb < 0.0 && tb >= 0.0) | |
214 | correction += 2; | |
215 | } | |
216 | ||
217 | sa = ta; | |
218 | sb = tb; | |
219 | ||
220 | if (k % 4 == 0) | |
221 | { | |
222 | ma = fabs(sa); | |
223 | mb = fabs(sb); | |
224 | ||
225 | /* Rescale to protect against overflow. */ | |
226 | if (ma > mb) | |
227 | ma = 1.0 / ma; | |
228 | else | |
229 | ma = 1.0 / mb; | |
230 | ||
231 | sa *= ma; | |
232 | sb *= ma; | |
233 | } | |
234 | } | |
235 | ||
236 | if (sa < 0.0) | |
237 | { | |
238 | neg = 1; | |
239 | ||
240 | if ((zb > 0.0 && sb >= 0.0) || (zb < 0.0 && sb < 0.0)) | |
241 | correction += 1; | |
242 | else | |
243 | correction -= 1; | |
244 | } | |
245 | ||
246 | if (len == 1) | |
247 | { | |
248 | acb_hypgeom_rising_ui_rec(res, z, r, prec); | |
249 | if (neg) | |
250 | acb_neg(res, res); | |
251 | acb_log(res, res, prec); | |
252 | } | |
253 | else | |
254 | { | |
255 | acb_hypgeom_rising_ui_jet(res, z, r, len, prec); | |
256 | if (neg) | |
257 | _acb_vec_neg(res, res, FLINT_MIN(len, r + 1)); | |
258 | _acb_poly_log_series(res, res, FLINT_MIN(len, r + 1), len, prec); | |
259 | } | |
260 | ||
261 | if (zb < 0.0) | |
262 | correction = -correction; | |
263 | ||
264 | if (correction != 0) | |
265 | { | |
266 | arb_t t; | |
267 | arb_init(t); | |
268 | arb_const_pi(t, prec); | |
269 | arb_addmul_si(acb_imagref(res), t, correction, prec); | |
270 | arb_clear(t); | |
271 | } | |
272 | } | |
273 | ||
274 | void | |
275 | acb_hypgeom_log_rising_ui(acb_ptr res, const acb_t z, ulong r, slong prec) | |
276 | { | |
277 | acb_hypgeom_log_rising_ui_jet(res, z, r, 1, prec); | |
278 | } | |
279 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void | |
14 | acb_hypgeom_rising_ui(acb_t y, const acb_t x, ulong n, slong prec) | |
15 | { | |
16 | if (n < FLINT_MAX(prec, 100)) | |
17 | { | |
18 | acb_hypgeom_rising_ui_rec(y, x, n, prec); | |
19 | } | |
20 | else | |
21 | { | |
22 | acb_t t; | |
23 | acb_init(t); | |
24 | acb_add_ui(t, x, n, prec); | |
25 | acb_gamma(t, t, prec); | |
26 | acb_rgamma(y, x, prec); | |
27 | acb_mul(y, y, t, prec); | |
28 | acb_clear(t); | |
29 | } | |
30 | } | |
31 | ||
32 | void | |
33 | acb_hypgeom_rising(acb_t y, const acb_t x, const acb_t n, slong prec) | |
34 | { | |
35 | if (acb_is_int(n) && arf_sgn(arb_midref(acb_realref(n))) >= 0 && | |
36 | arf_cmpabs_ui(arb_midref(acb_realref(n)), FLINT_MAX(prec, 100)) < 0) | |
37 | { | |
38 | acb_hypgeom_rising_ui_rec(y, x, | |
39 | arf_get_si(arb_midref(acb_realref(n)), ARF_RND_DOWN), prec); | |
40 | } | |
41 | else | |
42 | { | |
43 | acb_t t; | |
44 | acb_init(t); | |
45 | acb_add(t, x, n, prec); | |
46 | acb_gamma(t, t, prec); | |
47 | acb_rgamma(y, x, prec); | |
48 | acb_mul(y, y, t, prec); | |
49 | acb_clear(t); | |
50 | } | |
51 | } | |
52 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | static void | |
14 | bsplit(acb_t y, const acb_t x, ulong a, ulong b, slong prec) | |
15 | { | |
16 | if (b - a <= 4) | |
17 | { | |
18 | if (a == 0) | |
19 | { | |
20 | acb_hypgeom_rising_ui_forward(y, x, b, prec); | |
21 | } | |
22 | else | |
23 | { | |
24 | acb_add_ui(y, x, a, prec); | |
25 | acb_hypgeom_rising_ui_forward(y, y, b - a, prec); | |
26 | } | |
27 | } | |
28 | else | |
29 | { | |
30 | acb_t t, u; | |
31 | ulong m = a + (b - a) / 2; | |
32 | ||
33 | acb_init(t); | |
34 | acb_init(u); | |
35 | ||
36 | bsplit(t, x, a, m, prec); | |
37 | bsplit(u, x, m, b, prec); | |
38 | ||
39 | acb_mul(y, t, u, prec); | |
40 | ||
41 | acb_clear(t); | |
42 | acb_clear(u); | |
43 | } | |
44 | } | |
45 | ||
46 | void | |
47 | acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec) | |
48 | { | |
49 | if (n <= 1) | |
50 | { | |
51 | if (n == 0) | |
52 | acb_one(res); | |
53 | else | |
54 | acb_set_round(res, x, prec); | |
55 | return; | |
56 | } | |
57 | ||
58 | { | |
59 | acb_t t; | |
60 | slong wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
61 | ||
62 | acb_init(t); | |
63 | bsplit(t, x, 0, n, wp); | |
64 | acb_set_round(res, t, prec); | |
65 | acb_clear(t); | |
66 | } | |
67 | } | |
68 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void _arb_increment_fast(arb_t x, slong prec); | |
14 | ||
15 | void | |
16 | acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec) | |
17 | { | |
18 | acb_t t; | |
19 | ulong k; | |
20 | slong wp; | |
21 | ||
22 | if (n <= 1) | |
23 | { | |
24 | if (n == 0) | |
25 | acb_one(res); | |
26 | else | |
27 | acb_set_round(res, x, prec); | |
28 | return; | |
29 | } | |
30 | ||
31 | wp = prec + FLINT_BIT_COUNT(n); | |
32 | ||
33 | acb_init(t); | |
34 | ||
35 | acb_add_ui(t, x, 1, wp); | |
36 | acb_mul(res, x, t, (n == 2) ? prec : wp); | |
37 | ||
38 | for (k = 2; k < n; k++) | |
39 | { | |
40 | _arb_increment_fast(acb_realref(t), wp); | |
41 | acb_mul(res, res, t, k == (n - 1) ? prec : wp); | |
42 | } | |
43 | ||
44 | acb_clear(t); | |
45 | } | |
46 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void | |
14 | acb_hypgeom_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
15 | { | |
16 | if (len == 1) | |
17 | { | |
18 | acb_hypgeom_rising_ui_rec(res, x, n, prec); | |
19 | } | |
20 | else if (n <= 7) | |
21 | { | |
22 | acb_hypgeom_rising_ui_jet_powsum(res, x, n, len, prec); | |
23 | } | |
24 | else if (len == 2) | |
25 | { | |
26 | if (n <= 30 || acb_bits(x) >= prec / 128) | |
27 | acb_hypgeom_rising_ui_jet_rs(res, x, n, 0, len, prec); | |
28 | else | |
29 | acb_hypgeom_rising_ui_jet_bs(res, x, n, len, prec); | |
30 | } | |
31 | else | |
32 | { | |
33 | if (n <= 20 || (n <= 200 && prec > 400 * n && acb_bits(x) >= prec / 4)) | |
34 | { | |
35 | acb_hypgeom_rising_ui_jet_powsum(res, x, n, len, prec); | |
36 | } | |
37 | else if (len >= 64 || (acb_bits(x) + 1 < prec / 1024 && n >= 32)) | |
38 | { | |
39 | acb_hypgeom_rising_ui_jet_bs(res, x, n, len, prec); | |
40 | } | |
41 | else | |
42 | { | |
43 | acb_hypgeom_rising_ui_jet_rs(res, x, n, 0, len, prec); | |
44 | } | |
45 | } | |
46 | } | |
47 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | static void | |
14 | bsplit(acb_ptr res, const acb_t x, ulong a, ulong b, slong trunc, slong prec) | |
15 | { | |
16 | trunc = FLINT_MIN(trunc, b - a + 1); | |
17 | ||
18 | if (b - a <= 12) | |
19 | { | |
20 | if (a == 0) | |
21 | { | |
22 | acb_hypgeom_rising_ui_jet_powsum(res, x, b - a, FLINT_MIN(trunc, b - a + 1), prec); | |
23 | } | |
24 | else | |
25 | { | |
26 | acb_t t; | |
27 | acb_init(t); | |
28 | acb_add_ui(t, x, a, prec); | |
29 | acb_hypgeom_rising_ui_jet_powsum(res, t, b - a, FLINT_MIN(trunc, b - a + 1), prec); | |
30 | acb_clear(t); | |
31 | } | |
32 | } | |
33 | else | |
34 | { | |
35 | acb_ptr L, R; | |
36 | slong len1, len2; | |
37 | ||
38 | slong m = a + (b - a) / 2; | |
39 | ||
40 | len1 = poly_pow_length(2, m - a, trunc); | |
41 | len2 = poly_pow_length(2, b - m, trunc); | |
42 | ||
43 | L = _acb_vec_init(len1 + len2); | |
44 | R = L + len1; | |
45 | ||
46 | bsplit(L, x, a, m, trunc, prec); | |
47 | bsplit(R, x, m, b, trunc, prec); | |
48 | ||
49 | _acb_poly_mullow(res, L, len1, R, len2, | |
50 | FLINT_MIN(trunc, len1 + len2 - 1), prec); | |
51 | ||
52 | _acb_vec_clear(L, len1 + len2); | |
53 | } | |
54 | } | |
55 | ||
56 | void | |
57 | acb_hypgeom_rising_ui_jet_bs(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
58 | { | |
59 | if (len == 0) | |
60 | return; | |
61 | ||
62 | if (len > n + 1) | |
63 | { | |
64 | _acb_vec_zero(res + n + 1, len - n - 1); | |
65 | len = n + 1; | |
66 | } | |
67 | ||
68 | if (len == n + 1) | |
69 | { | |
70 | acb_one(res + n); | |
71 | len = n; | |
72 | } | |
73 | ||
74 | if (n <= 1) | |
75 | { | |
76 | if (n == 1) | |
77 | acb_set_round(res, x, prec); | |
78 | return; | |
79 | } | |
80 | ||
81 | bsplit(res, x, 0, n, len, prec); | |
82 | } | |
83 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void | |
14 | acb_hypgeom_rising_ui_jet_powsum(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
15 | { | |
16 | slong i, j, k, wp; | |
17 | acb_ptr xpow; | |
18 | TMP_INIT; | |
19 | ||
20 | if (len == 0) | |
21 | return; | |
22 | ||
23 | if (len > n + 1) | |
24 | { | |
25 | _acb_vec_zero(res + n + 1, len - n - 1); | |
26 | len = n + 1; | |
27 | } | |
28 | ||
29 | if (len == n + 1) | |
30 | { | |
31 | acb_one(res + n); | |
32 | len = n; | |
33 | } | |
34 | ||
35 | if (n <= 1) | |
36 | { | |
37 | if (n == 1) | |
38 | acb_set_round(res, x, prec); | |
39 | return; | |
40 | } | |
41 | ||
42 | if (len == 1) | |
43 | { | |
44 | acb_hypgeom_rising_ui_rs(res, x, n, 0, prec); | |
45 | return; | |
46 | } | |
47 | ||
48 | if (n == 2) | |
49 | { | |
50 | acb_mul_2exp_si(res + 1, x, 1); | |
51 | acb_add_ui(res + 1, res + 1, 1, prec); | |
52 | acb_mul(res, x, x, prec + 4); | |
53 | acb_add(res, res, x, prec); | |
54 | return; | |
55 | } | |
56 | ||
57 | if (n <= 12 || (FLINT_BITS == 64 && n <= 20)) | |
58 | { | |
59 | mp_ptr c; | |
60 | TMP_START; | |
61 | ||
62 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
63 | c = TMP_ALLOC(sizeof(mp_limb_t) * (n + 1) * len); | |
64 | ||
65 | _nmod_vec_zero(c, (n + 1) * len); | |
66 | ||
67 | c[0] = 0; | |
68 | c[1] = 1; | |
69 | c[(n + 1) + 0] = 1; | |
70 | ||
71 | for (i = 2; i <= n; i++) | |
72 | { | |
73 | for (j = FLINT_MIN(len - 1, i); j >= 0; j--) | |
74 | { | |
75 | slong ln, pos; | |
76 | ||
77 | ln = i + 1 - j; | |
78 | pos = (n + 1) * j; | |
79 | if (i == j) | |
80 | { | |
81 | c[pos] = 1; | |
82 | } | |
83 | else | |
84 | { | |
85 | c[pos + ln - 1] = c[pos + ln - 2]; | |
86 | for (k = ln - 2; k >= 1; k--) | |
87 | c[pos + k] = c[pos + k] * (i - 1) + c[pos + k - 1]; | |
88 | c[pos + 0] *= (i - 1); | |
89 | if (j != 0) | |
90 | for (k = ln - 1; k >= 0; k--) | |
91 | c[pos + k] += c[pos - (n + 1) + k]; | |
92 | } | |
93 | } | |
94 | } | |
95 | ||
96 | xpow = _acb_vec_init(n + 1); | |
97 | _acb_vec_set_powers(xpow, x, n + 1, wp); | |
98 | ||
99 | acb_dot_ui(res, NULL, 0, xpow + 1, 1, c + 1, 1, n, prec); | |
100 | ||
101 | for (i = 1; i < len; i++) | |
102 | acb_dot_ui(res + i, NULL, 0, xpow, 1, c + (n + 1) * i, 1, n + 1 - i, prec); | |
103 | ||
104 | _acb_vec_clear(xpow, n + 1); | |
105 | TMP_END; | |
106 | } | |
107 | else | |
108 | { | |
109 | fmpz * c; | |
110 | ||
111 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
112 | c = _fmpz_vec_init((n + 1) * len); | |
113 | ||
114 | fmpz_one(c + 1); | |
115 | fmpz_one(c + (n + 1) + 0); | |
116 | ||
117 | for (i = 2; i <= n; i++) | |
118 | { | |
119 | for (j = FLINT_MIN(len - 1, i); j >= 0; j--) | |
120 | { | |
121 | slong ln, pos; | |
122 | ||
123 | ln = i + 1 - j; | |
124 | pos = (n + 1) * j; | |
125 | if (i == j) | |
126 | { | |
127 | fmpz_one(c + pos); | |
128 | } | |
129 | else | |
130 | { | |
131 | fmpz_set(c + pos + ln - 1, c + pos + ln - 2); | |
132 | for (k = ln - 2; k >= 1; k--) | |
133 | { | |
134 | fmpz_mul_ui(c + pos + k, c + pos + k, i - 1); | |
135 | fmpz_add(c + pos + k, c + pos + k, c + pos + k - 1); | |
136 | } | |
137 | ||
138 | fmpz_mul_ui(c + pos + 0, c + pos + 0, i - 1); | |
139 | if (j != 0) | |
140 | for (k = ln - 1; k >= 0; k--) | |
141 | fmpz_add(c + pos + k, c + pos + k, c + pos - (n + 1) + k); | |
142 | } | |
143 | } | |
144 | } | |
145 | ||
146 | xpow = _acb_vec_init(n + 1); | |
147 | _acb_vec_set_powers(xpow, x, n + 1, wp); | |
148 | ||
149 | acb_dot_fmpz(res, NULL, 0, xpow + 1, 1, c + 1, 1, n, prec); | |
150 | ||
151 | for (i = 1; i < len; i++) | |
152 | acb_dot_fmpz(res + i, NULL, 0, xpow, 1, c + (n + 1) * i, 1, n + 1 - i, prec); | |
153 | ||
154 | _acb_vec_clear(xpow, n + 1); | |
155 | _fmpz_vec_clear(c, (n + 1) * len); | |
156 | } | |
157 | } | |
158 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "acb_hypgeom.h" | |
13 | ||
14 | void | |
15 | acb_hypgeom_rising_ui_jet_rs(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec) | |
16 | { | |
17 | slong i, j, k, l, m0, xmlen, tlen, ulen, climbs, climbs_max, wp; | |
18 | acb_ptr tmp, xpow; | |
19 | acb_ptr t, u; | |
20 | mp_ptr c; | |
21 | TMP_INIT; | |
22 | ||
23 | if (len == 0) | |
24 | return; | |
25 | ||
26 | if (len > n + 1) | |
27 | { | |
28 | _acb_vec_zero(res + n + 1, len - n - 1); | |
29 | len = n + 1; | |
30 | } | |
31 | ||
32 | if (len == n + 1) | |
33 | { | |
34 | acb_one(res + n); | |
35 | len = n; | |
36 | } | |
37 | ||
38 | if (n <= 1) | |
39 | { | |
40 | if (n == 1) | |
41 | acb_set_round(res, x, prec); | |
42 | return; | |
43 | } | |
44 | ||
45 | if (len == 1) | |
46 | { | |
47 | acb_hypgeom_rising_ui_rs(res, x, n, m, prec); | |
48 | return; | |
49 | } | |
50 | ||
51 | TMP_START; | |
52 | ||
53 | if (m == 0) | |
54 | { | |
55 | if (n <= 7) | |
56 | m = n; | |
57 | else if (n <= 12) | |
58 | m = (n + 1) / 2; | |
59 | else if (n <= 32) | |
60 | m = (n + 2) / 3; | |
61 | else | |
62 | { | |
63 | m0 = n_sqrt(n); | |
64 | m = 8 + 0.5 * pow(prec, 0.4); | |
65 | m = FLINT_MIN(m, m0); | |
66 | m = FLINT_MIN(m, 64); | |
67 | } | |
68 | } | |
69 | ||
70 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
71 | ||
72 | climbs_max = FLINT_BIT_COUNT(n - 1) * m; | |
73 | c = TMP_ALLOC(sizeof(mp_limb_t) * climbs_max * m); | |
74 | ||
75 | /* length of (x+t)^m */ | |
76 | xmlen = FLINT_MIN(len, m + 1); | |
77 | ||
78 | tmp = _acb_vec_init(2 * len + (m + 1) * xmlen); | |
79 | t = tmp; | |
80 | u = tmp + len; | |
81 | xpow = tmp + 2 * len; | |
82 | ||
83 | _acb_vec_set_powers(xpow, x, m + 1, wp); | |
84 | ||
85 | tlen = 1; | |
86 | ||
87 | /* First derivatives */ | |
88 | for (i = 1; i <= m; i++) | |
89 | acb_mul_ui(xpow + (m + 1) + i, xpow + i - 1, i, wp); | |
90 | ||
91 | /* Higher derivatives if we need them */ | |
92 | if (len >= 3) | |
93 | { | |
94 | fmpz * f = _fmpz_vec_init(len); | |
95 | ||
96 | fmpz_one(f + 0); | |
97 | fmpz_one(f + 1); | |
98 | ||
99 | for (i = 2; i <= m; i++) | |
100 | { | |
101 | for (j = FLINT_MIN(xmlen - 1, i + 1); j >= 1; j--) | |
102 | fmpz_add(f + j, f + j, f + j - 1); | |
103 | ||
104 | for (j = 2; j < FLINT_MIN(xmlen, i + 1); j++) | |
105 | acb_mul_fmpz(xpow + (m + 1) * j + i, xpow + i - j, f + j, wp); | |
106 | } | |
107 | ||
108 | _fmpz_vec_clear(f, len); | |
109 | } | |
110 | ||
111 | for (k = 0; k < n; k += m) | |
112 | { | |
113 | l = FLINT_MIN(m, n - k); | |
114 | climbs = FLINT_BIT_COUNT(k + l - 1) * l; | |
115 | climbs = (climbs + FLINT_BITS - 1) / FLINT_BITS; | |
116 | ||
117 | ulen = FLINT_MIN(len, l + 1); | |
118 | ||
119 | if (l == 1) | |
120 | { | |
121 | acb_add_ui(u, x, k, wp); | |
122 | acb_one(u + 1); | |
123 | } | |
124 | else | |
125 | { | |
126 | if (climbs == 1) | |
127 | { | |
128 | _arb_hypgeom_rising_coeffs_1(c, k, l); | |
129 | for (j = 0; j < ulen; j++) | |
130 | acb_dot_ui(u + j, xpow + (m + 1) * j + l, 0, xpow + (m + 1) * j + j, 1, c + j, 1, l - j, wp); | |
131 | } | |
132 | else if (climbs == 2) | |
133 | { | |
134 | _arb_hypgeom_rising_coeffs_2(c, k, l); | |
135 | for (j = 0; j < ulen; j++) | |
136 | acb_dot_uiui(u + j, xpow + (m + 1) * j + l, 0, xpow + (m + 1) * j + j, 1, c + 2 * j, 1, l - j, wp); | |
137 | } | |
138 | else | |
139 | { | |
140 | fmpz * f = (fmpz *) c; | |
141 | ||
142 | for (i = 0; i < l; i++) | |
143 | fmpz_init(f + i); | |
144 | ||
145 | _arb_hypgeom_rising_coeffs_fmpz(f, k, l); | |
146 | ||
147 | for (j = 0; j < ulen; j++) | |
148 | acb_dot_fmpz(u + j, xpow + (m + 1) * j + l, 0, xpow + (m + 1) * j + j, 1, f + j, 1, l - j, wp); | |
149 | ||
150 | for (i = 0; i < l; i++) | |
151 | fmpz_clear(f + i); | |
152 | } | |
153 | } | |
154 | ||
155 | if (k == 0) | |
156 | { | |
157 | tlen = ulen; | |
158 | _acb_vec_swap(t, u, ulen); | |
159 | } | |
160 | else | |
161 | { | |
162 | _acb_poly_mullow(res, t, tlen, u, ulen, FLINT_MIN(len, tlen + ulen - 1), wp); | |
163 | tlen = FLINT_MIN(len, tlen + ulen - 1); | |
164 | _acb_vec_swap(t, res, tlen); | |
165 | } | |
166 | } | |
167 | ||
168 | _acb_vec_set_round(res, t, len, prec); | |
169 | ||
170 | _acb_vec_clear(tmp, 2 * len + (m + 1) * xmlen); | |
171 | TMP_END; | |
172 | } | |
173 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "acb_hypgeom.h" | |
13 | ||
14 | void | |
15 | acb_hypgeom_rising_ui_rec(acb_t res, const acb_t x, ulong n, slong prec) | |
16 | { | |
17 | if (n <= 1) | |
18 | { | |
19 | if (n == 0) | |
20 | acb_one(res); | |
21 | else | |
22 | acb_set_round(res, x, prec); | |
23 | return; | |
24 | } | |
25 | ||
26 | if (arb_is_zero(acb_imagref(x))) | |
27 | { | |
28 | arb_hypgeom_rising_ui_rec(acb_realref(res), acb_realref(x), n, prec); | |
29 | arb_zero(acb_imagref(res)); | |
30 | return; | |
31 | } | |
32 | ||
33 | if (n == 2 && prec <= 1024) | |
34 | { | |
35 | if (res != x) | |
36 | acb_set(res, x); | |
37 | acb_addmul(res, x, x, prec); | |
38 | return; | |
39 | } | |
40 | ||
41 | if (n <= 5 && prec <= 512) | |
42 | { | |
43 | acb_hypgeom_rising_ui_forward(res, x, n, prec); | |
44 | } | |
45 | else | |
46 | { | |
47 | if (n >= 20 && acb_bits(x) < prec / 8) | |
48 | acb_hypgeom_rising_ui_bs(res, x, n, prec); | |
49 | else | |
50 | acb_hypgeom_rising_ui_rs(res, x, n, 0, prec); | |
51 | } | |
52 | } | |
53 |
42 | 42 | else |
43 | 43 | { |
44 | 44 | m0 = n_sqrt(n); |
45 | m = 8 + 0.27 * pow(FLINT_MAX(0, prec - 1024), 0.4); | |
45 | m = 8 + 0.27 * pow(1.5 * FLINT_MAX(0, prec - 1024), 0.4); | |
46 | 46 | m = FLINT_MIN(m, m0); |
47 | 47 | m = FLINT_MIN(m, 64); |
48 | 48 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("gamma_stirling_sum...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | acb_t z, s1, s2; | |
26 | slong prec, N, K; | |
27 | ||
28 | prec = 2 + n_randint(state, 800); | |
29 | N = n_randint(state, 200); | |
30 | K = n_randint(state, 20); | |
31 | ||
32 | acb_init(z); | |
33 | acb_init(s1); | |
34 | acb_init(s2); | |
35 | ||
36 | acb_randtest(z, state, prec, 10 + n_randint(state, 200)); | |
37 | ||
38 | acb_hypgeom_gamma_stirling_sum_horner(s1, z, N, prec); | |
39 | acb_hypgeom_gamma_stirling_sum_improved(s2, z, N, K, prec); | |
40 | ||
41 | if (!acb_overlaps(s1, s2)) | |
42 | { | |
43 | flint_printf("FAIL\n\n"); | |
44 | flint_printf("N = %wd, K = %wd, prec = %wd\n\n", N, K, prec); | |
45 | flint_printf("z = "); acb_printn(z, 1000, 0); flint_printf("\n\n"); | |
46 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
47 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
48 | flint_abort(); | |
49 | } | |
50 | ||
51 | acb_clear(z); | |
52 | acb_clear(s1); | |
53 | acb_clear(s2); | |
54 | } | |
55 | ||
56 | flint_randclear(state); | |
57 | flint_cleanup(); | |
58 | flint_printf("PASS\n"); | |
59 | return EXIT_SUCCESS; | |
60 | } | |
61 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("gamma_taylor...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | acb_t x, s1, s2, a, b; | |
26 | slong prec, ebits, prec2; | |
27 | int success, success2, alias, reciprocal; | |
28 | ||
29 | if (n_randint(state, 10) == 0) | |
30 | prec = 2 + n_randint(state, 4000); | |
31 | else | |
32 | prec = 2 + n_randint(state, 300); | |
33 | ||
34 | if (n_randint(state, 10) == 0) | |
35 | ebits = 100; | |
36 | else | |
37 | ebits = 10; | |
38 | ||
39 | prec2 = prec + 1 + n_randint(state, 30); | |
40 | ||
41 | acb_init(x); | |
42 | acb_init(s1); | |
43 | acb_init(s2); | |
44 | acb_init(a); | |
45 | acb_init(b); | |
46 | ||
47 | acb_randtest(x, state, prec, ebits); | |
48 | acb_randtest(s1, state, prec, 10); | |
49 | acb_randtest(s2, state, prec, 10); | |
50 | alias = n_randint(state, 2); | |
51 | reciprocal = n_randint(state, 2); | |
52 | ||
53 | if (alias) | |
54 | { | |
55 | success = acb_hypgeom_gamma_taylor(s1, x, reciprocal, prec); | |
56 | } | |
57 | else | |
58 | { | |
59 | acb_set(s1, x); | |
60 | success = acb_hypgeom_gamma_taylor(s1, s1, reciprocal, prec); | |
61 | } | |
62 | ||
63 | if (success) | |
64 | { | |
65 | /* printf("%ld\n", iter); */ | |
66 | ||
67 | /* Compare with Stirling series algorithm. */ | |
68 | acb_hypgeom_gamma_stirling(s2, x, reciprocal, prec); | |
69 | ||
70 | if (!acb_overlaps(s1, s2)) | |
71 | { | |
72 | flint_printf("FAIL\n\n"); | |
73 | flint_printf("prec = %wd\n\n", prec); | |
74 | flint_printf("x = "); acb_printn(x, 1000, 0); flint_printf("\n\n"); | |
75 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
76 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
77 | acb_sub(s1, s1, s2, prec2); | |
78 | flint_printf("s1 - s2 = "); acb_printd(s1, 1000); flint_printf("\n\n"); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | /* Compare with different level of precision. */ | |
83 | success2 = acb_hypgeom_gamma_taylor(s2, x, reciprocal, prec2); | |
84 | ||
85 | if (success2 && !acb_overlaps(s1, s2)) | |
86 | { | |
87 | flint_printf("FAIL (2)\n\n"); | |
88 | flint_printf("prec = %wd\n\n", prec); | |
89 | flint_printf("x = "); acb_printn(x, 1000, 0); flint_printf("\n\n"); | |
90 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
91 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
92 | acb_sub(s1, s1, s2, prec2); | |
93 | flint_printf("s1 - s2 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
94 | flint_abort(); | |
95 | } | |
96 | ||
97 | acb_get_mid(a, x); | |
98 | ||
99 | if (n_randint(state, 2)) | |
100 | { | |
101 | arf_set_mag(arb_midref(acb_realref(b)), arb_radref(acb_realref(x))); | |
102 | arf_set_mag(arb_midref(acb_imagref(b)), arb_radref(acb_imagref(x))); | |
103 | ||
104 | if (n_randint(state, 2)) | |
105 | acb_neg(b, b); | |
106 | if (n_randint(state, 2)) | |
107 | acb_conj(b, b); | |
108 | ||
109 | acb_add(a, a, b, prec2); | |
110 | } | |
111 | ||
112 | success2 = acb_hypgeom_gamma_taylor(s2, a, reciprocal, prec2); | |
113 | ||
114 | if (success2 && !acb_overlaps(s1, s2)) | |
115 | { | |
116 | flint_printf("FAIL (3)\n\n"); | |
117 | flint_printf("prec = %wd\n\n", prec); | |
118 | flint_printf("x = "); acb_printn(x, 1000, 0); flint_printf("\n\n"); | |
119 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
120 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
121 | acb_sub(s1, s1, s2, prec2); | |
122 | flint_printf("s1 - s2 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
123 | flint_abort(); | |
124 | } | |
125 | } | |
126 | ||
127 | acb_clear(x); | |
128 | acb_clear(s1); | |
129 | acb_clear(s2); | |
130 | acb_clear(a); | |
131 | acb_clear(b); | |
132 | } | |
133 | ||
134 | flint_randclear(state); | |
135 | flint_cleanup(); | |
136 | flint_printf("PASS\n"); | |
137 | return EXIT_SUCCESS; | |
138 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("lgamma...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | acb_t z, s1, s2, a, b; | |
26 | slong prec, ebits, prec2; | |
27 | ||
28 | prec = 2 + n_randint(state, 200); | |
29 | ||
30 | if (n_randint(state, 10) == 0) | |
31 | prec = 2 + n_randint(state, 1000); | |
32 | ||
33 | if (n_randint(state, 10) == 0) | |
34 | ebits = 100; | |
35 | else | |
36 | ebits = 10; | |
37 | ebits = 2; | |
38 | ||
39 | prec2 = 2 + n_randint(state, 200); | |
40 | ||
41 | acb_init(z); | |
42 | acb_init(s1); | |
43 | acb_init(s2); | |
44 | acb_init(a); | |
45 | acb_init(b); | |
46 | ||
47 | acb_randtest(z, state, prec, ebits); | |
48 | acb_randtest(s1, state, prec, 10); | |
49 | acb_randtest(s2, state, prec, 10); | |
50 | ||
51 | if (n_randint(state, 2)) | |
52 | { | |
53 | acb_hypgeom_lgamma(s1, z, prec); | |
54 | } | |
55 | else | |
56 | { | |
57 | acb_set(s1, z); | |
58 | acb_hypgeom_lgamma(s1, s1, prec); | |
59 | } | |
60 | ||
61 | acb_add_ui(s2, z, 1, prec2); | |
62 | acb_hypgeom_lgamma(s2, s2, prec2); | |
63 | acb_log(a, z, prec2); | |
64 | acb_sub(s2, s2, a, prec2); | |
65 | ||
66 | if (!acb_overlaps(s1, s2)) | |
67 | { | |
68 | flint_printf("FAIL\n\n"); | |
69 | flint_printf("prec = %wd\n\n", prec); | |
70 | flint_printf("z = "); acb_printn(z, 1000, 0); flint_printf("\n\n"); | |
71 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
72 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
73 | acb_sub(s1, s1, s2, prec2); | |
74 | flint_printf("s1 - s2 = "); acb_printd(s1, 1000); flint_printf("\n\n"); | |
75 | flint_abort(); | |
76 | } | |
77 | ||
78 | acb_get_mid(a, z); | |
79 | ||
80 | if (n_randint(state, 2)) | |
81 | { | |
82 | arf_set_mag(arb_midref(acb_realref(b)), arb_radref(acb_realref(z))); | |
83 | arf_set_mag(arb_midref(acb_imagref(b)), arb_radref(acb_imagref(z))); | |
84 | ||
85 | if (n_randint(state, 2)) | |
86 | acb_neg(b, b); | |
87 | if (n_randint(state, 2)) | |
88 | acb_conj(b, b); | |
89 | ||
90 | acb_add(a, a, b, prec); | |
91 | } | |
92 | ||
93 | acb_hypgeom_lgamma(s2, a, prec); | |
94 | ||
95 | if (!acb_overlaps(s1, s2)) | |
96 | { | |
97 | flint_printf("FAIL (2)\n\n"); | |
98 | flint_printf("prec = %wd\n\n", prec); | |
99 | flint_printf("z = "); acb_printn(z, 1000, 0); flint_printf("\n\n"); | |
100 | flint_printf("a = "); acb_printn(a, 1000, 0); flint_printf("\n\n"); | |
101 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
102 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
103 | acb_sub(s1, s1, s2, prec2); | |
104 | flint_printf("s1 - s2 = "); acb_printd(s1, 1000); flint_printf("\n\n"); | |
105 | flint_abort(); | |
106 | } | |
107 | ||
108 | acb_clear(z); | |
109 | acb_clear(s1); | |
110 | acb_clear(s2); | |
111 | acb_clear(a); | |
112 | acb_clear(b); | |
113 | } | |
114 | ||
115 | flint_randclear(state); | |
116 | flint_cleanup(); | |
117 | flint_printf("PASS\n"); | |
118 | return EXIT_SUCCESS; | |
119 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void | |
14 | acb_hypgeom_log_rising_ui_naive(acb_t res, const acb_t z, ulong r, slong prec) | |
15 | { | |
16 | acb_t t, u; | |
17 | slong k; | |
18 | ||
19 | acb_init(t); | |
20 | acb_init(u); | |
21 | ||
22 | for (k = 0; k < r; k++) | |
23 | { | |
24 | acb_add_ui(t, z, k, prec); | |
25 | acb_log(t, t, prec); | |
26 | acb_add(u, u, t, prec); | |
27 | } | |
28 | ||
29 | acb_swap(res, u); | |
30 | ||
31 | acb_clear(t); | |
32 | acb_clear(u); | |
33 | } | |
34 | ||
35 | int main() | |
36 | { | |
37 | slong iter; | |
38 | flint_rand_t state; | |
39 | ||
40 | flint_printf("log_rising_ui...."); | |
41 | fflush(stdout); | |
42 | ||
43 | flint_randinit(state); | |
44 | ||
45 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
46 | { | |
47 | acb_t z, s1, s2, a, b; | |
48 | slong prec, ebits, prec2; | |
49 | ulong n; | |
50 | ||
51 | prec = 2 + n_randint(state, 100); | |
52 | ||
53 | if (n_randint(state, 10) == 0) | |
54 | ebits = 100; | |
55 | else | |
56 | ebits = 10; | |
57 | ebits = 2; | |
58 | ||
59 | prec2 = prec + 1 + n_randint(state, 30); | |
60 | ||
61 | acb_init(z); | |
62 | acb_init(s1); | |
63 | acb_init(s2); | |
64 | acb_init(a); | |
65 | acb_init(b); | |
66 | ||
67 | acb_randtest(z, state, prec, ebits); | |
68 | acb_randtest(s1, state, prec, 10); | |
69 | acb_randtest(s2, state, prec, 10); | |
70 | n = n_randint(state, 20); | |
71 | ||
72 | if (n_randint(state, 20) == 0) | |
73 | n = n_randint(state, 200); | |
74 | ||
75 | if (n_randint(state, 2)) | |
76 | { | |
77 | acb_hypgeom_log_rising_ui(s1, z, n, prec); | |
78 | } | |
79 | else | |
80 | { | |
81 | acb_set(s1, z); | |
82 | acb_hypgeom_log_rising_ui(s1, s1, n, prec); | |
83 | } | |
84 | ||
85 | acb_hypgeom_log_rising_ui_naive(s2, z, n, prec); | |
86 | ||
87 | if (!acb_overlaps(s1, s2)) | |
88 | { | |
89 | flint_printf("FAIL\n\n"); | |
90 | flint_printf("prec = %wd\n\n", prec); | |
91 | flint_printf("n = %wu\n\n", n); | |
92 | flint_printf("z = "); acb_printn(z, 1000, 0); flint_printf("\n\n"); | |
93 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
94 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
95 | acb_sub(s1, s1, s2, prec2); | |
96 | flint_printf("s1 - s2 = "); acb_printd(s1, 1000); flint_printf("\n\n"); | |
97 | flint_abort(); | |
98 | } | |
99 | ||
100 | acb_get_mid(a, z); | |
101 | ||
102 | if (n_randint(state, 2)) | |
103 | { | |
104 | arf_set_mag(arb_midref(acb_realref(b)), arb_radref(acb_realref(z))); | |
105 | arf_set_mag(arb_midref(acb_imagref(b)), arb_radref(acb_imagref(z))); | |
106 | ||
107 | if (n_randint(state, 2)) | |
108 | acb_neg(b, b); | |
109 | if (n_randint(state, 2)) | |
110 | acb_conj(b, b); | |
111 | ||
112 | acb_add(a, a, b, prec); | |
113 | } | |
114 | ||
115 | acb_hypgeom_log_rising_ui(s2, a, n, prec); | |
116 | ||
117 | if (!acb_overlaps(s1, s2)) | |
118 | { | |
119 | flint_printf("FAIL (2)\n\n"); | |
120 | flint_printf("prec = %wd\n\n", prec); | |
121 | flint_printf("n = %wu\n\n", n); | |
122 | flint_printf("z = "); acb_printn(z, 1000, 0); flint_printf("\n\n"); | |
123 | flint_printf("a = "); acb_printn(a, 1000, 0); flint_printf("\n\n"); | |
124 | flint_printf("s1 = "); acb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
125 | flint_printf("s2 = "); acb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
126 | acb_sub(s1, s1, s2, prec2); | |
127 | flint_printf("s1 - s2 = "); acb_printd(s1, 1000); flint_printf("\n\n"); | |
128 | flint_abort(); | |
129 | } | |
130 | ||
131 | acb_clear(z); | |
132 | acb_clear(s1); | |
133 | acb_clear(s2); | |
134 | acb_clear(a); | |
135 | acb_clear(b); | |
136 | } | |
137 | ||
138 | flint_randclear(state); | |
139 | flint_cleanup(); | |
140 | flint_printf("PASS\n"); | |
141 | return EXIT_SUCCESS; | |
142 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("log_rising_ui_jet...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | acb_t z; | |
26 | acb_ptr s1, s2, s3, s4; | |
27 | slong prec, ebits, len, len1, len2, len3, len4; | |
28 | ulong n, m; | |
29 | ||
30 | prec = 2 + n_randint(state, 100); | |
31 | len = n_randint(state, 5); | |
32 | len1 = len + n_randint(state, 2); | |
33 | len2 = len + n_randint(state, 2); | |
34 | len3 = len + n_randint(state, 2); | |
35 | len4 = len + n_randint(state, 2); | |
36 | ||
37 | if (n_randint(state, 10) == 0) | |
38 | ebits = 100; | |
39 | else | |
40 | ebits = 10; | |
41 | ebits = 2; | |
42 | ||
43 | acb_init(z); | |
44 | s1 = _acb_vec_init(FLINT_MAX(1, len1)); | |
45 | s2 = _acb_vec_init(FLINT_MAX(1, len2)); | |
46 | s3 = _acb_vec_init(FLINT_MAX(1, len3)); | |
47 | s4 = _acb_vec_init(FLINT_MAX(1, len4)); | |
48 | ||
49 | acb_randtest(z, state, prec, ebits); | |
50 | acb_randtest(s1, state, prec, 10); | |
51 | acb_randtest(s2, state, prec, 10); | |
52 | n = n_randint(state, 8); | |
53 | m = n_randint(state, 8); | |
54 | ||
55 | acb_hypgeom_log_rising_ui_jet(s1, z, n + m, len1, prec); | |
56 | acb_hypgeom_log_rising_ui_jet(s2, z, n, len2, prec); | |
57 | acb_add_ui(s4, z, n, prec); | |
58 | acb_hypgeom_log_rising_ui_jet(s3, s4, m, len3, prec); | |
59 | _acb_vec_add(s4, s2, s3, len, prec); | |
60 | ||
61 | if (!_acb_poly_overlaps(s1, len, s4, len)) | |
62 | { | |
63 | flint_printf("FAIL\n\n"); | |
64 | flint_printf("prec = %wd\n\n", prec); | |
65 | flint_printf("n = %wu, m = %lu\n\n", n, m); | |
66 | flint_printf("z = "); acb_printn(z, 1000, 0); flint_printf("\n\n"); | |
67 | flint_printf("s1 = "); _acb_vec_printn(s1, len, 30, 0); flint_printf("\n\n"); | |
68 | flint_printf("s2 = "); _acb_vec_printn(s2, len, 30, 0); flint_printf("\n\n"); | |
69 | flint_printf("s3 = "); _acb_vec_printn(s3, len, 30, 0); flint_printf("\n\n"); | |
70 | flint_printf("s4 = "); _acb_vec_printn(s4, len, 30, 0); flint_printf("\n\n"); | |
71 | flint_abort(); | |
72 | } | |
73 | ||
74 | acb_clear(z); | |
75 | _acb_vec_clear(s1, FLINT_MAX(1, len1)); | |
76 | _acb_vec_clear(s2, FLINT_MAX(1, len2)); | |
77 | _acb_vec_clear(s3, FLINT_MAX(1, len3)); | |
78 | _acb_vec_clear(s4, FLINT_MAX(1, len4)); | |
79 | } | |
80 | ||
81 | flint_randclear(state); | |
82 | flint_cleanup(); | |
83 | flint_printf("PASS\n"); | |
84 | return EXIT_SUCCESS; | |
85 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void | |
14 | rising_algorithm(acb_t res, const acb_t x, ulong n, ulong m, slong prec, int alg, int alias) | |
15 | { | |
16 | if (alias) | |
17 | { | |
18 | acb_set(res, x); | |
19 | rising_algorithm(res, res, n, m, prec, alg, 0); | |
20 | return; | |
21 | } | |
22 | ||
23 | if (alg == 0) | |
24 | acb_hypgeom_rising_ui_rs(res, x, n, m, prec); | |
25 | else if (alg == 1) | |
26 | acb_hypgeom_rising_ui_forward(res, x, n, prec); | |
27 | else if (alg == 2) | |
28 | acb_hypgeom_rising_ui_bs(res, x, n, prec); | |
29 | else if (alg == 3) | |
30 | acb_hypgeom_rising_ui_rec(res, x, n, prec); | |
31 | else | |
32 | acb_hypgeom_rising_ui(res, x, n, prec); | |
33 | } | |
34 | ||
35 | int main() | |
36 | { | |
37 | slong iter; | |
38 | flint_rand_t state; | |
39 | ||
40 | flint_printf("rising_ui...."); | |
41 | fflush(stdout); | |
42 | ||
43 | flint_randinit(state); | |
44 | ||
45 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
46 | { | |
47 | acb_t x, xk, y, ya, yb, yayb; | |
48 | ulong k, n, m1, m2, m3; | |
49 | slong prec; | |
50 | int alg1, alg2, alg3, alias1, alias2, alias3; | |
51 | ||
52 | prec = 2 + n_randint(state, 200); | |
53 | k = n_randint(state, 10); | |
54 | n = n_randint(state, 50); | |
55 | m1 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(n + k, 1)); | |
56 | m2 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(k, 1)); | |
57 | m3 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(n, 1)); | |
58 | alg1 = n_randint(state, 5); | |
59 | alg2 = n_randint(state, 5); | |
60 | alg3 = n_randint(state, 5); | |
61 | alias1 = n_randint(state, 2); | |
62 | alias2 = n_randint(state, 2); | |
63 | alias3 = n_randint(state, 2); | |
64 | ||
65 | if (n_randint(state, 100) == 0) | |
66 | n += 100; | |
67 | ||
68 | acb_init(x); | |
69 | acb_init(xk); | |
70 | acb_init(y); | |
71 | acb_init(ya); | |
72 | acb_init(yb); | |
73 | acb_init(yayb); | |
74 | ||
75 | acb_randtest(x, state, prec, 10 + n_randint(state, 200)); | |
76 | acb_add_ui(xk, x, k, prec); | |
77 | ||
78 | rising_algorithm(y, x, n + k, m1, prec, alg1, alias1); | |
79 | rising_algorithm(ya, x, k, m2, prec, alg2, alias2); | |
80 | rising_algorithm(yb, xk, n, m3, prec, alg3, alias3); | |
81 | acb_mul(yayb, ya, yb, prec); | |
82 | ||
83 | if (!acb_overlaps(y, yayb)) | |
84 | { | |
85 | flint_printf("FAIL\n\n"); | |
86 | flint_printf("k = %wu, n = %wu, m1 = %wu, m2 = %wu, m3 = %wu\n\n", k, n, m1, m2, m3); | |
87 | flint_printf("x = "); acb_printn(x, 100, 0); flint_printf("\n\n"); | |
88 | flint_printf("y = "); acb_printn(y, 100, 0); flint_printf("\n\n"); | |
89 | flint_printf("ya = "); acb_printn(ya, 100, 0); flint_printf("\n\n"); | |
90 | flint_printf("yb = "); acb_printn(yb, 100, 0); flint_printf("\n\n"); | |
91 | flint_printf("yayb = "); acb_printn(yayb, 100, 0); flint_printf("\n\n"); | |
92 | flint_abort(); | |
93 | } | |
94 | ||
95 | acb_clear(x); | |
96 | acb_clear(xk); | |
97 | acb_clear(y); | |
98 | acb_clear(ya); | |
99 | acb_clear(yb); | |
100 | acb_clear(yayb); | |
101 | } | |
102 | ||
103 | flint_randclear(state); | |
104 | flint_cleanup(); | |
105 | flint_printf("PASS\n"); | |
106 | return EXIT_SUCCESS; | |
107 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | void | |
14 | rising_algorithm(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec, int alg) | |
15 | { | |
16 | if (alg == 0) | |
17 | acb_hypgeom_rising_ui_jet_powsum(res, x, n, len, prec); | |
18 | else if (alg == 1) | |
19 | acb_hypgeom_rising_ui_jet_rs(res, x, n, m, len, prec); | |
20 | else if (alg == 2) | |
21 | acb_hypgeom_rising_ui_jet_bs(res, x, n, len, prec); | |
22 | else | |
23 | acb_hypgeom_rising_ui_jet(res, x, n, len, prec); | |
24 | } | |
25 | ||
26 | int main() | |
27 | { | |
28 | slong iter; | |
29 | flint_rand_t state; | |
30 | ||
31 | flint_printf("rising_ui_jet...."); | |
32 | fflush(stdout); | |
33 | ||
34 | flint_randinit(state); | |
35 | ||
36 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
37 | { | |
38 | acb_t x, xk; | |
39 | acb_ptr y, ya, yb, yayb; | |
40 | ulong k, n, m1, m2, m3, len; | |
41 | slong prec; | |
42 | int alg1, alg2, alg3; | |
43 | ||
44 | prec = 2 + n_randint(state, 200); | |
45 | len = 1 + n_randint(state, 6); | |
46 | k = n_randint(state, 10); | |
47 | n = n_randint(state, 50); | |
48 | m1 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(n + k, 1)); | |
49 | m2 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(k, 1)); | |
50 | m3 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(n, 1)); | |
51 | alg1 = n_randint(state, 4); | |
52 | alg2 = n_randint(state, 4); | |
53 | alg3 = n_randint(state, 4); | |
54 | ||
55 | acb_init(x); | |
56 | acb_init(xk); | |
57 | y = _acb_vec_init(len); | |
58 | ya = _acb_vec_init(len); | |
59 | yb = _acb_vec_init(len); | |
60 | yayb = _acb_vec_init(len); | |
61 | ||
62 | acb_randtest(x, state, prec, 10); | |
63 | acb_add_ui(xk, x, k, prec); | |
64 | ||
65 | rising_algorithm(y, x, n + k, m1, len, prec, alg1); | |
66 | rising_algorithm(ya, x, k, m2, len, prec, alg2); | |
67 | rising_algorithm(yb, xk, n, m3, len, prec, alg3); | |
68 | _acb_poly_mullow(yayb, ya, len, yb, len, len, prec); | |
69 | ||
70 | if (!_acb_poly_overlaps(y, len, yayb, len)) | |
71 | { | |
72 | flint_printf("FAIL\n\n"); | |
73 | flint_printf("len = %wd, k = %wu, n = %wu, m1 = %wu, m2 = %wu, m3 = %wu\n\n", len, k, n, m1, m2, m3); | |
74 | flint_printf("x = "); acb_printn(x, 100, 0); flint_printf("\n\n"); | |
75 | flint_printf("y = "); _acb_vec_printn(y, len, 100, 0); flint_printf("\n\n"); | |
76 | flint_printf("ya = "); _acb_vec_printn(ya, len, 100, 0); flint_printf("\n\n"); | |
77 | flint_printf("yb = "); _acb_vec_printn(yb, len, 100, 0); flint_printf("\n\n"); | |
78 | flint_printf("yayb = "); _acb_vec_printn(yayb, len, 100, 0); flint_printf("\n\n"); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | acb_clear(x); | |
83 | acb_clear(xk); | |
84 | _acb_vec_clear(y, len); | |
85 | _acb_vec_clear(ya, len); | |
86 | _acb_vec_clear(yb, len); | |
87 | _acb_vec_clear(yayb, len); | |
88 | } | |
89 | ||
90 | flint_randclear(state); | |
91 | flint_cleanup(); | |
92 | flint_printf("PASS\n"); | |
93 | return EXIT_SUCCESS; | |
94 | } |
0 | /* | |
1 | Copyright (C) 2018 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_rs...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | acb_t x, xk, y, ya, yb, yayb; | |
26 | ulong k, n, m1, m2, m3; | |
27 | slong prec; | |
28 | ||
29 | prec = 2 + n_randint(state, 200); | |
30 | k = n_randint(state, 10); | |
31 | n = n_randint(state, 50); | |
32 | m1 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(n + k, 1)); | |
33 | m2 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(k, 1)); | |
34 | m3 = n_randint(state, 2) ? 0 : 1 + n_randint(state, FLINT_MAX(n, 1)); | |
35 | ||
36 | acb_init(x); | |
37 | acb_init(xk); | |
38 | acb_init(y); | |
39 | acb_init(ya); | |
40 | acb_init(yb); | |
41 | acb_init(yayb); | |
42 | ||
43 | acb_randtest(x, state, prec, 10); | |
44 | acb_add_ui(xk, x, k, prec); | |
45 | ||
46 | acb_hypgeom_rising_ui_rs(y, x, n + k, m1, prec); | |
47 | acb_hypgeom_rising_ui_rs(ya, x, k, m2, prec); | |
48 | acb_hypgeom_rising_ui_rs(yb, xk, n, m3, prec); | |
49 | acb_mul(yayb, ya, yb, prec); | |
50 | ||
51 | if (!acb_overlaps(y, yayb)) | |
52 | { | |
53 | flint_printf("FAIL\n\n"); | |
54 | flint_printf("k = %wu, n = %wu, m1 = %wu, m2 = %wu, m3 = %wu\n\n", k, n, m1, m2, m3); | |
55 | flint_printf("x = "); acb_printn(x, 100, 0); flint_printf("\n\n"); | |
56 | flint_printf("y = "); acb_printn(y, 100, 0); flint_printf("\n\n"); | |
57 | flint_printf("ya = "); acb_printn(ya, 100, 0); flint_printf("\n\n"); | |
58 | flint_printf("yb = "); acb_printn(yb, 100, 0); flint_printf("\n\n"); | |
59 | flint_printf("yayb = "); acb_printn(yayb, 100, 0); flint_printf("\n\n"); | |
60 | flint_abort(); | |
61 | } | |
62 | ||
63 | acb_clear(x); | |
64 | acb_clear(xk); | |
65 | acb_clear(y); | |
66 | acb_clear(ya); | |
67 | acb_clear(yb); | |
68 | acb_clear(yayb); | |
69 | } | |
70 | ||
71 | flint_randclear(state); | |
72 | flint_cleanup(); | |
73 | flint_printf("PASS\n"); | |
74 | return EXIT_SUCCESS; | |
75 | } |
18 | 18 | extern "C" { |
19 | 19 | #endif |
20 | 20 | |
21 | void acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec); | |
21 | 22 | void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec); |
23 | void acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec); | |
24 | void acb_hypgeom_rising_ui_rec(acb_t res, const acb_t x, ulong n, slong prec); | |
25 | void acb_hypgeom_rising_ui(acb_t y, const acb_t x, ulong n, slong prec); | |
26 | void acb_hypgeom_rising(acb_t y, const acb_t x, const acb_t n, slong prec); | |
27 | ||
28 | void acb_hypgeom_rising_ui_jet_powsum(acb_ptr res, const acb_t x, ulong n, slong len, slong prec); | |
29 | void acb_hypgeom_rising_ui_jet_rs(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec); | |
30 | void acb_hypgeom_rising_ui_jet_bs(acb_ptr res, const acb_t x, ulong n, slong len, slong prec); | |
31 | void acb_hypgeom_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec); | |
32 | ||
33 | void acb_hypgeom_log_rising_ui_jet(acb_ptr res, const acb_t z, ulong r, slong len, slong prec); | |
34 | void acb_hypgeom_log_rising_ui(acb_ptr res, const acb_t z, ulong r, slong prec); | |
35 | ||
36 | void acb_hypgeom_gamma_stirling_sum_horner(acb_t s, const acb_t z, slong N, slong prec); | |
37 | void acb_hypgeom_gamma_stirling_sum_improved(acb_t s, const acb_t z, slong N, slong K, slong prec); | |
38 | void acb_hypgeom_gamma_stirling(acb_t res, const acb_t x, int reciprocal, slong prec); | |
39 | int acb_hypgeom_gamma_taylor(acb_t res, const acb_t x, int reciprocal, slong prec); | |
40 | void acb_hypgeom_gamma(acb_t y, const acb_t x, slong prec); | |
41 | void acb_hypgeom_rgamma(acb_t y, const acb_t x, slong prec); | |
42 | ||
43 | void acb_hypgeom_lgamma(acb_t y, const acb_t x, slong prec); | |
22 | 44 | |
23 | 45 | void acb_hypgeom_pfq_bound_factor(mag_t C, |
24 | 46 | acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, ulong n); |
10 | 10 | |
11 | 11 | #include "acb_poly.h" |
12 | 12 | |
13 | void acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
13 | void acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
14 | 14 | const acb_t x, int use_reflect, int digamma, slong prec); |
15 | 15 | |
16 | 16 | void |
59 | 59 | acb_init(zr); |
60 | 60 | |
61 | 61 | /* use Stirling series */ |
62 | acb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 1, wp); | |
62 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 1, wp); | |
63 | 63 | |
64 | 64 | /* psi(x) = psi((1-x)+r) - h(1-x,r) - pi*cot(pi*x) */ |
65 | 65 | if (reflect) |
12 | 12 | |
13 | 13 | void acb_gamma_stirling_bound(mag_ptr err, const acb_t x, slong k0, slong knum, slong n); |
14 | 14 | |
15 | void acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
15 | void acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
16 | 16 | const acb_t x, int use_reflect, int digamma, slong prec); |
17 | 17 | |
18 | 18 | void arb_gamma_stirling_coeff(arb_t b, ulong k, int digamma, slong prec); |
231 | 231 | acb_init(f + 1); |
232 | 232 | |
233 | 233 | /* use Stirling series */ |
234 | acb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
234 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
235 | 235 | |
236 | 236 | /* gamma(h) = (rf(1-h, r) * pi) / (gamma(1-h+r) sin(pi h)), h = h0 + t*/ |
237 | 237 | if (reflect) |
0 | /* | |
1 | Copyright (C) 2021 Matthias Gessinger | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_poly.h" | |
12 | ||
13 | void | |
14 | _acb_poly_graeffe_transform(acb_ptr b, acb_srcptr a, slong len, slong prec) | |
15 | { | |
16 | slong lo, le, ls, deg, i; | |
17 | acb_ptr pe, po; | |
18 | ||
19 | if (len <= 1) | |
20 | { | |
21 | if (len) | |
22 | acb_sqr(b, a, prec); | |
23 | return; | |
24 | } | |
25 | ||
26 | deg = len - 1; | |
27 | lo = len / 2; | |
28 | ls = 2 * lo - 1; | |
29 | le = deg / 2 + 1; | |
30 | po = _acb_vec_init(lo); | |
31 | pe = _acb_vec_init(FLINT_MAX(le, ls)); | |
32 | ||
33 | for (i = deg; i >= 0; i--) | |
34 | { | |
35 | if (i % 2 == 0) | |
36 | acb_set(pe + i / 2, a + i); | |
37 | else | |
38 | acb_set(po + i / 2, a + i); | |
39 | } | |
40 | ||
41 | _acb_poly_mul(b, pe, le, pe, le, prec); | |
42 | _acb_poly_mul(pe, po, lo, po, lo, prec); | |
43 | _acb_poly_sub(b + 1, b + 1, ls, pe, ls, prec); | |
44 | ||
45 | if (len % 2 == 0) | |
46 | { | |
47 | _acb_vec_neg(b, b, deg); | |
48 | acb_set(b + deg, pe + (deg - 1)); | |
49 | } | |
50 | ||
51 | _acb_vec_clear(pe, FLINT_MAX(le, ls)); | |
52 | _acb_vec_clear(po, lo); | |
53 | } | |
54 | ||
55 | void | |
56 | acb_poly_graeffe_transform(acb_poly_t b, const acb_poly_t a, slong prec) | |
57 | { | |
58 | acb_poly_fit_length(b, a->length); | |
59 | _acb_poly_graeffe_transform(b->coeffs, a->coeffs, a->length, prec); | |
60 | _acb_poly_set_length(b, a->length); | |
61 | } |
14 | 14 | _acb_log_rising_correct_branch(acb_t t, |
15 | 15 | const acb_t t_wrong, const acb_t z, ulong r, slong prec); |
16 | 16 | |
17 | void acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
17 | void acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
18 | 18 | const acb_t x, int use_reflect, int digamma, slong prec); |
19 | 19 | |
20 | 20 | void |
21 | 21 | _acb_poly_gamma_stirling_eval(acb_ptr res, const acb_t z, slong n, slong num, slong prec); |
22 | ||
23 | static __inline__ void | |
24 | _log_rising_ui_series(acb_ptr t, const acb_t x, slong r, slong len, slong prec) | |
25 | { | |
26 | acb_struct f[2]; | |
27 | slong rflen; | |
28 | ||
29 | acb_init(f); | |
30 | acb_init(f + 1); | |
31 | ||
32 | acb_set(f, x); | |
33 | acb_one(f + 1); | |
34 | ||
35 | rflen = FLINT_MIN(len, r + 1); | |
36 | _acb_poly_rising_ui_series(t, f, FLINT_MIN(2, len), r, rflen, prec); | |
37 | _acb_poly_log_series(t, t, rflen, len, prec); | |
38 | ||
39 | _acb_log_rising_correct_branch(t, t, x, r, prec); | |
40 | ||
41 | acb_clear(f); | |
42 | acb_clear(f + 1); | |
43 | } | |
44 | 22 | |
45 | 23 | void |
46 | 24 | _acb_poly_lgamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong len, slong prec) |
94 | 72 | acb_init(zr); |
95 | 73 | |
96 | 74 | /* use Stirling series */ |
97 | acb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
75 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
98 | 76 | |
99 | 77 | if (reflect) |
100 | 78 | { |
103 | 81 | { |
104 | 82 | acb_sub_ui(u, h, 1, wp); |
105 | 83 | acb_neg(u, u); |
106 | _log_rising_ui_series(t, u, r, len, wp); | |
84 | acb_hypgeom_log_rising_ui_jet(t, u, r, len, wp); | |
107 | 85 | for (i = 1; i < len; i += 2) |
108 | 86 | acb_neg(t + i, t + i); |
109 | 87 | } |
142 | 120 | |
143 | 121 | if (r != 0) |
144 | 122 | { |
145 | _log_rising_ui_series(t, h, r, len, wp); | |
123 | acb_hypgeom_log_rising_ui_jet(t, h, r, len, wp); | |
146 | 124 | _acb_vec_sub(u, u, t, len, wp); |
147 | 125 | } |
148 | 126 | } |
10 | 10 | |
11 | 11 | #include "acb_poly.h" |
12 | 12 | |
13 | void acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
13 | void acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
14 | 14 | const acb_t x, int use_reflect, int digamma, slong prec); |
15 | 15 | |
16 | 16 | void |
55 | 55 | acb_init(f + 1); |
56 | 56 | |
57 | 57 | /* otherwise use Stirling series */ |
58 | acb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
58 | acb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
59 | 59 | |
60 | 60 | /* rgamma(h) = (gamma(1-h+r) sin(pi h)) / (rf(1-h, r) * pi), h = h0 + t*/ |
61 | 61 | if (reflect) |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "acb_poly.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | acb_poly_t a, b, c; | |
18 | acb_ptr roots; | |
19 | acb_t leading; | |
20 | ||
21 | flint_printf("graeffe_transform...."); | |
22 | fflush(stdout); | |
23 | ||
24 | flint_randinit(state); | |
25 | ||
26 | acb_poly_init(a); | |
27 | acb_poly_init(b); | |
28 | acb_poly_init(c); | |
29 | ||
30 | acb_init(leading); | |
31 | ||
32 | for (iter = 0; iter < 200 * arb_test_multiplier(); iter++) | |
33 | { | |
34 | slong n, prec, i; | |
35 | ||
36 | n = n_randint(state, 20); | |
37 | prec = 2 + n_randint(state, 256); | |
38 | ||
39 | roots = _acb_vec_init(n); | |
40 | ||
41 | acb_randtest(leading, state, prec, n_randint(state, 16)); | |
42 | ||
43 | for (i = 0; i < n; i++) | |
44 | acb_randtest(roots + i, state, prec, n_randint(state, 16)); | |
45 | acb_poly_product_roots(a, roots, n, prec); | |
46 | acb_poly_scalar_mul(a, a, leading, prec); | |
47 | ||
48 | for (i = 0; i < n; i++) | |
49 | acb_sqr(roots + i, roots + i, prec); | |
50 | acb_sqr(leading, leading, prec); | |
51 | acb_poly_product_roots(c, roots, n, prec); | |
52 | acb_poly_scalar_mul(c, c, leading, prec); | |
53 | ||
54 | acb_poly_graeffe_transform(b, a, prec); | |
55 | if (!acb_poly_overlaps(b, c)) | |
56 | { | |
57 | flint_printf("FAIL (overlap)\n\n"); | |
58 | flint_printf("n = %wd, prec = %wd\n\n", n, prec); | |
59 | ||
60 | flint_printf("a: "); acb_poly_printd(a, 15); flint_printf("\n\n"); | |
61 | flint_printf("b: "); acb_poly_printd(b, 15); flint_printf("\n\n"); | |
62 | flint_printf("c: "); acb_poly_printd(c, 15); flint_printf("\n\n"); | |
63 | ||
64 | flint_abort(); | |
65 | } | |
66 | ||
67 | acb_poly_graeffe_transform(a, a, prec); | |
68 | if (!acb_poly_equal(a, b)) | |
69 | { | |
70 | flint_printf("FAIL (aliasing)\n\n"); | |
71 | flint_printf("n = %wd, prec = %wd\n\n", n, prec); | |
72 | ||
73 | flint_printf("a: "); acb_poly_printd(a, 15); flint_printf("\n\n"); | |
74 | flint_printf("b: "); acb_poly_printd(b, 15); flint_printf("\n\n"); | |
75 | flint_printf("c: "); acb_poly_printd(c, 15); flint_printf("\n\n"); | |
76 | ||
77 | flint_abort(); | |
78 | } | |
79 | ||
80 | _acb_vec_clear(roots, n); | |
81 | } | |
82 | ||
83 | acb_poly_clear(a); | |
84 | acb_poly_clear(b); | |
85 | acb_poly_clear(c); | |
86 | ||
87 | acb_clear(leading); | |
88 | ||
89 | flint_randclear(state); | |
90 | flint_cleanup(); | |
91 | flint_printf("PASS\n"); | |
92 | return EXIT_SUCCESS; | |
93 | } | |
94 |
192 | 192 | |
193 | 193 | void acb_poly_binomial_transform(acb_poly_t b, const acb_poly_t a, slong len, slong prec); |
194 | 194 | |
195 | void _acb_poly_graeffe_transform(acb_ptr b, acb_srcptr a, slong len, slong prec); | |
196 | ||
197 | void acb_poly_graeffe_transform(acb_poly_t b, const acb_poly_t a, slong prec); | |
198 | ||
195 | 199 | |
196 | 200 | |
197 | 201 | void acb_poly_set(acb_poly_t dest, const acb_poly_t src); |
10 | 10 | |
11 | 11 | #include "arb.h" |
12 | 12 | #include "hypgeom.h" |
13 | #include "arb_hypgeom.h" | |
13 | 14 | |
14 | 15 | typedef struct |
15 | 16 | { |
332 | 333 | euler_bsplit_clear(sum); |
333 | 334 | } |
334 | 335 | |
335 | ARB_DEF_CACHED_CONSTANT(arb_const_euler, arb_const_euler_eval) | |
336 | ||
336 | ARB_DEF_CACHED_CONSTANT(arb_const_euler_brent_mcmillan, arb_const_euler_eval) | |
337 | ||
338 | extern const mp_limb_t arb_hypgeom_gamma_tab_limbs[]; | |
339 | ||
340 | void | |
341 | arb_const_euler(arb_t res, slong prec) | |
342 | { | |
343 | if (prec < ARB_HYPGEOM_GAMMA_TAB_PREC - 16) | |
344 | { | |
345 | slong exp; | |
346 | mp_size_t n; | |
347 | ||
348 | n = ARB_HYPGEOM_GAMMA_TAB_PREC / FLINT_BITS; | |
349 | ||
350 | /* just reading the table is known to give the correct rounding */ | |
351 | _arf_set_round_mpn(arb_midref(res), &exp, arb_hypgeom_gamma_tab_limbs + n, n, 0, prec, ARF_RND_NEAR); | |
352 | _fmpz_set_si_small(ARF_EXPREF(arb_midref(res)), exp); | |
353 | ||
354 | /* 1/2 ulp error */ | |
355 | _fmpz_set_si_small(MAG_EXPREF(arb_radref(res)), exp - prec); | |
356 | MAG_MAN(arb_radref(res)) = MAG_ONE_HALF; | |
357 | } | |
358 | else | |
359 | { | |
360 | arb_const_euler_brent_mcmillan(res, prec); | |
361 | } | |
362 | } | |
363 |
11 | 11 | #include "flint/arith.h" |
12 | 12 | #include "arb.h" |
13 | 13 | |
14 | void arb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
14 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
15 | 15 | const arb_t x, int use_reflect, int digamma, slong prec); |
16 | 16 | |
17 | 17 | void arb_gamma_stirling_eval(arb_t s, const arb_t z, slong nterms, int digamma, slong prec); |
62 | 62 | |
63 | 63 | wp = prec + FLINT_BIT_COUNT(prec); |
64 | 64 | |
65 | arb_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 1, wp); | |
65 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 1, wp); | |
66 | 66 | |
67 | 67 | arb_init(t); |
68 | 68 | arb_init(u); |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | void | |
14 | arb_fma_arf(arb_t res, const arb_t x, const arf_t y, const arb_t z, slong prec) | |
15 | { | |
16 | mag_t ym; | |
17 | int inexact; | |
18 | ||
19 | if (arb_is_exact(x)) | |
20 | { | |
21 | inexact = arf_fma(arb_midref(res), arb_midref(x), y, arb_midref(z), prec, ARB_RND); | |
22 | ||
23 | if (inexact) | |
24 | arf_mag_add_ulp(arb_radref(res), arb_radref(z), arb_midref(res), prec); | |
25 | else | |
26 | mag_set(arb_radref(res), arb_radref(z)); | |
27 | } | |
28 | else if (ARB_IS_LAGOM(res) && ARB_IS_LAGOM(x) && ARF_IS_LAGOM(y) && ARB_IS_LAGOM(z)) | |
29 | { | |
30 | mag_t tm; | |
31 | ||
32 | mag_fast_init_set_arf(ym, y); | |
33 | *tm = *arb_radref(z); | |
34 | mag_fast_addmul(tm, ym, arb_radref(x)); | |
35 | *arb_radref(res) = *tm; | |
36 | ||
37 | inexact = arf_fma(arb_midref(res), arb_midref(x), y, arb_midref(z), prec, ARB_RND); | |
38 | if (inexact) | |
39 | arf_mag_fast_add_ulp(arb_radref(res), arb_radref(res), arb_midref(res), prec); | |
40 | } | |
41 | else | |
42 | { | |
43 | mag_t tm; | |
44 | mag_init(tm); | |
45 | ||
46 | mag_init_set_arf(ym, y); | |
47 | mag_set(tm, arb_radref(z)); | |
48 | ||
49 | mag_addmul(tm, ym, arb_radref(x)); | |
50 | mag_set(arb_radref(res), tm); | |
51 | ||
52 | inexact = arf_fma(arb_midref(res), arb_midref(x), y, arb_midref(z), prec, ARB_RND); | |
53 | if (inexact) | |
54 | arf_mag_add_ulp(arb_radref(res), arb_radref(res), arb_midref(res), prec); | |
55 | ||
56 | mag_clear(tm); | |
57 | mag_clear(ym); | |
58 | } | |
59 | } | |
60 | ||
61 | void | |
62 | arb_fma(arb_t res, const arb_t x, const arb_t y, const arb_t z, slong prec) | |
63 | { | |
64 | mag_t zr, xm, ym; | |
65 | int inexact; | |
66 | ||
67 | if (arb_is_exact(y)) | |
68 | { | |
69 | arb_fma_arf(res, x, arb_midref(y), z, prec); | |
70 | } | |
71 | else if (arb_is_exact(x)) | |
72 | { | |
73 | arb_fma_arf(res, y, arb_midref(x), z, prec); | |
74 | } | |
75 | else if (ARB_IS_LAGOM(res) && ARB_IS_LAGOM(x) && ARB_IS_LAGOM(y) && ARB_IS_LAGOM(z)) | |
76 | { | |
77 | mag_fast_init_set_arf(xm, arb_midref(x)); | |
78 | mag_fast_init_set_arf(ym, arb_midref(y)); | |
79 | ||
80 | mag_fast_init_set(zr, arb_radref(z)); | |
81 | mag_fast_addmul(zr, xm, arb_radref(y)); | |
82 | mag_fast_addmul(zr, ym, arb_radref(x)); | |
83 | mag_fast_addmul(zr, arb_radref(x), arb_radref(y)); | |
84 | ||
85 | inexact = arf_fma(arb_midref(res), arb_midref(x), arb_midref(y), arb_midref(z), | |
86 | prec, ARF_RND_DOWN); | |
87 | ||
88 | if (inexact) | |
89 | arf_mag_fast_add_ulp(zr, zr, arb_midref(res), prec); | |
90 | ||
91 | *arb_radref(res) = *zr; | |
92 | } | |
93 | else | |
94 | { | |
95 | mag_init_set_arf(xm, arb_midref(x)); | |
96 | mag_init_set_arf(ym, arb_midref(y)); | |
97 | ||
98 | mag_init_set(zr, arb_radref(z)); | |
99 | mag_addmul(zr, xm, arb_radref(y)); | |
100 | mag_addmul(zr, ym, arb_radref(x)); | |
101 | mag_addmul(zr, arb_radref(x), arb_radref(y)); | |
102 | ||
103 | inexact = arf_fma(arb_midref(res), arb_midref(x), arb_midref(y), arb_midref(z), | |
104 | prec, ARF_RND_DOWN); | |
105 | ||
106 | if (inexact) | |
107 | arf_mag_add_ulp(arb_radref(res), zr, arb_midref(res), prec); | |
108 | else | |
109 | mag_set(arb_radref(res), zr); | |
110 | ||
111 | mag_clear(zr); | |
112 | mag_clear(xm); | |
113 | mag_clear(ym); | |
114 | } | |
115 | } | |
116 | ||
117 | void | |
118 | arb_fma_ui(arb_t res, const arb_t x, ulong y, const arb_t z, slong prec) | |
119 | { | |
120 | arf_t t; | |
121 | arf_init_set_ui(t, y); /* no need to free */ | |
122 | arb_fma_arf(res, x, t, z, prec); | |
123 | } | |
124 |
9 | 9 | */ |
10 | 10 | |
11 | 11 | #include "arb.h" |
12 | #include "acb.h" | |
12 | #include "arb_hypgeom.h" | |
13 | 13 | #include "bernoulli.h" |
14 | #include "hypgeom.h" | |
15 | ||
16 | /* tuning factor */ | |
17 | #define GAMMA_STIRLING_BETA 0.27 | |
18 | ||
19 | #define PI 3.1415926535897932385 | |
20 | ||
21 | static slong | |
22 | choose_n(double log2z, double argz, int digamma, slong prec) | |
23 | { | |
24 | double argf, boundn; | |
25 | slong n; | |
26 | ||
27 | argf = 1.0 / cos(0.5 * argz); | |
28 | argf = log(argf) * (1. / log(2)); | |
29 | ||
30 | for (n = 1; ; n++) | |
31 | { | |
32 | if (digamma) | |
33 | boundn = bernoulli_bound_2exp_si(2*n) - (2*n)*log2z + (2*n+1)*argf; | |
34 | else | |
35 | boundn = bernoulli_bound_2exp_si(2*n) - (2*n-1)*log2z + (2*n)*argf; | |
36 | ||
37 | /* success */ | |
38 | if (boundn <= -prec) | |
39 | return n; | |
40 | ||
41 | /* if the term magnitude does not decrease, r is too small */ | |
42 | if (boundn > 1) | |
43 | { | |
44 | flint_printf("exception: gamma_stirling_choose_param failed to converge\n"); | |
45 | flint_abort(); | |
46 | } | |
47 | } | |
48 | } | |
49 | ||
50 | static void | |
51 | choose_small(int * reflect, slong * r, slong * n, | |
52 | double x, double y, int use_reflect, int digamma, slong prec) | |
53 | { | |
54 | double w, argz, log2z; | |
55 | slong rr; | |
56 | ||
57 | /* use reflection formula if very negative */ | |
58 | if (x < -5.0 && use_reflect) | |
59 | { | |
60 | *reflect = 1; | |
61 | x = 1.0 - x; | |
62 | } | |
63 | else | |
64 | { | |
65 | *reflect = 0; | |
66 | } | |
67 | ||
68 | /* argument reduction until |z| >= w */ | |
69 | w = FLINT_MAX(1.0, GAMMA_STIRLING_BETA * prec); | |
70 | ||
71 | rr = 0; | |
72 | while (x < 1.0 || x*x + y*y < w*w) | |
73 | { | |
74 | x++; | |
75 | rr++; | |
76 | } | |
77 | ||
78 | log2z = 0.5 * log(x*x + y*y) * 1.44269504088896341; | |
79 | argz = atan2(y, x); | |
80 | ||
81 | *r = rr; | |
82 | *n = choose_n(log2z, argz, digamma, prec); | |
83 | } | |
84 | ||
85 | static void | |
86 | choose_large(int * reflect, slong * r, slong * n, | |
87 | const arf_t a, const arf_t b, int use_reflect, int digamma, slong prec) | |
88 | { | |
89 | if (use_reflect && arf_sgn(a) < 0) | |
90 | *reflect = 1; | |
91 | else | |
92 | *reflect = 0; | |
93 | ||
94 | *r = 0; | |
95 | ||
96 | /* so big that we will certainly have n = 0 */ | |
97 | if (arf_cmpabs_2exp_si(a, WORD_MAX / 8) >= 0 || | |
98 | arf_cmpabs_2exp_si(b, WORD_MAX / 8) >= 0) | |
99 | { | |
100 | *n = 0; | |
101 | } | |
102 | else | |
103 | { | |
104 | slong ab, bb; | |
105 | double log2z, argz; | |
106 | ||
107 | ab = arf_abs_bound_lt_2exp_si(a); | |
108 | bb = arf_abs_bound_lt_2exp_si(b); | |
109 | ||
110 | log2z = FLINT_MAX(ab, bb); | |
111 | ||
112 | /* piecewise approximation of the argument */ | |
113 | if (arf_is_zero(b)) | |
114 | { | |
115 | if ((arf_sgn(a) < 0) && !(*reflect)) | |
116 | argz = PI; | |
117 | else | |
118 | argz = 0.0; | |
119 | } | |
120 | else | |
121 | { | |
122 | if ((arf_sgn(a) < 0) && !(*reflect)) | |
123 | if (arf_cmpabs(a, b) <= 0) | |
124 | argz = PI * 0.75; | |
125 | else | |
126 | argz = PI; | |
127 | else | |
128 | if (arf_cmpabs(a, b) <= 0) | |
129 | argz = PI * 0.25; | |
130 | else | |
131 | argz = PI * 0.5; | |
132 | } | |
133 | ||
134 | if (argz == PI) | |
135 | *n = 0; | |
136 | else | |
137 | *n = choose_n(log2z, argz, digamma, prec); | |
138 | } | |
139 | } | |
140 | ||
141 | ||
142 | void | |
143 | acb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
144 | const acb_t z, int use_reflect, int digamma, slong prec) | |
145 | { | |
146 | const arf_struct * a = arb_midref(acb_realref(z)); | |
147 | const arf_struct * b = arb_midref(acb_imagref(z)); | |
148 | ||
149 | if (!arf_is_finite(a) || !arf_is_finite(b)) | |
150 | { | |
151 | *reflect = *r = *n = 0; | |
152 | } | |
153 | else if (arf_cmpabs_2exp_si(a, 40) > 0 || arf_cmpabs_2exp_si(b, 40) > 0) | |
154 | { | |
155 | choose_large(reflect, r, n, a, b, use_reflect, digamma, prec); | |
156 | } | |
157 | else | |
158 | { | |
159 | choose_small(reflect, r, n, | |
160 | arf_get_d(a, ARF_RND_UP), | |
161 | arf_get_d(b, ARF_RND_UP), use_reflect, digamma, prec); | |
162 | } | |
163 | } | |
164 | ||
165 | void | |
166 | arb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
167 | const arb_t x, int use_reflect, int digamma, slong prec) | |
168 | { | |
169 | const arf_struct * a = arb_midref(x); | |
170 | ||
171 | if (arf_is_inf(a) || arf_is_nan(a)) | |
172 | { | |
173 | *reflect = *r = *n = 0; | |
174 | } | |
175 | else if (arf_cmpabs_2exp_si(a, 40) > 0) | |
176 | { | |
177 | arf_t b; | |
178 | arf_init(b); | |
179 | choose_large(reflect, r, n, a, b, use_reflect, digamma, prec); | |
180 | arf_clear(b); | |
181 | } | |
182 | else | |
183 | { | |
184 | choose_small(reflect, r, n, | |
185 | arf_get_d(a, ARF_RND_UP), 0.0, use_reflect, digamma, prec); | |
186 | } | |
187 | } | |
14 | ||
15 | /* todo: move/cleanup helper functions */ | |
188 | 16 | |
189 | 17 | void |
190 | 18 | acb_gamma_bound_phase(mag_t bound, const acb_t z) |
348 | 176 | fmpz_clear(d); |
349 | 177 | } |
350 | 178 | |
179 | ||
180 | ||
351 | 181 | void |
352 | 182 | arb_gamma_stirling_eval(arb_t s, const arb_t z, slong nterms, int digamma, slong prec) |
353 | 183 | { |
436 | 266 | } |
437 | 267 | |
438 | 268 | void |
439 | arb_gamma_fmpq_stirling(arb_t y, const fmpq_t a, slong prec) | |
440 | { | |
441 | int reflect; | |
442 | slong r, n, wp; | |
443 | arb_t x, t, u, v; | |
444 | ||
445 | wp = prec + FLINT_BIT_COUNT(prec); | |
446 | ||
447 | arb_init(x); | |
448 | arb_init(t); | |
449 | arb_init(u); | |
450 | arb_init(v); | |
451 | ||
452 | arb_set_fmpq(x, a, wp); | |
453 | arb_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
454 | ||
455 | if (reflect) | |
456 | { | |
457 | /* gamma(x) = (rf(1-x, r) * pi) / (gamma(1-x+r) sin(pi x)) */ | |
458 | fmpq_t b; | |
459 | fmpq_init(b); | |
460 | fmpz_sub(fmpq_numref(b), fmpq_denref(a), fmpq_numref(a)); | |
461 | fmpz_set(fmpq_denref(b), fmpq_denref(a)); | |
462 | arb_rising_fmpq_ui(u, b, r, wp); | |
463 | fmpq_clear(b); | |
464 | arb_const_pi(v, wp); | |
465 | arb_mul(u, u, v, wp); | |
466 | arb_sub_ui(t, x, 1, wp); | |
467 | arb_neg(t, t); | |
468 | arb_add_ui(t, t, r, wp); | |
469 | arb_gamma_stirling_eval(v, t, n, 0, wp); | |
470 | arb_exp(v, v, wp); | |
471 | arb_sin_pi_fmpq(t, a, wp); | |
472 | arb_mul(v, v, t, wp); | |
473 | } | |
474 | else | |
475 | { | |
476 | /* gamma(x) = gamma(x+r) / rf(x,r) */ | |
477 | arb_add_ui(t, x, r, wp); | |
478 | arb_gamma_stirling_eval(u, t, n, 0, wp); | |
479 | arb_exp(u, u, prec); | |
480 | arb_rising_fmpq_ui(v, a, r, wp); | |
481 | } | |
482 | ||
483 | arb_div(y, u, v, prec); | |
484 | ||
485 | arb_clear(t); | |
486 | arb_clear(u); | |
487 | arb_clear(v); | |
488 | arb_clear(x); | |
489 | } | |
490 | ||
491 | void | |
492 | arb_gamma_const_1_3_eval(arb_t s, slong prec) | |
493 | { | |
494 | hypgeom_t series; | |
495 | arb_t t, u; | |
496 | slong wp = prec + 4 + 2 * FLINT_BIT_COUNT(prec); | |
497 | ||
498 | arb_init(t); | |
499 | arb_init(u); | |
500 | ||
501 | hypgeom_init(series); | |
502 | ||
503 | fmpz_poly_set_str(series->A, "1 1"); | |
504 | fmpz_poly_set_str(series->B, "1 1"); | |
505 | fmpz_poly_set_str(series->P, "4 5 -46 108 -72"); | |
506 | fmpz_poly_set_str(series->Q, "4 0 0 0 512000"); | |
507 | ||
508 | prec += FLINT_CLOG2(prec); | |
509 | ||
510 | arb_hypgeom_infsum(s, t, series, wp, wp); | |
511 | ||
512 | arb_sqrt_ui(u, 10, wp); | |
513 | arb_mul(t, t, u, wp); | |
514 | ||
515 | arb_const_pi(u, wp); | |
516 | arb_pow_ui(u, u, 4, wp); | |
517 | arb_mul_ui(u, u, 12, wp); | |
518 | arb_mul(s, s, u, wp); | |
519 | ||
520 | arb_div(s, s, t, wp); | |
521 | arb_root_ui(s, s, 2, wp); | |
522 | arb_root_ui(s, s, 3, prec); | |
523 | ||
524 | hypgeom_clear(series); | |
525 | arb_clear(t); | |
526 | arb_clear(u); | |
527 | } | |
528 | ||
529 | ARB_DEF_CACHED_CONSTANT(arb_gamma_const_1_3, arb_gamma_const_1_3_eval) | |
530 | ||
531 | void | |
532 | arb_gamma_const_1_4_eval(arb_t x, slong prec) | |
533 | { | |
534 | arb_t t, u; | |
535 | slong wp = prec + 4 + 2 * FLINT_BIT_COUNT(prec); | |
536 | ||
537 | arb_init(t); | |
538 | arb_init(u); | |
539 | ||
540 | arb_one(t); | |
541 | arb_sqrt_ui(u, 2, wp); | |
542 | arb_agm(x, t, u, wp); | |
543 | ||
544 | arb_const_pi(t, wp); | |
545 | arb_mul_2exp_si(t, t, 1); | |
546 | arb_sqrt(u, t, wp); | |
547 | arb_mul(u, u, t, wp); | |
548 | ||
549 | arb_div(x, u, x, wp); | |
550 | arb_sqrt(x, x, wp); | |
551 | ||
552 | arb_clear(t); | |
553 | arb_clear(u); | |
554 | } | |
555 | ||
556 | ARB_DEF_CACHED_CONSTANT(arb_gamma_const_1_4, arb_gamma_const_1_4_eval) | |
557 | ||
558 | void | |
559 | arb_gamma_small_frac(arb_t y, unsigned int p, unsigned int q, slong prec) | |
560 | { | |
561 | slong wp = prec + 4; | |
562 | ||
563 | if (q == 1) | |
564 | { | |
565 | arb_one(y); | |
566 | } | |
567 | else if (q == 2) /* p = 1 */ | |
568 | { | |
569 | arb_const_sqrt_pi(y, prec); | |
570 | } | |
571 | else if (q == 3) | |
572 | { | |
573 | if (p == 1) | |
574 | { | |
575 | arb_gamma_const_1_3(y, prec); | |
576 | } | |
577 | else /* p = 2 */ | |
578 | { | |
579 | arb_t t; | |
580 | arb_init(t); | |
581 | arb_gamma_const_1_3(y, wp); | |
582 | arb_sqrt_ui(t, 3, wp); | |
583 | arb_mul(y, y, t, wp); | |
584 | arb_const_pi(t, wp); | |
585 | arb_div(y, t, y, prec); | |
586 | arb_mul_2exp_si(y, y, 1); | |
587 | arb_clear(t); | |
588 | } | |
589 | } | |
590 | else if (q == 4) | |
591 | { | |
592 | if (p == 1) | |
593 | { | |
594 | arb_gamma_const_1_4(y, prec); | |
595 | } | |
596 | else /* p = 3 */ | |
597 | { | |
598 | arb_t t; | |
599 | arb_init(t); | |
600 | arb_sqrt_ui(y, 2, wp); | |
601 | arb_const_pi(t, wp); | |
602 | arb_mul(y, y, t, wp); | |
603 | arb_gamma_const_1_4(t, wp); | |
604 | arb_div(y, y, t, prec); | |
605 | arb_clear(t); | |
606 | } | |
607 | } | |
608 | else if (q == 6) | |
609 | { | |
610 | arb_t t; | |
611 | arb_init(t); | |
612 | arb_const_pi(t, wp); | |
613 | arb_div_ui(t, t, 3, wp); | |
614 | arb_sqrt(t, t, wp); | |
615 | arb_set_ui(y, 2); | |
616 | arb_root_ui(y, y, 3, wp); | |
617 | arb_mul(t, t, y, wp); | |
618 | arb_gamma_const_1_3(y, wp); | |
619 | arb_mul(y, y, y, prec); | |
620 | ||
621 | if (p == 1) | |
622 | { | |
623 | arb_div(y, y, t, prec); | |
624 | } | |
625 | else /* p = 5 */ | |
626 | { | |
627 | arb_div(y, t, y, wp); | |
628 | arb_const_pi(t, wp); | |
629 | arb_mul(y, y, t, prec); | |
630 | arb_mul_2exp_si(y, y, 1); | |
631 | } | |
632 | ||
633 | arb_clear(t); | |
634 | } | |
635 | else | |
636 | { | |
637 | flint_printf("small fraction not implemented!\n"); | |
638 | flint_abort(); | |
639 | } | |
640 | } | |
641 | ||
642 | slong _arb_compute_bs_exponents(slong * tab, slong n); | |
643 | slong _arb_get_exp_pos(const slong * tab, slong step); | |
644 | ||
645 | static void | |
646 | bsplit2(arb_t P, arb_t Q, const fmpz_t zp, const fmpz_t zq, | |
647 | const slong * xexp, arb_srcptr xpow, | |
648 | ulong N, slong a, slong b, int cont, slong prec) | |
649 | { | |
650 | if (b - a == 1) | |
651 | { | |
652 | fmpz_t t; | |
653 | fmpz_init(t); | |
654 | fmpz_set(t, zp); | |
655 | fmpz_addmul_ui(t, zq, a + 1); | |
656 | arb_set_fmpz(P, t); | |
657 | arb_set(Q, P); | |
658 | fmpz_clear(t); | |
659 | } | |
660 | else | |
661 | { | |
662 | arb_t Pb, Qb; | |
663 | slong step, i, m; | |
664 | ||
665 | arb_init(Pb); | |
666 | arb_init(Qb); | |
667 | ||
668 | step = (b - a) / 2; | |
669 | m = a + step; | |
670 | ||
671 | bsplit2(P, Q, zp, zq, xexp, xpow, N, a, m, 1, prec); | |
672 | bsplit2(Pb, Qb, zp, zq, xexp, xpow, N, m, b, 1, prec); | |
673 | ||
674 | arb_mul(P, P, Pb, prec); | |
675 | arb_mul(Q, Q, Pb, prec); | |
676 | ||
677 | i = (step == 1) ? 0 : _arb_get_exp_pos(xexp, step); | |
678 | arb_addmul(Q, Qb, xpow + i, prec); | |
679 | ||
680 | arb_clear(Pb); | |
681 | arb_clear(Qb); | |
682 | } | |
683 | } | |
684 | ||
685 | static void | |
686 | bsplit3(arb_t P, arb_t Q, const fmpz_t zp, const fmpz_t zq, | |
687 | const slong * xexp, arb_srcptr xpow, | |
688 | ulong N, slong a, slong b, int cont, slong prec) | |
689 | { | |
690 | if (b - a == 1) | |
691 | { | |
692 | fmpz_t t; | |
693 | fmpz_init(t); | |
694 | arb_set(P, xpow + 0); /* N zq */ | |
695 | fmpz_set(t, zp); | |
696 | fmpz_submul_ui(t, zq, a + 1); /* zp - (a + 1) zq */ | |
697 | arb_set_fmpz(Q, t); | |
698 | fmpz_clear(t); | |
699 | } | |
700 | else | |
701 | { | |
702 | arb_t Pb, Qb; | |
703 | slong step, i, m; | |
704 | ||
705 | arb_init(Pb); | |
706 | arb_init(Qb); | |
707 | ||
708 | step = (b - a) / 2; | |
709 | m = a + step; | |
710 | ||
711 | bsplit3(P, Q, zp, zq, xexp, xpow, N, a, m, 1, prec); | |
712 | bsplit3(Pb, Qb, zp, zq, xexp, xpow, N, m, b, 1, prec); | |
713 | ||
714 | i = _arb_get_exp_pos(xexp, m - a); | |
715 | ||
716 | arb_mul(P, P, xpow + i, prec); | |
717 | if (b - m != m - a) | |
718 | arb_mul(P, P, xpow + 0, prec); | |
719 | ||
720 | arb_addmul(P, Q, Pb, prec); | |
721 | ||
722 | if (cont) | |
723 | { | |
724 | arb_mul(Q, Q, Qb, prec); | |
725 | } | |
726 | else | |
727 | { | |
728 | i = _arb_get_exp_pos(xexp, m - a); | |
729 | ||
730 | arb_mul(Q, xpow + i, xpow + i, prec); | |
731 | if (b - m != m - a) | |
732 | arb_mul(Q, Q, xpow + 0, prec); | |
733 | } | |
734 | ||
735 | arb_clear(Pb); | |
736 | arb_clear(Qb); | |
737 | } | |
738 | } | |
739 | ||
740 | double d_lambertw_branch1(double x); | |
741 | ||
742 | static ulong | |
743 | more_trailing_zeros(ulong N) | |
744 | { | |
745 | ulong bc, N2; | |
746 | ||
747 | bc = FLINT_BIT_COUNT(N); | |
748 | ||
749 | if (bc >= 8) | |
750 | { | |
751 | N2 = (N >> (bc - 5)) << (bc - 5); | |
752 | N2 += ((N2 != N) << (bc - 5)); | |
753 | return N2; | |
754 | } | |
755 | else | |
756 | { | |
757 | return N; | |
758 | } | |
759 | } | |
760 | ||
761 | #define C_LOG2 0.69314718055994530942 | |
762 | #define C_EXP1 2.7182818284590452354 | |
763 | ||
764 | static void | |
765 | build_bsplit_power_table(arb_ptr xpow, const slong * xexp, slong len, slong prec) | |
766 | { | |
767 | slong i; | |
768 | ||
769 | for (i = 1; i < len; i++) | |
770 | { | |
771 | if (xexp[i] == 2 * xexp[i-1]) | |
772 | { | |
773 | arb_mul(xpow + i, xpow + i - 1, xpow + i - 1, prec); | |
774 | } | |
775 | else if (xexp[i] == 2 * xexp[i-2]) /* prefer squaring if possible */ | |
776 | { | |
777 | arb_mul(xpow + i, xpow + i - 2, xpow + i - 2, prec); | |
778 | } | |
779 | else if (xexp[i] == 2 * xexp[i-1] + 1) | |
780 | { | |
781 | arb_mul(xpow + i, xpow + i - 1, xpow + i - 1, prec); | |
782 | arb_mul(xpow + i, xpow + i, xpow, prec); | |
783 | } | |
784 | else if (xexp[i] == 2 * xexp[i-2] + 1) | |
785 | { | |
786 | arb_mul(xpow + i, xpow + i - 2, xpow + i - 2, prec); | |
787 | arb_mul(xpow + i, xpow + i, xpow, prec); | |
788 | } | |
789 | else | |
790 | { | |
791 | flint_printf("power table has the wrong structure!\n"); | |
792 | flint_abort(); | |
793 | } | |
794 | } | |
795 | } | |
796 | ||
797 | /* assumes z in [1, 2] */ | |
798 | static void | |
799 | arb_gamma_fmpq_general_off1(arb_t res, const fmpq_t z, slong prec) | |
800 | { | |
801 | slong wp, N, n, n2, length, length2, wp2; | |
802 | double alpha; | |
803 | arb_t P, Q; | |
804 | slong *xexp, *xexp2; | |
805 | arb_ptr xpow; | |
806 | mag_t err, err2; | |
807 | ||
808 | wp = prec + 30; | |
809 | ||
810 | alpha = 0.52; /* tuning parameter between 0.5 and 1 */ | |
811 | ||
812 | N = alpha * C_LOG2 * wp; | |
813 | N = more_trailing_zeros(N); | |
814 | alpha = N / (C_LOG2 * wp); | |
815 | ||
816 | /* Terms in convergent series */ | |
817 | n = (1 - alpha) / d_lambertw((1 - alpha) / (alpha * C_EXP1)) * C_LOG2 * wp; | |
818 | ||
819 | /* Precision and terms in asymptotic series */ | |
820 | wp2 = wp * (1 - alpha); | |
821 | wp2 = FLINT_MAX(wp2, 30); | |
822 | n2 = (alpha - 1) / d_lambertw_branch1((alpha - 1) / (alpha * C_EXP1)) * C_LOG2 * wp; | |
823 | n2 = FLINT_MAX(n2, 2); /* binary splitting correctness */ | |
824 | ||
825 | mag_init(err); | |
826 | mag_init(err2); | |
827 | arb_init(P); | |
828 | arb_init(Q); | |
829 | ||
830 | /* compute the powers of x = N*zq that will appear (at least x^1) */ | |
831 | xexp = flint_calloc(2 * FLINT_BITS, sizeof(slong)); | |
832 | xexp2 = flint_calloc(2 * FLINT_BITS, sizeof(slong)); | |
833 | ||
834 | length = _arb_compute_bs_exponents(xexp, n); | |
835 | length2 = _arb_compute_bs_exponents(xexp2, n2); | |
836 | ||
837 | xpow = _arb_vec_init(FLINT_MAX(length, length2)); | |
838 | ||
839 | arb_set_fmpz(xpow + 0, fmpq_denref(z)); | |
840 | arb_mul_ui(xpow + 0, xpow + 0, N, wp); | |
841 | ||
842 | build_bsplit_power_table(xpow, xexp, length, wp); | |
843 | ||
844 | /* 1F1(1, 1+z, N) */ | |
845 | bsplit2(P, Q, fmpq_numref(z), fmpq_denref(z), xexp, xpow, N, 0, n, 0, wp); | |
846 | arb_div(P, Q, P, wp); | |
847 | ||
848 | /* Convergent series error bound: N^n / n! (1 + (N/n) + ...) */ | |
849 | mag_set_ui(err, N); | |
850 | mag_pow_ui(err, err, n); | |
851 | mag_rfac_ui(err2, n); | |
852 | mag_mul(err, err, err2); | |
853 | mag_set_ui(err2, N); | |
854 | mag_div_ui(err2, err2, n); | |
855 | mag_geom_series(err2, err2, 0); | |
856 | mag_mul(err, err, err2); | |
857 | arb_add_error_mag(P, err); | |
858 | ||
859 | /* divide 1F1 by z */ | |
860 | arb_mul_fmpz(P, P, fmpq_denref(z), wp); | |
861 | arb_div_fmpz(P, P, fmpq_numref(z), wp); | |
862 | arb_swap(res, P); | |
863 | ||
864 | build_bsplit_power_table(xpow, xexp2, length2, wp2); | |
865 | ||
866 | bsplit3(P, Q, fmpq_numref(z), fmpq_denref(z), xexp2, xpow, N, 0, n2, 0, wp2); | |
867 | arb_div(P, P, Q, wp2); | |
868 | ||
869 | /* 2F0 error bound (bounded by first omitted term) */ | |
870 | mag_fac_ui(err, n2); | |
871 | mag_set_ui_lower(err2, N); | |
872 | mag_pow_ui_lower(err2, err2, n2); | |
873 | mag_div(err, err, err2); | |
874 | arb_add_error_mag(P, err); | |
875 | ||
876 | /* N^z * exp(-N) * (1F1/z + 2F0/N) */ | |
877 | arb_div_ui(P, P, N, wp2); | |
878 | ||
879 | arb_add(res, res, P, wp); | |
880 | arb_set_ui(Q, N); | |
881 | arb_pow_fmpq(Q, Q, z, wp); | |
882 | arb_mul(res, res, Q, wp); | |
883 | ||
884 | arb_set_si(Q, -N); | |
885 | arb_exp(Q, Q, wp); | |
886 | arb_mul(res, res, Q, wp); | |
887 | ||
888 | _arb_vec_clear(xpow, FLINT_MAX(length, length2)); | |
889 | flint_free(xexp); | |
890 | flint_free(xexp2); | |
891 | ||
892 | arb_clear(P); | |
893 | arb_clear(Q); | |
894 | mag_clear(err); | |
895 | mag_clear(err2); | |
896 | } | |
897 | ||
898 | /* assumes z in (0, 1] */ | |
899 | void | |
900 | arb_gamma_fmpq_hyp(arb_t res, const fmpq_t z, slong prec) | |
901 | { | |
902 | fmpq_t t; | |
903 | fmpq_init(t); | |
904 | fmpq_add_ui(t, z, 1); | |
905 | arb_gamma_fmpq_general_off1(res, t, prec); | |
906 | arb_mul_fmpz(res, res, fmpq_denref(z), prec + 30); | |
907 | arb_div_fmpz(res, res, fmpq_numref(z), prec); | |
908 | fmpq_clear(t); | |
909 | } | |
910 | ||
911 | void | |
912 | arb_gamma_fmpq_outward(arb_t y, const fmpq_t x, slong prec) | |
913 | { | |
914 | fmpq_t a; | |
915 | fmpz_t n; | |
916 | fmpz p, q; | |
917 | slong m; | |
918 | arb_t t, u; | |
919 | ||
920 | fmpq_init(a); | |
921 | fmpz_init(n); | |
922 | arb_init(t); | |
923 | arb_init(u); | |
924 | ||
925 | /* write x = a + n with 0 < a <= 1 */ | |
926 | if (fmpz_is_one(fmpq_denref(x))) | |
927 | { | |
928 | fmpq_one(a); | |
929 | fmpz_sub_ui(n, fmpq_numref(x), 1); | |
930 | } | |
931 | else | |
932 | { | |
933 | fmpz_fdiv_qr(n, fmpq_numref(a), fmpq_numref(x), fmpq_denref(x)); | |
934 | fmpz_set(fmpq_denref(a), fmpq_denref(x)); | |
935 | } | |
936 | ||
937 | if (!fmpz_fits_si(n)) | |
938 | { | |
939 | flint_printf("gamma: too large fmpq to reduce to 0!\n"); | |
940 | flint_abort(); | |
941 | } | |
942 | ||
943 | m = fmpz_get_si(n); | |
944 | ||
945 | /* evaluate gamma(a) */ | |
946 | p = *fmpq_numref(a); | |
947 | q = *fmpq_denref(a); | |
948 | ||
949 | if (q == 1 || q == 2 || q == 3 || q == 4 || q == 6) | |
950 | { | |
951 | arb_gamma_small_frac(t, p, q, prec); | |
952 | } | |
953 | else | |
954 | { | |
955 | arb_gamma_fmpq_hyp(t, a, prec); | |
956 | } | |
957 | ||
958 | /* argument reduction */ | |
959 | if (m >= 0) | |
960 | { | |
961 | arb_rising_fmpq_ui(u, a, m, prec); | |
962 | arb_mul(y, t, u, prec); | |
963 | } | |
964 | else | |
965 | { | |
966 | arb_rising_fmpq_ui(u, x, -m, prec); | |
967 | arb_div(y, t, u, prec); | |
968 | } | |
969 | ||
970 | fmpq_clear(a); | |
971 | fmpz_clear(n); | |
972 | arb_clear(t); | |
973 | arb_clear(u); | |
974 | } | |
975 | ||
976 | void | |
977 | 269 | arb_gamma_fmpq(arb_t y, const fmpq_t x, slong prec) |
978 | 270 | { |
979 | fmpz p, q; | |
980 | ||
981 | p = *fmpq_numref(x); | |
982 | q = *fmpq_denref(x); | |
983 | ||
984 | if ((q == 1 || q == 2 || q == 3 || q == 4 || q == 6) && !COEFF_IS_MPZ(p)) | |
985 | { | |
986 | if (q == 1) | |
987 | { | |
988 | if (p <= 0) | |
989 | { | |
990 | arb_indeterminate(y); | |
991 | return; | |
992 | } | |
993 | ||
994 | if (p < 1200 || 1.44265 * (p*log(p) - p) < 15.0 * prec) | |
995 | { | |
996 | fmpz_t t; | |
997 | fmpz_init(t); | |
998 | fmpz_fac_ui(t, p - 1); | |
999 | arb_set_round_fmpz(y, t, prec); | |
1000 | fmpz_clear(t); | |
1001 | return; | |
1002 | } | |
1003 | } | |
1004 | ||
1005 | p = FLINT_ABS(p); | |
1006 | ||
1007 | if (p < q * 500.0 || p < q * (500.0 + 0.1 * prec * sqrt(prec))) | |
1008 | { | |
1009 | arb_gamma_fmpq_outward(y, x, prec); | |
1010 | return; | |
1011 | } | |
1012 | } | |
1013 | ||
1014 | if (q != 1 && prec > 7000 + 300 * fmpz_bits(fmpq_denref(x)) && | |
1015 | (slong) fmpz_bits(fmpq_numref(x)) - (slong) fmpz_bits(fmpq_denref(x)) < FLINT_BITS && | |
1016 | fabs(fmpq_get_d(x)) < 0.03 * prec * sqrt(prec)) | |
1017 | { | |
1018 | arb_gamma_fmpq_outward(y, x, prec); | |
1019 | return; | |
1020 | } | |
1021 | ||
1022 | arb_gamma_fmpq_stirling(y, x, prec); | |
271 | arb_hypgeom_gamma_fmpq(y, x, prec); | |
1023 | 272 | } |
1024 | 273 | |
1025 | 274 | void |
1026 | 275 | arb_gamma_fmpz(arb_t y, const fmpz_t x, slong prec) |
1027 | 276 | { |
1028 | fmpq_t t; | |
1029 | *fmpq_numref(t) = *x; | |
1030 | *fmpq_denref(t) = WORD(1); | |
1031 | arb_gamma_fmpq(y, t, prec); | |
1032 | } | |
1033 | ||
1034 | static void | |
1035 | _arb_gamma(arb_t y, const arb_t x, slong prec, int inverse) | |
1036 | { | |
1037 | int reflect; | |
1038 | slong r, n, wp; | |
1039 | arb_t t, u, v; | |
1040 | double acc; | |
1041 | ||
1042 | if (arb_is_exact(x)) | |
1043 | { | |
1044 | const arf_struct * mid = arb_midref(x); | |
1045 | ||
1046 | if (arf_is_special(mid)) | |
1047 | { | |
1048 | if (!inverse && arf_is_pos_inf(mid)) | |
1049 | arb_set(y, x); | |
1050 | else if (arf_is_nan(mid) || arf_is_neg_inf(mid) || !inverse) | |
1051 | arb_indeterminate(y); | |
1052 | else | |
1053 | arb_zero(y); | |
1054 | return; | |
1055 | } | |
1056 | else if (inverse && arf_is_int(mid) && arf_sgn(mid) < 0) | |
1057 | { | |
1058 | arb_zero(y); | |
1059 | } | |
1060 | else | |
1061 | { | |
1062 | /* fast gamma(n), gamma(n/2) or gamma(n/4), ... */ | |
1063 | if (arf_cmpabs_2exp_si(mid, prec) < 0 && | |
1064 | (arf_is_int_2exp_si(mid, -2) || (prec > 1000 && arf_is_int_2exp_si(mid, -1000)))) | |
1065 | { | |
1066 | fmpq_t a; | |
1067 | fmpq_init(a); | |
1068 | arf_get_fmpq(a, mid); | |
1069 | arb_gamma_fmpq(y, a, prec + 2 * inverse); | |
1070 | if (inverse) | |
1071 | arb_inv(y, y, prec); | |
1072 | fmpq_clear(a); | |
1073 | return; | |
1074 | } | |
1075 | } | |
1076 | } | |
1077 | ||
1078 | /* todo: for large x (if exact or accurate enough), increase precision */ | |
1079 | acc = arb_rel_accuracy_bits(x); | |
1080 | acc = FLINT_MAX(acc, 0); | |
1081 | wp = FLINT_MIN(prec, acc + 20); | |
1082 | wp = FLINT_MAX(wp, 2); | |
1083 | wp = wp + FLINT_BIT_COUNT(wp); | |
1084 | ||
1085 | if (acc < 3) /* try to avoid divisions blowing up */ | |
1086 | { | |
1087 | if (arf_cmp_d(arb_midref(x), -0.5) < 0) | |
1088 | { | |
1089 | reflect = 1; | |
1090 | r = 0; | |
1091 | } | |
1092 | else if (arf_cmp_si(arb_midref(x), 1) < 0) | |
1093 | { | |
1094 | reflect = 0; | |
1095 | r = 1; | |
1096 | } | |
1097 | else | |
1098 | { | |
1099 | reflect = 0; | |
1100 | r = 0; | |
1101 | } | |
1102 | ||
1103 | n = 1; | |
1104 | } | |
1105 | else | |
1106 | { | |
1107 | arb_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
1108 | } | |
1109 | ||
1110 | arb_init(t); | |
1111 | arb_init(u); | |
1112 | arb_init(v); | |
1113 | ||
1114 | if (reflect) | |
1115 | { | |
1116 | arb_sub_ui(t, x, 1, wp); | |
1117 | arb_neg(t, t); | |
1118 | arb_rising_ui_rec(u, t, r, wp); | |
1119 | arb_const_pi(v, wp); | |
1120 | arb_mul(u, u, v, wp); | |
1121 | arb_add_ui(t, t, r, wp); | |
1122 | arb_gamma_stirling_eval(v, t, n, 0, wp); | |
1123 | ||
1124 | if (inverse) | |
1125 | { | |
1126 | /* rgamma(x) = gamma(1-x+r) sin(pi x) / ((rf(1-x, r) * pi) */ | |
1127 | arb_exp(v, v, wp); | |
1128 | arb_sin_pi(t, x, wp); | |
1129 | arb_mul(v, v, t, wp); | |
1130 | arb_mul(y, u, v, wp); | |
1131 | arb_div(y, v, u, prec); | |
1132 | } | |
1133 | else | |
1134 | { | |
1135 | /* gamma(x) = (rf(1-x, r) * pi) rgamma(1-x+r) csc(pi x) */ | |
1136 | arb_neg(v, v); | |
1137 | arb_exp(v, v, wp); | |
1138 | arb_csc_pi(t, x, wp); | |
1139 | arb_mul(v, v, t, wp); | |
1140 | arb_mul(y, v, u, prec); | |
1141 | } | |
1142 | } | |
1143 | else | |
1144 | { | |
1145 | arb_add_ui(t, x, r, wp); | |
1146 | arb_gamma_stirling_eval(u, t, n, 0, wp); | |
1147 | ||
1148 | if (inverse) | |
1149 | { | |
1150 | /* rgamma(x) = rf(x,r) rgamma(x+r) */ | |
1151 | arb_neg(u, u); | |
1152 | arb_exp(u, u, prec); | |
1153 | arb_rising_ui_rec(v, x, r, wp); | |
1154 | arb_mul(y, v, u, prec); | |
1155 | } | |
1156 | else | |
1157 | { | |
1158 | /* gamma(x) = gamma(x+r) / rf(x,r) */ | |
1159 | arb_exp(u, u, prec); | |
1160 | arb_rising_ui_rec(v, x, r, wp); | |
1161 | arb_div(y, u, v, prec); | |
1162 | } | |
1163 | } | |
1164 | ||
1165 | arb_clear(t); | |
1166 | arb_clear(u); | |
1167 | arb_clear(v); | |
277 | arb_hypgeom_gamma_fmpz(y, x, prec); | |
1168 | 278 | } |
1169 | 279 | |
1170 | 280 | void |
1171 | 281 | arb_gamma(arb_t y, const arb_t x, slong prec) |
1172 | 282 | { |
1173 | _arb_gamma(y, x, prec, 0); | |
283 | arb_hypgeom_gamma(y, x, prec); | |
1174 | 284 | } |
1175 | 285 | |
1176 | 286 | void |
1177 | 287 | arb_rgamma(arb_t y, const arb_t x, slong prec) |
1178 | 288 | { |
1179 | _arb_gamma(y, x, prec, 1); | |
289 | arb_hypgeom_rgamma(y, x, prec); | |
1180 | 290 | } |
1181 | 291 | |
1182 | 292 | void |
1183 | 293 | arb_lgamma(arb_t y, const arb_t x, slong prec) |
1184 | 294 | { |
1185 | int reflect; | |
1186 | slong r, n, wp; | |
1187 | arb_t t, u; | |
1188 | ||
1189 | if (!arb_is_positive(x)) | |
1190 | { | |
1191 | arb_indeterminate(y); | |
1192 | return; | |
1193 | } | |
1194 | ||
1195 | /* fast gamma(n), gamma(n/2) or gamma(n/4), ... */ | |
1196 | if (arb_is_exact(x) && arf_cmpabs_2exp_si(arb_midref(x), prec) < 0 && | |
1197 | (arf_is_int_2exp_si(arb_midref(x), -2) || (prec > 10000 && arf_is_int_2exp_si(arb_midref(x), -1000)))) | |
1198 | { | |
1199 | fmpq_t a; | |
1200 | fmpq_init(a); | |
1201 | arf_get_fmpq(a, arb_midref(x)); | |
1202 | arb_gamma_fmpq(y, a, prec); | |
1203 | arb_log(y, y, prec); | |
1204 | fmpq_clear(a); | |
1205 | return; | |
1206 | } | |
1207 | ||
1208 | wp = prec + FLINT_BIT_COUNT(prec); | |
1209 | ||
1210 | arb_gamma_stirling_choose_param(&reflect, &r, &n, x, 0, 0, wp); | |
1211 | ||
1212 | /* log(gamma(x)) = log(gamma(x+r)) - log(rf(x,r)) */ | |
1213 | arb_init(t); | |
1214 | arb_init(u); | |
1215 | ||
1216 | arb_add_ui(t, x, r, wp); | |
1217 | arb_gamma_stirling_eval(u, t, n, 0, wp); | |
1218 | arb_rising_ui_rec(t, x, r, wp); | |
1219 | arb_log(t, t, wp); | |
1220 | arb_sub(y, u, t, prec); | |
1221 | ||
1222 | arb_clear(t); | |
1223 | arb_clear(u); | |
1224 | } | |
1225 | ||
295 | arb_hypgeom_lgamma(y, x, prec); | |
296 | } | |
297 |
9 | 9 | */ |
10 | 10 | |
11 | 11 | #include "arb.h" |
12 | #include "arb_hypgeom.h" | |
12 | 13 | |
13 | 14 | void |
14 | 15 | arb_rising2_ui(arb_t u, arb_t v, const arb_t x, ulong n, slong prec) |
15 | 16 | { |
16 | if (prec < 512 || n < 8 || arb_bits(x) < prec / 8) | |
17 | arb_rising2_ui_bs(u, v, x, n, prec); | |
17 | if (x == u || x == v) | |
18 | { | |
19 | arb_t t; | |
20 | arb_init(t); | |
21 | arb_set(t, x); | |
22 | arb_rising2_ui(u, v, t, n, prec); | |
23 | arb_clear(t); | |
24 | } | |
18 | 25 | else |
19 | arb_rising2_ui_rs(u, v, x, n, 0, prec); | |
26 | { | |
27 | arb_struct tmp[2]; | |
28 | ||
29 | tmp[0] = *u; | |
30 | tmp[1] = *v; | |
31 | ||
32 | arb_hypgeom_rising_ui_jet(tmp, x, n, 2, prec); | |
33 | ||
34 | *u = tmp[0]; | |
35 | *v = tmp[1]; | |
36 | } | |
20 | 37 | } |
21 | 38 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | static void | |
14 | bsplit(arb_t p, arb_t q, const arb_t x, ulong a, ulong b, slong prec) | |
15 | { | |
16 | if (b - a < 8) | |
17 | { | |
18 | ulong k; | |
19 | arb_t t; | |
20 | ||
21 | arb_one(p); | |
22 | arb_add_ui(q, x, a, prec); | |
23 | ||
24 | arb_init(t); | |
25 | ||
26 | for (k = a + 1; k < b; k++) | |
27 | { | |
28 | arb_add_ui(t, x, k, prec); | |
29 | arb_mul(p, p, t, prec); | |
30 | arb_add(p, p, q, prec); | |
31 | arb_mul(q, q, t, prec); | |
32 | } | |
33 | ||
34 | arb_clear(t); | |
35 | } | |
36 | else | |
37 | { | |
38 | arb_t r, s; | |
39 | ulong m; | |
40 | ||
41 | arb_init(r); | |
42 | arb_init(s); | |
43 | ||
44 | m = a + (b - a) / 2; | |
45 | bsplit(p, q, x, a, m, prec); | |
46 | bsplit(r, s, x, m, b, prec); | |
47 | ||
48 | arb_mul(p, p, s, prec); | |
49 | arb_mul(r, r, q, prec); | |
50 | arb_add(p, p, r, prec); | |
51 | arb_mul(q, q, s, prec); | |
52 | ||
53 | arb_clear(r); | |
54 | arb_clear(s); | |
55 | } | |
56 | } | |
57 | ||
58 | void | |
59 | arb_rising2_ui_bs(arb_t u, arb_t v, const arb_t x, ulong n, slong prec) | |
60 | { | |
61 | if (n == 0) | |
62 | { | |
63 | arb_zero(v); | |
64 | arb_one(u); | |
65 | } | |
66 | else if (n == 1) | |
67 | { | |
68 | arb_set(u, x); | |
69 | arb_one(v); | |
70 | } | |
71 | else | |
72 | { | |
73 | arb_t t; | |
74 | slong wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
75 | ||
76 | arb_init(t); /* support aliasing */ | |
77 | arb_set(t, x); | |
78 | bsplit(v, u, t, 0, n, wp); | |
79 | arb_clear(t); | |
80 | } | |
81 | } | |
82 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/fmpz_poly.h" | |
12 | #include "arb.h" | |
13 | ||
14 | void | |
15 | _gamma_rf_bsplit(fmpz * A, ulong a, ulong b) | |
16 | { | |
17 | ulong n = b - a; | |
18 | ||
19 | if (n == 0) | |
20 | { | |
21 | fmpz_one(A); | |
22 | } | |
23 | else if (n < 8) | |
24 | { | |
25 | ulong j, k; | |
26 | ||
27 | fmpz_set_ui(A, a); | |
28 | fmpz_one(A + 1); | |
29 | ||
30 | for (j = 1; j < n; j++) | |
31 | { | |
32 | fmpz_one(A + j + 1); | |
33 | ||
34 | for (k = j; k > 0; k--) | |
35 | { | |
36 | fmpz_mul_ui(A + k, A + k, a + j); | |
37 | fmpz_add(A + k, A + k, A + k - 1); | |
38 | } | |
39 | ||
40 | fmpz_mul_ui(A, A, a + j); | |
41 | } | |
42 | } | |
43 | else | |
44 | { | |
45 | ulong m = a + (b - a) / 2; | |
46 | ulong w = m - a; | |
47 | ulong v = b - m; | |
48 | ||
49 | fmpz *t, *A1, *A2; | |
50 | ||
51 | t = _fmpz_vec_init(w + v + 2); | |
52 | ||
53 | A1 = t; | |
54 | A2 = A1 + w + 1; | |
55 | ||
56 | _gamma_rf_bsplit(A1, a, m); | |
57 | _gamma_rf_bsplit(A2, m, b); | |
58 | ||
59 | _fmpz_poly_mul(A, A2, v + 1, A1, w + 1); | |
60 | ||
61 | _fmpz_vec_clear(t, w + v + 2); | |
62 | } | |
63 | } | |
64 | ||
65 | void | |
66 | arb_rising2_ui_rs(arb_t u, arb_t v, | |
67 | const arb_t x, ulong n, ulong m, slong prec) | |
68 | { | |
69 | if (n == 0) | |
70 | { | |
71 | arb_zero(v); | |
72 | arb_one(u); | |
73 | } | |
74 | else if (n == 1) | |
75 | { | |
76 | arb_set(u, x); | |
77 | arb_one(v); | |
78 | } | |
79 | else | |
80 | { | |
81 | slong wp; | |
82 | ulong i, j, a, b; | |
83 | arb_ptr xs; | |
84 | arb_t S, T, U, V; | |
85 | fmpz *A, *B; | |
86 | ||
87 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
88 | ||
89 | if (m == 0) | |
90 | { | |
91 | ulong m1, m2; | |
92 | m1 = 0.6 * pow(wp, 0.4); | |
93 | m2 = n_sqrt(n); | |
94 | m = FLINT_MIN(m1, m2); | |
95 | } | |
96 | ||
97 | m = FLINT_MAX(m, 1); | |
98 | ||
99 | xs = _arb_vec_init(m + 1); | |
100 | A = _fmpz_vec_init(2 * m + 1); | |
101 | B = A + (m + 1); | |
102 | ||
103 | arb_init(S); | |
104 | arb_init(T); | |
105 | arb_init(U); | |
106 | arb_init(V); | |
107 | _arb_vec_set_powers(xs, x, m + 1, wp); | |
108 | ||
109 | for (i = 0; i < n; i += m) | |
110 | { | |
111 | a = i; | |
112 | b = FLINT_MIN(n, a + m); | |
113 | ||
114 | if (a == 0 || b != a + m) | |
115 | { | |
116 | _gamma_rf_bsplit(A, a, b); | |
117 | } | |
118 | else | |
119 | { | |
120 | fmpz tt = m; | |
121 | _fmpz_poly_taylor_shift(A, &tt, m + 1); | |
122 | } | |
123 | ||
124 | _fmpz_poly_derivative(B, A, b - a + 1); | |
125 | ||
126 | arb_set_fmpz(S, A); | |
127 | ||
128 | for (j = 1; j <= b - a; j++) | |
129 | arb_addmul_fmpz(S, xs + j, A + j, wp); | |
130 | ||
131 | arb_set_fmpz(T, B); | |
132 | ||
133 | for (j = 1; j < b - a; j++) | |
134 | arb_addmul_fmpz(T, xs + j, B + j, wp); | |
135 | ||
136 | if (i == 0) | |
137 | { | |
138 | arb_set(U, S); | |
139 | arb_set(V, T); | |
140 | } | |
141 | else | |
142 | { | |
143 | arb_mul(V, V, S, wp); | |
144 | arb_addmul(V, U, T, wp); | |
145 | arb_mul(U, U, S, wp); | |
146 | } | |
147 | } | |
148 | ||
149 | arb_set(u, U); | |
150 | arb_set(v, V); | |
151 | ||
152 | _arb_vec_clear(xs, m + 1); | |
153 | _fmpz_vec_clear(A, 2 * m + 1); | |
154 | ||
155 | arb_clear(S); | |
156 | arb_clear(T); | |
157 | arb_clear(U); | |
158 | arb_clear(V); | |
159 | } | |
160 | } | |
161 |
9 | 9 | */ |
10 | 10 | |
11 | 11 | #include "arb.h" |
12 | #include "arb_hypgeom.h" | |
12 | 13 | |
13 | 14 | void |
14 | 15 | arb_rising_ui(arb_t y, const arb_t x, ulong n, slong prec) |
15 | 16 | { |
16 | if (n < FLINT_MAX(prec, 100)) | |
17 | { | |
18 | arb_rising_ui_rec(y, x, n, prec); | |
19 | } | |
20 | else | |
21 | { | |
22 | arb_t t; | |
23 | arb_init(t); | |
24 | arb_add_ui(t, x, n, prec); | |
25 | arb_gamma(t, t, prec); | |
26 | arb_rgamma(y, x, prec); | |
27 | arb_mul(y, y, t, prec); | |
28 | arb_clear(t); | |
29 | } | |
17 | arb_hypgeom_rising_ui(y, x, n, prec); | |
30 | 18 | } |
31 | 19 | |
32 | 20 | void |
33 | 21 | arb_rising(arb_t y, const arb_t x, const arb_t n, slong prec) |
34 | 22 | { |
35 | if (arb_is_int(n) && arf_sgn(arb_midref(n)) >= 0 && | |
36 | arf_cmpabs_ui(arb_midref(n), FLINT_MAX(prec, 100)) < 0) | |
37 | { | |
38 | arb_rising_ui_rec(y, x, | |
39 | arf_get_si(arb_midref(n), ARF_RND_DOWN), prec); | |
40 | } | |
41 | else | |
42 | { | |
43 | arb_t t; | |
44 | arb_init(t); | |
45 | arb_add(t, x, n, prec); | |
46 | arb_gamma(t, t, prec); | |
47 | arb_rgamma(y, x, prec); | |
48 | arb_mul(y, y, t, prec); | |
49 | arb_clear(t); | |
50 | } | |
23 | arb_hypgeom_rising(y, x, n, prec); | |
51 | 24 | } |
52 | 25 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | /* assumes y and x are not aliased */ | |
14 | static void | |
15 | bsplit(arb_t y, const arb_t x, ulong a, ulong b, slong prec) | |
16 | { | |
17 | if (b - a == 1) | |
18 | { | |
19 | arb_set_round(y, x, prec); | |
20 | } | |
21 | else if (b - a <= 10) | |
22 | { | |
23 | slong i; | |
24 | arb_t t; | |
25 | arb_init(t); | |
26 | ||
27 | arb_add_ui(t, x, a, prec); | |
28 | arb_add_ui(y, x, a + 1, prec); | |
29 | arb_mul(y, y, t, prec); | |
30 | ||
31 | for (i = a + 2; i < b; i++) | |
32 | { | |
33 | arb_add_ui(t, x, i, prec); | |
34 | arb_mul(y, y, t, prec); | |
35 | } | |
36 | ||
37 | arb_clear(t); | |
38 | } | |
39 | else | |
40 | { | |
41 | arb_t t, u; | |
42 | ulong m = a + (b - a) / 2; | |
43 | ||
44 | arb_init(t); | |
45 | arb_init(u); | |
46 | ||
47 | bsplit(t, x, a, m, prec); | |
48 | bsplit(u, x, m, b, prec); | |
49 | ||
50 | arb_mul(y, t, u, prec); | |
51 | ||
52 | arb_clear(t); | |
53 | arb_clear(u); | |
54 | } | |
55 | } | |
56 | ||
57 | void | |
58 | arb_rising_ui_bs(arb_t y, const arb_t x, ulong n, slong prec) | |
59 | { | |
60 | if (n == 0) | |
61 | { | |
62 | arb_one(y); | |
63 | } | |
64 | else if (n == 1) | |
65 | { | |
66 | arb_set_round(y, x, prec); | |
67 | } | |
68 | else | |
69 | { | |
70 | arb_t t; | |
71 | slong wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
72 | ||
73 | arb_init(t); | |
74 | bsplit(t, x, 0, n, wp); | |
75 | arb_set_round(y, t, prec); | |
76 | arb_clear(t); | |
77 | } | |
78 | } | |
79 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | void | |
14 | arb_rising_ui_rec(arb_t y, const arb_t x, ulong n, slong prec) | |
15 | { | |
16 | if (prec < 512 || n < 8 || arb_bits(x) < prec / 8) | |
17 | arb_rising_ui_bs(y, x, n, prec); | |
18 | else | |
19 | arb_rising_ui_rs(y, x, n, 0, prec); | |
20 | } | |
21 |
0 | /* | |
1 | Copyright (C) 2014 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/arith.h" | |
12 | #include "arb.h" | |
13 | ||
14 | void | |
15 | rising_difference_polynomial(fmpz * s, fmpz * c, ulong m) | |
16 | { | |
17 | slong i, j, v; | |
18 | ||
19 | fmpz_t t; | |
20 | fmpz_init(t); | |
21 | ||
22 | arith_stirling_number_1u_vec(s, m, m + 1); | |
23 | ||
24 | /* Compute the first row */ | |
25 | for (i = 0; i < m; i++) | |
26 | { | |
27 | fmpz_set_ui(t, m); | |
28 | fmpz_mul_ui(t, t, (i + 1)); | |
29 | fmpz_mul(c + i, s + (i + 1), t); | |
30 | ||
31 | for (j = i + 2; j < m + 1; j++) | |
32 | { | |
33 | fmpz_mul_ui(t, t, m * j); | |
34 | fmpz_divexact_ui(t, t, j - i); | |
35 | fmpz_addmul(c + i, s + j, t); | |
36 | } | |
37 | } | |
38 | ||
39 | /* Extend using recurrence and symmetry */ | |
40 | for (v = 1; v < m; v++) | |
41 | { | |
42 | for (i = v; i < m - v; i++) | |
43 | { | |
44 | fmpz_mul_ui(t, c + (v - 1) * m + (i + 1), i + 1); | |
45 | fmpz_divexact_ui(c + v * m + i, t, v); | |
46 | } | |
47 | ||
48 | for (i = 0; i < v; i++) | |
49 | fmpz_set(c + v * m + i, c + i * m + v); | |
50 | } | |
51 | ||
52 | fmpz_clear(t); | |
53 | } | |
54 | ||
55 | void | |
56 | arb_rising_ui_rs(arb_t y, const arb_t x, ulong n, ulong m, slong prec) | |
57 | { | |
58 | arb_ptr xs; | |
59 | arb_t t, u, v; | |
60 | ulong i, k, rem; | |
61 | fmpz_t c, h; | |
62 | fmpz *s, *d; | |
63 | slong wp; | |
64 | ||
65 | if (n == 0) | |
66 | { | |
67 | arb_one(y); | |
68 | return; | |
69 | } | |
70 | ||
71 | if (n == 1) | |
72 | { | |
73 | arb_set_round(y, x, prec); | |
74 | return; | |
75 | } | |
76 | ||
77 | wp = ARF_PREC_ADD(prec, FLINT_BIT_COUNT(n)); | |
78 | ||
79 | arb_init(t); | |
80 | arb_init(u); | |
81 | arb_init(v); | |
82 | fmpz_init(c); | |
83 | fmpz_init(h); | |
84 | ||
85 | if (m == 0) | |
86 | { | |
87 | ulong m1, m2; | |
88 | m1 = 0.2 * pow(wp, 0.4); | |
89 | m2 = n_sqrt(n); | |
90 | m = FLINT_MIN(m1, m2); | |
91 | } | |
92 | ||
93 | m = FLINT_MIN(m, n); | |
94 | m = FLINT_MAX(m, 1); | |
95 | ||
96 | xs = _arb_vec_init(m + 1); | |
97 | d = _fmpz_vec_init(m * m); | |
98 | s = _fmpz_vec_init(m + 1); | |
99 | ||
100 | _arb_vec_set_powers(xs, x, m + 1, wp); | |
101 | ||
102 | rising_difference_polynomial(s, d, m); | |
103 | ||
104 | /* tail */ | |
105 | rem = m; | |
106 | while (rem + m <= n) | |
107 | rem += m; | |
108 | arb_one(y); | |
109 | for (k = rem; k < n; k++) | |
110 | { | |
111 | arb_add_ui(t, xs + 1, k, wp); | |
112 | arb_mul(y, y, t, wp); | |
113 | } | |
114 | ||
115 | /* initial rising factorial */ | |
116 | arb_zero(t); | |
117 | for (i = 1; i <= m; i++) | |
118 | arb_addmul_fmpz(t, xs + i, s + i, wp); | |
119 | ||
120 | arb_mul(y, y, t, wp); | |
121 | ||
122 | /* the leading coefficient is always the same */ | |
123 | arb_mul_fmpz(xs + m - 1, xs + m - 1, d + m - 1 + 0, wp); | |
124 | ||
125 | for (k = 0; k + 2 * m <= n; k += m) | |
126 | { | |
127 | for (i = 0; i < m - 1; i++) | |
128 | { | |
129 | fmpz_set_ui(h, k); | |
130 | _fmpz_poly_evaluate_horner_fmpz(c, d + i * m, m - i, h); | |
131 | ||
132 | if (i == 0) | |
133 | arb_add_fmpz(t, t, c, wp); | |
134 | else | |
135 | arb_addmul_fmpz(t, xs + i, c, wp); | |
136 | } | |
137 | ||
138 | arb_add(t, t, xs + m - 1, wp); | |
139 | arb_mul(y, y, t, wp); | |
140 | } | |
141 | ||
142 | arb_set_round(y, y, prec); | |
143 | ||
144 | arb_clear(t); | |
145 | arb_clear(u); | |
146 | arb_clear(v); | |
147 | _arb_vec_clear(xs, m + 1); | |
148 | _fmpz_vec_clear(d, m * m); | |
149 | _fmpz_vec_clear(s, m + 1); | |
150 | fmpz_clear(c); | |
151 | fmpz_clear(h); | |
152 | } | |
153 |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | void | |
14 | arb_fma_naive(arb_t res, const arb_t x, const arb_t y, const arb_t z, slong prec) | |
15 | { | |
16 | arb_t t; | |
17 | arb_init(t); | |
18 | arb_set(t, z); | |
19 | arb_addmul(t, x, y, prec); | |
20 | arb_set(res, t); | |
21 | arb_clear(t); | |
22 | } | |
23 | ||
24 | int main() | |
25 | { | |
26 | slong iter; | |
27 | flint_rand_t state; | |
28 | ||
29 | flint_printf("fma...."); | |
30 | fflush(stdout); | |
31 | ||
32 | flint_randinit(state); | |
33 | ||
34 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
35 | { | |
36 | arb_t x, y, z, res1, res2; | |
37 | slong prec; | |
38 | int aliasing; | |
39 | ||
40 | arb_init(x); | |
41 | arb_init(y); | |
42 | arb_init(z); | |
43 | arb_init(res1); | |
44 | arb_init(res2); | |
45 | ||
46 | prec = 2 + n_randint(state, 200); | |
47 | ||
48 | arb_randtest_special(x, state, 200, 100); | |
49 | arb_randtest_special(y, state, 200, 100); | |
50 | arb_randtest_special(z, state, 200, 100); | |
51 | arb_randtest_special(res1, state, 200, 100); | |
52 | arb_randtest_special(res2, state, 200, 100); | |
53 | ||
54 | if (n_randint(state, 10) == 0 && | |
55 | fmpz_bits(ARF_EXPREF(arb_midref(x))) < 10 && | |
56 | fmpz_bits(ARF_EXPREF(arb_midref(y))) < 10 && | |
57 | fmpz_bits(ARF_EXPREF(arb_midref(z))) < 10) | |
58 | { | |
59 | prec = ARF_PREC_EXACT; | |
60 | } | |
61 | ||
62 | aliasing = n_randint(state, 7); | |
63 | ||
64 | switch (aliasing) | |
65 | { | |
66 | case 0: | |
67 | arb_fma(res1, x, y, z, prec); | |
68 | arb_fma_naive(res2, x, y, z, prec); | |
69 | break; | |
70 | case 1: | |
71 | arb_set(res1, z); | |
72 | arb_fma(res1, x, y, res1, prec); | |
73 | arb_fma_naive(res2, x, y, z, prec); | |
74 | break; | |
75 | case 2: | |
76 | arb_set(res1, x); | |
77 | arb_fma(res1, res1, y, z, prec); | |
78 | arb_fma_naive(res2, x, y, z, prec); | |
79 | break; | |
80 | case 3: | |
81 | arb_set(res1, y); | |
82 | arb_fma(res1, x, res1, z, prec); | |
83 | arb_fma_naive(res2, x, y, z, prec); | |
84 | break; | |
85 | case 4: | |
86 | arb_fma(res1, x, x, z, prec); | |
87 | arb_fma_naive(res2, x, x, z, prec); | |
88 | break; | |
89 | case 5: | |
90 | arb_set(res1, x); | |
91 | arb_fma(res1, res1, res1, z, prec); | |
92 | arb_fma_naive(res2, x, x, z, prec); | |
93 | break; | |
94 | default: | |
95 | arb_set(res1, x); | |
96 | arb_fma(res1, res1, res1, res1, prec); | |
97 | arb_fma_naive(res2, x, x, x, prec); | |
98 | break; | |
99 | } | |
100 | ||
101 | if (!arb_equal(res1, res2)) | |
102 | { | |
103 | flint_printf("FAIL!\n"); | |
104 | flint_printf("prec = %wd, aliasing = %d\n\n", prec, aliasing); | |
105 | flint_printf("x = "); arb_printd(x, 30); flint_printf("\n\n"); | |
106 | flint_printf("y = "); arb_printd(y, 30); flint_printf("\n\n"); | |
107 | flint_printf("z = "); arb_printd(z, 30); flint_printf("\n\n"); | |
108 | flint_printf("res1 = "); arb_printd(res1, 30); flint_printf("\n\n"); | |
109 | flint_printf("res2 = "); arb_printd(res2, 30); flint_printf("\n\n"); | |
110 | flint_abort(); | |
111 | } | |
112 | ||
113 | arb_clear(x); | |
114 | arb_clear(y); | |
115 | arb_clear(z); | |
116 | arb_clear(res1); | |
117 | arb_clear(res2); | |
118 | } | |
119 | ||
120 | flint_randclear(state); | |
121 | flint_cleanup(); | |
122 | flint_printf("PASS\n"); | |
123 | return EXIT_SUCCESS; | |
124 | } |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/arith.h" | |
12 | #include "arb_poly.h" | |
13 | ||
14 | int main() | |
15 | { | |
16 | slong iter; | |
17 | flint_rand_t state; | |
18 | ||
19 | flint_printf("rising2_ui_bs...."); | |
20 | fflush(stdout); | |
21 | ||
22 | flint_randinit(state); | |
23 | ||
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | arb_t a, u, v, u2, v2; | |
27 | fmpz *f; | |
28 | arb_ptr g; | |
29 | ulong n; | |
30 | slong i, prec; | |
31 | ||
32 | arb_init(a); | |
33 | arb_init(u); | |
34 | arb_init(v); | |
35 | arb_init(u2); | |
36 | arb_init(v2); | |
37 | ||
38 | arb_randtest(a, state, 1 + n_randint(state, 4000), 10); | |
39 | arb_randtest(u, state, 1 + n_randint(state, 4000), 10); | |
40 | arb_randtest(v, state, 1 + n_randint(state, 4000), 10); | |
41 | n = n_randint(state, 120); | |
42 | ||
43 | f = _fmpz_vec_init(n + 1); | |
44 | g = _arb_vec_init(n + 1); | |
45 | ||
46 | prec = 2 + n_randint(state, 4000); | |
47 | arb_rising2_ui_bs(u, v, a, n, prec); | |
48 | ||
49 | arith_stirling_number_1u_vec(f, n, n + 1); | |
50 | for (i = 0; i <= n; i++) | |
51 | arb_set_fmpz(g + i, f + i); | |
52 | _arb_poly_evaluate(u2, g, n + 1, a, prec); | |
53 | ||
54 | _arb_poly_derivative(g, g, n + 1, prec); | |
55 | _arb_poly_evaluate(v2, g, n, a, prec); | |
56 | ||
57 | if (!arb_overlaps(u, u2) || !arb_overlaps(v, v2)) | |
58 | { | |
59 | flint_printf("FAIL: overlap\n\n"); | |
60 | flint_printf("n = %wu\n", n); | |
61 | flint_printf("a = "); arb_printd(a, 15); flint_printf("\n\n"); | |
62 | flint_printf("u = "); arb_printd(u, 15); flint_printf("\n\n"); | |
63 | flint_printf("u2 = "); arb_printd(u2, 15); flint_printf("\n\n"); | |
64 | flint_printf("v = "); arb_printd(v, 15); flint_printf("\n\n"); | |
65 | flint_printf("v2 = "); arb_printd(v2, 15); flint_printf("\n\n"); | |
66 | flint_abort(); | |
67 | } | |
68 | ||
69 | arb_set(u2, a); | |
70 | arb_rising2_ui_bs(u2, v, u2, n, prec); | |
71 | ||
72 | if (!arb_equal(u2, u)) | |
73 | { | |
74 | flint_printf("FAIL: aliasing 1\n\n"); | |
75 | flint_printf("a = "); arb_printd(a, 15); flint_printf("\n\n"); | |
76 | flint_printf("u = "); arb_printd(u, 15); flint_printf("\n\n"); | |
77 | flint_printf("u2 = "); arb_printd(u2, 15); flint_printf("\n\n"); | |
78 | flint_printf("n = %wu\n", n); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | arb_set(v2, a); | |
83 | arb_rising2_ui_bs(u, v2, v2, n, prec); | |
84 | ||
85 | if (!arb_equal(v2, v)) | |
86 | { | |
87 | flint_printf("FAIL: aliasing 2\n\n"); | |
88 | flint_printf("a = "); arb_printd(a, 15); flint_printf("\n\n"); | |
89 | flint_printf("v = "); arb_printd(v, 15); flint_printf("\n\n"); | |
90 | flint_printf("v2 = "); arb_printd(v2, 15); flint_printf("\n\n"); | |
91 | flint_printf("n = %wu\n", n); | |
92 | flint_abort(); | |
93 | } | |
94 | ||
95 | arb_clear(a); | |
96 | arb_clear(u); | |
97 | arb_clear(v); | |
98 | arb_clear(u2); | |
99 | arb_clear(v2); | |
100 | _fmpz_vec_clear(f, n + 1); | |
101 | _arb_vec_clear(g, n + 1); | |
102 | } | |
103 | ||
104 | flint_randclear(state); | |
105 | flint_cleanup(); | |
106 | flint_printf("PASS\n"); | |
107 | return EXIT_SUCCESS; | |
108 | } | |
109 |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/arith.h" | |
12 | #include "arb_poly.h" | |
13 | ||
14 | int main() | |
15 | { | |
16 | slong iter; | |
17 | flint_rand_t state; | |
18 | ||
19 | flint_printf("rising2_ui_rs...."); | |
20 | fflush(stdout); | |
21 | ||
22 | flint_randinit(state); | |
23 | ||
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | arb_t a, u, v, u2, v2; | |
27 | fmpz *f; | |
28 | arb_ptr g; | |
29 | ulong n; | |
30 | slong i, prec; | |
31 | ||
32 | arb_init(a); | |
33 | arb_init(u); | |
34 | arb_init(v); | |
35 | arb_init(u2); | |
36 | arb_init(v2); | |
37 | ||
38 | arb_randtest(a, state, 1 + n_randint(state, 4000), 10); | |
39 | arb_randtest(u, state, 1 + n_randint(state, 4000), 10); | |
40 | arb_randtest(v, state, 1 + n_randint(state, 4000), 10); | |
41 | n = n_randint(state, 120); | |
42 | ||
43 | f = _fmpz_vec_init(n + 1); | |
44 | g = _arb_vec_init(n + 1); | |
45 | ||
46 | prec = 2 + n_randint(state, 4000); | |
47 | arb_rising2_ui_rs(u, v, a, n, 0, prec); | |
48 | ||
49 | arith_stirling_number_1u_vec(f, n, n + 1); | |
50 | for (i = 0; i <= n; i++) | |
51 | arb_set_fmpz(g + i, f + i); | |
52 | _arb_poly_evaluate(u2, g, n + 1, a, prec); | |
53 | ||
54 | _arb_poly_derivative(g, g, n + 1, prec); | |
55 | _arb_poly_evaluate(v2, g, n, a, prec); | |
56 | ||
57 | if (!arb_overlaps(u, u2) || !arb_overlaps(v, v2)) | |
58 | { | |
59 | flint_printf("FAIL: overlap\n\n"); | |
60 | flint_printf("n = %wu\n", n); | |
61 | flint_printf("a = "); arb_printd(a, 15); flint_printf("\n\n"); | |
62 | flint_printf("u = "); arb_printd(u, 15); flint_printf("\n\n"); | |
63 | flint_printf("u2 = "); arb_printd(u2, 15); flint_printf("\n\n"); | |
64 | flint_printf("v = "); arb_printd(v, 15); flint_printf("\n\n"); | |
65 | flint_printf("v2 = "); arb_printd(v2, 15); flint_printf("\n\n"); | |
66 | flint_abort(); | |
67 | } | |
68 | ||
69 | arb_set(u2, a); | |
70 | arb_rising2_ui_rs(u2, v, u2, n, 0, prec); | |
71 | ||
72 | if (!arb_equal(u2, u)) | |
73 | { | |
74 | flint_printf("FAIL: aliasing 1\n\n"); | |
75 | flint_printf("a = "); arb_printd(a, 15); flint_printf("\n\n"); | |
76 | flint_printf("u = "); arb_printd(u, 15); flint_printf("\n\n"); | |
77 | flint_printf("u2 = "); arb_printd(u2, 15); flint_printf("\n\n"); | |
78 | flint_printf("n = %wu\n", n); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | arb_set(v2, a); | |
83 | arb_rising2_ui_rs(u, v2, v2, n, 0, prec); | |
84 | ||
85 | if (!arb_equal(v2, v)) | |
86 | { | |
87 | flint_printf("FAIL: aliasing 2\n\n"); | |
88 | flint_printf("a = "); arb_printd(a, 15); flint_printf("\n\n"); | |
89 | flint_printf("v = "); arb_printd(v, 15); flint_printf("\n\n"); | |
90 | flint_printf("v2 = "); arb_printd(v2, 15); flint_printf("\n\n"); | |
91 | flint_printf("n = %wu\n", n); | |
92 | flint_abort(); | |
93 | } | |
94 | ||
95 | arb_clear(a); | |
96 | arb_clear(u); | |
97 | arb_clear(v); | |
98 | arb_clear(u2); | |
99 | arb_clear(v2); | |
100 | _fmpz_vec_clear(f, n + 1); | |
101 | _arb_vec_clear(g, n + 1); | |
102 | } | |
103 | ||
104 | flint_randclear(state); | |
105 | flint_cleanup(); | |
106 | flint_printf("PASS\n"); | |
107 | return EXIT_SUCCESS; | |
108 | } | |
109 |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_bs...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | /* compare with fmpq */ | |
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | arb_t a, b; | |
27 | fmpq_t x, y, z; | |
28 | ulong n; | |
29 | slong i; | |
30 | ||
31 | arb_init(a); | |
32 | arb_init(b); | |
33 | ||
34 | fmpq_init(x); | |
35 | fmpq_init(y); | |
36 | fmpq_init(z); | |
37 | ||
38 | arb_randtest(a, state, 1 + n_randint(state, 1000), 10); | |
39 | arb_randtest(b, state, 1 + n_randint(state, 1000), 10); | |
40 | n = n_randint(state, 80); | |
41 | ||
42 | arb_get_rand_fmpq(x, state, a, 1 + n_randint(state, 10)); | |
43 | arb_rising_ui_bs(b, a, n, 2 + n_randint(state, 1000)); | |
44 | ||
45 | fmpq_one(y); | |
46 | for (i = 0; i < n; i++) | |
47 | { | |
48 | fmpq_set_si(z, i, 1); | |
49 | fmpq_add(z, x, z); | |
50 | fmpq_mul(y, y, z); | |
51 | } | |
52 | ||
53 | if (!arb_contains_fmpq(b, y)) | |
54 | { | |
55 | flint_printf("FAIL: containment\n\n"); | |
56 | flint_printf("n = %wu\n", n); | |
57 | flint_printf("a = "); arb_print(a); flint_printf("\n\n"); | |
58 | flint_printf("x = "); fmpq_print(x); flint_printf("\n\n"); | |
59 | flint_printf("b = "); arb_print(b); flint_printf("\n\n"); | |
60 | flint_printf("y = "); fmpq_print(y); flint_printf("\n\n"); | |
61 | flint_abort(); | |
62 | } | |
63 | ||
64 | arb_clear(a); | |
65 | arb_clear(b); | |
66 | ||
67 | fmpq_clear(x); | |
68 | fmpq_clear(y); | |
69 | fmpq_clear(z); | |
70 | } | |
71 | ||
72 | /* aliasing of y and x */ | |
73 | for (iter = 0; iter < 500 * arb_test_multiplier(); iter++) | |
74 | { | |
75 | arb_t x, y; | |
76 | ulong n; | |
77 | slong prec; | |
78 | ||
79 | arb_init(x); | |
80 | arb_init(y); | |
81 | ||
82 | arb_randtest(x, state, 1 + n_randint(state, 200), 10); | |
83 | arb_randtest(y, state, 1 + n_randint(state, 200), 10); | |
84 | n = n_randint(state, 100); | |
85 | ||
86 | prec = 2 + n_randint(state, 1000); | |
87 | ||
88 | arb_rising_ui_bs(y, x, n, prec); | |
89 | arb_rising_ui_bs(x, x, n, prec); | |
90 | ||
91 | if (!arb_equal(x, y)) | |
92 | { | |
93 | flint_printf("FAIL: aliasing\n\n"); | |
94 | flint_printf("x = "); arb_print(x); flint_printf("\n\n"); | |
95 | flint_printf("y = "); arb_print(y); flint_printf("\n\n"); | |
96 | flint_printf("n = %wu\n", n); | |
97 | flint_abort(); | |
98 | } | |
99 | ||
100 | arb_clear(x); | |
101 | arb_clear(y); | |
102 | } | |
103 | ||
104 | flint_randclear(state); | |
105 | flint_cleanup(); | |
106 | flint_printf("PASS\n"); | |
107 | return EXIT_SUCCESS; | |
108 | } |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_rec...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | /* compare with fmpq */ | |
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | arb_t a, b; | |
27 | fmpq_t x, y, z; | |
28 | ulong n; | |
29 | slong i; | |
30 | ||
31 | arb_init(a); | |
32 | arb_init(b); | |
33 | ||
34 | fmpq_init(x); | |
35 | fmpq_init(y); | |
36 | fmpq_init(z); | |
37 | ||
38 | arb_randtest(a, state, 1 + n_randint(state, 1000), 10); | |
39 | arb_randtest(b, state, 1 + n_randint(state, 1000), 10); | |
40 | n = n_randint(state, 80); | |
41 | ||
42 | arb_get_rand_fmpq(x, state, a, 1 + n_randint(state, 10)); | |
43 | arb_rising_ui_rec(b, a, n, 2 + n_randint(state, 1000)); | |
44 | ||
45 | fmpq_one(y); | |
46 | for (i = 0; i < n; i++) | |
47 | { | |
48 | fmpq_set_si(z, i, 1); | |
49 | fmpq_add(z, x, z); | |
50 | fmpq_mul(y, y, z); | |
51 | } | |
52 | ||
53 | if (!arb_contains_fmpq(b, y)) | |
54 | { | |
55 | flint_printf("FAIL: containment\n\n"); | |
56 | flint_printf("n = %wu\n", n); | |
57 | flint_printf("a = "); arb_print(a); flint_printf("\n\n"); | |
58 | flint_printf("x = "); fmpq_print(x); flint_printf("\n\n"); | |
59 | flint_printf("b = "); arb_print(b); flint_printf("\n\n"); | |
60 | flint_printf("y = "); fmpq_print(y); flint_printf("\n\n"); | |
61 | flint_abort(); | |
62 | } | |
63 | ||
64 | arb_clear(a); | |
65 | arb_clear(b); | |
66 | ||
67 | fmpq_clear(x); | |
68 | fmpq_clear(y); | |
69 | fmpq_clear(z); | |
70 | } | |
71 | ||
72 | /* aliasing of y and x */ | |
73 | for (iter = 0; iter < 500 * arb_test_multiplier(); iter++) | |
74 | { | |
75 | arb_t x, y; | |
76 | ulong n; | |
77 | slong prec; | |
78 | ||
79 | arb_init(x); | |
80 | arb_init(y); | |
81 | ||
82 | arb_randtest(x, state, 1 + n_randint(state, 200), 10); | |
83 | arb_randtest(y, state, 1 + n_randint(state, 200), 10); | |
84 | n = n_randint(state, 100); | |
85 | ||
86 | prec = 2 + n_randint(state, 1000); | |
87 | ||
88 | arb_rising_ui_rec(y, x, n, prec); | |
89 | arb_rising_ui_rec(x, x, n, prec); | |
90 | ||
91 | if (!arb_equal(x, y)) | |
92 | { | |
93 | flint_printf("FAIL: aliasing\n\n"); | |
94 | flint_printf("x = "); arb_print(x); flint_printf("\n\n"); | |
95 | flint_printf("y = "); arb_print(y); flint_printf("\n\n"); | |
96 | flint_printf("n = %wu\n", n); | |
97 | flint_abort(); | |
98 | } | |
99 | ||
100 | arb_clear(x); | |
101 | arb_clear(y); | |
102 | } | |
103 | ||
104 | flint_randclear(state); | |
105 | flint_cleanup(); | |
106 | flint_printf("PASS\n"); | |
107 | return EXIT_SUCCESS; | |
108 | } |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("rising_ui_rs...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | /* compare with fmpq */ | |
24 | for (iter = 0; iter < 1000 * arb_test_multiplier(); iter++) | |
25 | { | |
26 | arb_t a, b; | |
27 | fmpq_t x, y, z; | |
28 | ulong n, step; | |
29 | slong i; | |
30 | ||
31 | arb_init(a); | |
32 | arb_init(b); | |
33 | ||
34 | fmpq_init(x); | |
35 | fmpq_init(y); | |
36 | fmpq_init(z); | |
37 | ||
38 | arb_randtest(a, state, 1 + n_randint(state, 1000), 10); | |
39 | arb_randtest(b, state, 1 + n_randint(state, 1000), 10); | |
40 | n = n_randint(state, 80); | |
41 | ||
42 | arb_get_rand_fmpq(x, state, a, 1 + n_randint(state, 10)); | |
43 | ||
44 | step = n_randint(state, 20); | |
45 | arb_rising_ui_rs(b, a, n, step, 2 + n_randint(state, 1000)); | |
46 | ||
47 | fmpq_one(y); | |
48 | for (i = 0; i < n; i++) | |
49 | { | |
50 | fmpq_set_si(z, i, 1); | |
51 | fmpq_add(z, x, z); | |
52 | fmpq_mul(y, y, z); | |
53 | } | |
54 | ||
55 | if (!arb_contains_fmpq(b, y)) | |
56 | { | |
57 | flint_printf("FAIL: containment\n\n"); | |
58 | flint_printf("n = %wu\n", n); | |
59 | flint_printf("a = "); arb_print(a); flint_printf("\n\n"); | |
60 | flint_printf("x = "); fmpq_print(x); flint_printf("\n\n"); | |
61 | flint_printf("b = "); arb_print(b); flint_printf("\n\n"); | |
62 | flint_printf("y = "); fmpq_print(y); flint_printf("\n\n"); | |
63 | flint_abort(); | |
64 | } | |
65 | ||
66 | arb_clear(a); | |
67 | arb_clear(b); | |
68 | ||
69 | fmpq_clear(x); | |
70 | fmpq_clear(y); | |
71 | fmpq_clear(z); | |
72 | } | |
73 | ||
74 | /* aliasing of y and x */ | |
75 | for (iter = 0; iter < 500 * arb_test_multiplier(); iter++) | |
76 | { | |
77 | arb_t x, y; | |
78 | ulong n, step; | |
79 | slong prec; | |
80 | ||
81 | arb_init(x); | |
82 | arb_init(y); | |
83 | ||
84 | arb_randtest(x, state, 1 + n_randint(state, 200), 10); | |
85 | arb_randtest(y, state, 1 + n_randint(state, 200), 10); | |
86 | n = n_randint(state, 100); | |
87 | ||
88 | prec = 2 + n_randint(state, 1000); | |
89 | ||
90 | step = n_randint(state, 20); | |
91 | arb_rising_ui_rs(y, x, n, step, prec); | |
92 | arb_rising_ui_rs(x, x, n, step, prec); | |
93 | ||
94 | if (!arb_equal(x, y)) | |
95 | { | |
96 | flint_printf("FAIL: aliasing\n\n"); | |
97 | flint_printf("x = "); arb_print(x); flint_printf("\n\n"); | |
98 | flint_printf("y = "); arb_print(y); flint_printf("\n\n"); | |
99 | flint_printf("n = %wu\n", n); | |
100 | flint_abort(); | |
101 | } | |
102 | ||
103 | arb_clear(x); | |
104 | arb_clear(y); | |
105 | } | |
106 | ||
107 | flint_randclear(state); | |
108 | flint_cleanup(); | |
109 | flint_printf("PASS\n"); | |
110 | return EXIT_SUCCESS; | |
111 | } |
10 | 10 | |
11 | 11 | #include "arb.h" |
12 | 12 | |
13 | const char * arb_version = "2.20.0"; | |
13 | const char * arb_version = "2.21.0"; |
26 | 26 | #endif |
27 | 27 | |
28 | 28 | #define __ARB_VERSION 2 |
29 | #define __ARB_VERSION_MINOR 20 | |
29 | #define __ARB_VERSION_MINOR 21 | |
30 | 30 | #define __ARB_VERSION_PATCHLEVEL 0 |
31 | #define ARB_VERSION "2.20.0" | |
31 | #define ARB_VERSION "2.21.0" | |
32 | 32 | #define __ARB_RELEASE (__ARB_VERSION * 10000 + \ |
33 | 33 | __ARB_VERSION_MINOR * 100 + \ |
34 | 34 | __ARB_VERSION_PATCHLEVEL) |
423 | 423 | void arb_submul_si(arb_t z, const arb_t x, slong y, slong prec); |
424 | 424 | void arb_submul_ui(arb_t z, const arb_t x, ulong y, slong prec); |
425 | 425 | void arb_submul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec); |
426 | ||
427 | void arb_fma(arb_t res, const arb_t x, const arb_t y, const arb_t z, slong prec); | |
428 | void arb_fma_arf(arb_t res, const arb_t x, const arf_t y, const arb_t z, slong prec); | |
429 | void arb_fma_ui(arb_t res, const arb_t x, ulong y, const arb_t z, slong prec); | |
426 | 430 | |
427 | 431 | void arb_dot_simple(arb_t res, const arb_t initial, int subtract, |
428 | 432 | arb_srcptr x, slong xstep, arb_srcptr y, slong ystep, slong len, slong prec); |
562 | 566 | void arb_zeta(arb_t z, const arb_t s, slong prec); |
563 | 567 | void arb_hurwitz_zeta(arb_t z, const arb_t s, const arb_t a, slong prec); |
564 | 568 | |
565 | void arb_rising_ui_bs(arb_t y, const arb_t x, ulong n, slong prec); | |
566 | void arb_rising_ui_rs(arb_t y, const arb_t x, ulong n, ulong m, slong prec); | |
567 | void arb_rising_ui_rec(arb_t y, const arb_t x, ulong n, slong prec); | |
568 | 569 | void arb_rising_ui(arb_t z, const arb_t x, ulong n, slong prec); |
569 | 570 | void arb_rising_fmpq_ui(arb_t y, const fmpq_t x, ulong n, slong prec); |
570 | 571 | void arb_rising(arb_t z, const arb_t x, const arb_t n, slong prec); |
571 | ||
572 | void arb_rising2_ui_rs(arb_t u, arb_t v, const arb_t x, ulong n, ulong m, slong prec); | |
573 | void arb_rising2_ui_bs(arb_t u, arb_t v, const arb_t x, ulong n, slong prec); | |
574 | 572 | void arb_rising2_ui(arb_t u, arb_t v, const arb_t x, ulong n, slong prec); |
575 | 573 | |
576 | 574 | void arb_log_ui_from_prev(arb_t s, ulong k, arb_t log_prev, ulong prev, slong prec); |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include <math.h> | |
12 | ||
13 | #include "arb.h" | |
14 | #include "acb.h" | |
15 | #include "arb_fpwrap.h" | |
16 | #include "arb_hypgeom.h" | |
17 | #include "acb_hypgeom.h" | |
18 | #include "acb_dirichlet.h" | |
19 | #include "acb_elliptic.h" | |
20 | #include "acb_modular.h" | |
21 | ||
22 | static int | |
23 | _acb_vec_is_finite(acb_srcptr x, slong len) | |
24 | { | |
25 | slong i; | |
26 | ||
27 | for (i = 0; i < len; i++) | |
28 | if (!acb_is_finite(x + i)) | |
29 | return 0; | |
30 | ||
31 | return 1; | |
32 | } | |
33 | ||
34 | int | |
35 | arb_accurate_enough_d(const arb_t x, int flags) | |
36 | { | |
37 | if (flags & FPWRAP_CORRECT_ROUNDING) | |
38 | { | |
39 | return arb_can_round_arf(x, 53, ARF_RND_NEAR); | |
40 | } | |
41 | ||
42 | if (arb_rel_accuracy_bits(x) >= 53 + 1) | |
43 | return 1; | |
44 | ||
45 | /* Rounding will give +/- 0 (we don't worry which) */ | |
46 | if (mag_cmp_2exp_si(arb_radref(x), -1077) < 0 && | |
47 | arf_cmpabs_2exp_si(arb_midref(x), -1077) < 0) | |
48 | { | |
49 | return 1; | |
50 | } | |
51 | ||
52 | /* Rounding will give +/- inf */ | |
53 | if (arb_rel_accuracy_bits(x) > 2 && | |
54 | arf_cmpabs_2exp_si(arb_midref(x), 1024) > 0) | |
55 | { | |
56 | return 1; | |
57 | } | |
58 | ||
59 | return 0; | |
60 | } | |
61 | ||
62 | int | |
63 | acb_accurate_enough_d(const acb_t x, int flags) | |
64 | { | |
65 | if (flags & FPWRAP_CORRECT_ROUNDING) | |
66 | { | |
67 | return arb_can_round_arf(acb_realref(x), 53, ARF_RND_NEAR) && | |
68 | arb_can_round_arf(acb_imagref(x), 53, ARF_RND_NEAR); | |
69 | } | |
70 | ||
71 | if (flags & FPWRAP_ACCURATE_PARTS) | |
72 | { | |
73 | return arb_accurate_enough_d(acb_realref(x), flags) && | |
74 | arb_accurate_enough_d(acb_imagref(x), flags); | |
75 | } | |
76 | ||
77 | if (acb_rel_accuracy_bits(x) >= 53 + 1) | |
78 | return 1; | |
79 | ||
80 | /* Rounding will give +/- 0 (we don't worry which) */ | |
81 | if (mag_cmp_2exp_si(arb_radref(acb_realref(x)), -1077) < 0 && | |
82 | arf_cmpabs_2exp_si(arb_midref(acb_realref(x)), -1077) < 0 && | |
83 | mag_cmp_2exp_si(arb_radref(acb_imagref(x)), -1077) < 0 && | |
84 | arf_cmpabs_2exp_si(arb_midref(acb_imagref(x)), -1077) < 0) | |
85 | { | |
86 | return 1; | |
87 | } | |
88 | ||
89 | /* Rounding will give +/- inf */ | |
90 | if (acb_rel_accuracy_bits(x) > 2 && | |
91 | (arf_cmpabs_2exp_si(arb_midref(acb_realref(x)), 1024) > 0 || | |
92 | arf_cmpabs_2exp_si(arb_midref(acb_imagref(x)), 1024) > 0)) | |
93 | { | |
94 | return 1; | |
95 | } | |
96 | ||
97 | return 0; | |
98 | } | |
99 | ||
100 | #define WP_INITIAL 64 | |
101 | ||
102 | #define DOUBLE_CHECK_RESULT \ | |
103 | if (arb_accurate_enough_d(arb_res, flags)) \ | |
104 | { \ | |
105 | *res = arf_get_d(arb_midref(arb_res), ARF_RND_NEAR); \ | |
106 | status = FPWRAP_SUCCESS; \ | |
107 | break; \ | |
108 | } \ | |
109 | if (wp >= double_wp_max(flags)) \ | |
110 | { \ | |
111 | *res = D_NAN; \ | |
112 | status = FPWRAP_UNABLE; \ | |
113 | break; \ | |
114 | } \ | |
115 | ||
116 | #define DOUBLE_CHECK_RESULT2 \ | |
117 | if (arb_accurate_enough_d(arb_res1, flags) && arb_accurate_enough_d(arb_res2, flags)) \ | |
118 | { \ | |
119 | *res1 = arf_get_d(arb_midref(arb_res1), ARF_RND_NEAR); \ | |
120 | *res2 = arf_get_d(arb_midref(arb_res2), ARF_RND_NEAR); \ | |
121 | status = FPWRAP_SUCCESS; \ | |
122 | break; \ | |
123 | } \ | |
124 | if (wp >= double_wp_max(flags)) \ | |
125 | { \ | |
126 | *res1 = D_NAN; \ | |
127 | *res2 = D_NAN; \ | |
128 | status = FPWRAP_UNABLE; \ | |
129 | break; \ | |
130 | } \ | |
131 | ||
132 | #define CDOUBLE_CHECK_RESULT \ | |
133 | if (acb_accurate_enough_d(acb_res, flags)) \ | |
134 | { \ | |
135 | res->real = arf_get_d(arb_midref(acb_realref(acb_res)), ARF_RND_NEAR); \ | |
136 | res->imag = arf_get_d(arb_midref(acb_imagref(acb_res)), ARF_RND_NEAR); \ | |
137 | status = FPWRAP_SUCCESS; \ | |
138 | break; \ | |
139 | } \ | |
140 | if (wp >= double_wp_max(flags)) \ | |
141 | { \ | |
142 | res->real = D_NAN; \ | |
143 | res->imag = D_NAN; \ | |
144 | status = FPWRAP_UNABLE; \ | |
145 | break; \ | |
146 | } | |
147 | ||
148 | ||
149 | static slong | |
150 | double_wp_max(int flags) | |
151 | { | |
152 | int iters; | |
153 | ||
154 | iters = flags / FPWRAP_WORK_LIMIT; | |
155 | ||
156 | if (iters <= 0) | |
157 | return 64 << 7; | |
158 | ||
159 | if (iters >= 25) | |
160 | return 64 << 24; | |
161 | ||
162 | return 64 << iters; | |
163 | } | |
164 | ||
165 | ||
166 | typedef void (*arb_func_1)(arb_t, const arb_t, slong prec); | |
167 | typedef void (*arb_func_2)(arb_t, const arb_t, const arb_t, slong prec); | |
168 | typedef void (*arb_func_3)(arb_t, const arb_t, const arb_t, const arb_t, slong prec); | |
169 | typedef void (*arb_func_4)(arb_t, const arb_t, const arb_t, const arb_t, const arb_t, slong prec); | |
170 | ||
171 | typedef void (*acb_func_1)(acb_t, const acb_t, slong prec); | |
172 | typedef void (*acb_func_2)(acb_t, const acb_t, const acb_t, slong prec); | |
173 | typedef void (*acb_func_3)(acb_t, const acb_t, const acb_t, const acb_t, slong prec); | |
174 | typedef void (*acb_func_4)(acb_t, const acb_t, const acb_t, const acb_t, const acb_t, slong prec); | |
175 | ||
176 | typedef void (*arb_func_1_int)(arb_t, const arb_t, int, slong prec); | |
177 | typedef void (*arb_func_2_int)(arb_t, const arb_t, const arb_t, int, slong prec); | |
178 | typedef void (*arb_func_3_int)(arb_t, const arb_t, const arb_t, const arb_t, int, slong prec); | |
179 | typedef void (*arb_func_4_int)(arb_t, const arb_t, const arb_t, const arb_t, const arb_t, int, slong prec); | |
180 | ||
181 | typedef void (*acb_func_1_int)(acb_t, const acb_t, int, slong prec); | |
182 | typedef void (*acb_func_2_int)(acb_t, const acb_t, const acb_t, int, slong prec); | |
183 | typedef void (*acb_func_3_int)(acb_t, const acb_t, const acb_t, const acb_t, int, slong prec); | |
184 | typedef void (*acb_func_4_int)(acb_t, const acb_t, const acb_t, const acb_t, const acb_t, int, slong prec); | |
185 | ||
186 | ||
187 | int arb_fpwrap_double_1(double * res, arb_func_1 func, double x, int flags) | |
188 | { | |
189 | arb_t arb_res, arb_x; | |
190 | slong wp; | |
191 | int status; | |
192 | ||
193 | arb_init(arb_res); | |
194 | arb_init(arb_x); | |
195 | ||
196 | arb_set_d(arb_x, x); | |
197 | ||
198 | if (!arb_is_finite(arb_x)) | |
199 | { | |
200 | *res = D_NAN; | |
201 | status = FPWRAP_UNABLE; | |
202 | } | |
203 | else | |
204 | { | |
205 | for (wp = WP_INITIAL; ; wp *= 2) | |
206 | { | |
207 | func(arb_res, arb_x, wp); | |
208 | DOUBLE_CHECK_RESULT | |
209 | } | |
210 | } | |
211 | ||
212 | arb_clear(arb_x); | |
213 | arb_clear(arb_res); | |
214 | ||
215 | return status; | |
216 | } | |
217 | ||
218 | int arb_fpwrap_double_2(double * res, arb_func_2 func, double x1, double x2, int flags) | |
219 | { | |
220 | arb_t arb_res, arb_x1, arb_x2; | |
221 | slong wp; | |
222 | int status; | |
223 | ||
224 | arb_init(arb_res); | |
225 | arb_init(arb_x1); | |
226 | arb_init(arb_x2); | |
227 | ||
228 | arb_set_d(arb_x1, x1); | |
229 | arb_set_d(arb_x2, x2); | |
230 | ||
231 | if (!arb_is_finite(arb_x1) || !arb_is_finite(arb_x2)) | |
232 | { | |
233 | *res = D_NAN; | |
234 | status = FPWRAP_UNABLE; | |
235 | } | |
236 | else | |
237 | { | |
238 | for (wp = WP_INITIAL; ; wp *= 2) | |
239 | { | |
240 | func(arb_res, arb_x1, arb_x2, wp); | |
241 | DOUBLE_CHECK_RESULT | |
242 | } | |
243 | } | |
244 | ||
245 | arb_clear(arb_x1); | |
246 | arb_clear(arb_x2); | |
247 | arb_clear(arb_res); | |
248 | ||
249 | return status; | |
250 | } | |
251 | ||
252 | int arb_fpwrap_double_3(double * res, arb_func_3 func, double x1, double x2, double x3, int flags) | |
253 | { | |
254 | arb_t arb_res, arb_x1, arb_x2, arb_x3; | |
255 | slong wp; | |
256 | int status; | |
257 | ||
258 | arb_init(arb_res); | |
259 | arb_init(arb_x1); | |
260 | arb_init(arb_x2); | |
261 | arb_init(arb_x3); | |
262 | ||
263 | arb_set_d(arb_x1, x1); | |
264 | arb_set_d(arb_x2, x2); | |
265 | arb_set_d(arb_x3, x3); | |
266 | ||
267 | if (!arb_is_finite(arb_x1) || !arb_is_finite(arb_x2) || !arb_is_finite(arb_x3)) | |
268 | { | |
269 | *res = D_NAN; | |
270 | status = FPWRAP_UNABLE; | |
271 | } | |
272 | else | |
273 | { | |
274 | for (wp = WP_INITIAL; ; wp *= 2) | |
275 | { | |
276 | func(arb_res, arb_x1, arb_x2, arb_x3, wp); | |
277 | DOUBLE_CHECK_RESULT | |
278 | } | |
279 | } | |
280 | ||
281 | arb_clear(arb_x1); | |
282 | arb_clear(arb_x2); | |
283 | arb_clear(arb_x3); | |
284 | arb_clear(arb_res); | |
285 | ||
286 | return status; | |
287 | } | |
288 | ||
289 | int arb_fpwrap_double_4(double * res, arb_func_4 func, double x1, double x2, double x3, double x4, int flags) | |
290 | { | |
291 | arb_t arb_res, arb_x1, arb_x2, arb_x3, arb_x4; | |
292 | slong wp; | |
293 | int status; | |
294 | ||
295 | arb_init(arb_res); | |
296 | arb_init(arb_x1); | |
297 | arb_init(arb_x2); | |
298 | arb_init(arb_x3); | |
299 | arb_init(arb_x4); | |
300 | ||
301 | arb_set_d(arb_x1, x1); | |
302 | arb_set_d(arb_x2, x2); | |
303 | arb_set_d(arb_x3, x3); | |
304 | arb_set_d(arb_x3, x4); | |
305 | ||
306 | if (!arb_is_finite(arb_x1) || !arb_is_finite(arb_x2) || !arb_is_finite(arb_x3) || !arb_is_finite(arb_x4)) | |
307 | { | |
308 | *res = D_NAN; | |
309 | status = FPWRAP_UNABLE; | |
310 | } | |
311 | else | |
312 | { | |
313 | for (wp = WP_INITIAL; ; wp *= 2) | |
314 | { | |
315 | func(arb_res, arb_x1, arb_x2, arb_x3, arb_x4, wp); | |
316 | DOUBLE_CHECK_RESULT | |
317 | } | |
318 | } | |
319 | ||
320 | arb_clear(arb_x1); | |
321 | arb_clear(arb_x2); | |
322 | arb_clear(arb_x3); | |
323 | arb_clear(arb_x4); | |
324 | arb_clear(arb_res); | |
325 | ||
326 | return status; | |
327 | } | |
328 | ||
329 | int arb_fpwrap_cdouble_1(complex_double * res, acb_func_1 func, complex_double x, int flags) | |
330 | { | |
331 | acb_t acb_res, acb_x; | |
332 | slong wp; | |
333 | int status; | |
334 | ||
335 | acb_init(acb_res); | |
336 | acb_init(acb_x); | |
337 | ||
338 | acb_set_d_d(acb_x, x.real, x.imag); | |
339 | ||
340 | if (!acb_is_finite(acb_x)) | |
341 | { | |
342 | res->real = D_NAN; | |
343 | res->imag = D_NAN; | |
344 | status = FPWRAP_UNABLE; | |
345 | } | |
346 | else | |
347 | { | |
348 | for (wp = WP_INITIAL; ; wp *= 2) | |
349 | { | |
350 | func(acb_res, acb_x, wp); | |
351 | CDOUBLE_CHECK_RESULT | |
352 | } | |
353 | } | |
354 | ||
355 | acb_clear(acb_x); | |
356 | acb_clear(acb_res); | |
357 | ||
358 | return status; | |
359 | } | |
360 | ||
361 | int arb_fpwrap_cdouble_2(complex_double * res, acb_func_2 func, complex_double x1, complex_double x2, int flags) | |
362 | { | |
363 | acb_t acb_res, acb_x1, acb_x2; | |
364 | slong wp; | |
365 | int status; | |
366 | ||
367 | acb_init(acb_res); | |
368 | acb_init(acb_x1); | |
369 | acb_init(acb_x2); | |
370 | ||
371 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
372 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
373 | ||
374 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2)) | |
375 | { | |
376 | res->real = D_NAN; | |
377 | res->imag = D_NAN; | |
378 | status = FPWRAP_UNABLE; | |
379 | } | |
380 | else | |
381 | { | |
382 | for (wp = WP_INITIAL; ; wp *= 2) | |
383 | { | |
384 | func(acb_res, acb_x1, acb_x2, wp); | |
385 | CDOUBLE_CHECK_RESULT | |
386 | } | |
387 | } | |
388 | ||
389 | acb_clear(acb_x1); | |
390 | acb_clear(acb_x2); | |
391 | acb_clear(acb_res); | |
392 | ||
393 | return status; | |
394 | } | |
395 | ||
396 | int arb_fpwrap_cdouble_3(complex_double * res, acb_func_3 func, complex_double x1, complex_double x2, complex_double x3, int flags) | |
397 | { | |
398 | acb_t acb_res, acb_x1, acb_x2, acb_x3; | |
399 | slong wp; | |
400 | int status; | |
401 | ||
402 | acb_init(acb_res); | |
403 | acb_init(acb_x1); | |
404 | acb_init(acb_x2); | |
405 | acb_init(acb_x3); | |
406 | ||
407 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
408 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
409 | acb_set_d_d(acb_x3, x3.real, x3.imag); | |
410 | ||
411 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2) || !acb_is_finite(acb_x3)) | |
412 | { | |
413 | res->real = D_NAN; | |
414 | res->imag = D_NAN; | |
415 | status = FPWRAP_UNABLE; | |
416 | } | |
417 | else | |
418 | { | |
419 | for (wp = WP_INITIAL; ; wp *= 2) | |
420 | { | |
421 | func(acb_res, acb_x1, acb_x2, acb_x3, wp); | |
422 | CDOUBLE_CHECK_RESULT | |
423 | } | |
424 | } | |
425 | ||
426 | acb_clear(acb_x1); | |
427 | acb_clear(acb_x2); | |
428 | acb_clear(acb_x3); | |
429 | acb_clear(acb_res); | |
430 | ||
431 | return status; | |
432 | } | |
433 | ||
434 | int arb_fpwrap_cdouble_4(complex_double * res, acb_func_4 func, complex_double x1, complex_double x2, complex_double x3, complex_double x4, int flags) | |
435 | { | |
436 | acb_t acb_res, acb_x1, acb_x2, acb_x3, acb_x4; | |
437 | slong wp; | |
438 | int status; | |
439 | ||
440 | acb_init(acb_res); | |
441 | acb_init(acb_x1); | |
442 | acb_init(acb_x2); | |
443 | acb_init(acb_x3); | |
444 | acb_init(acb_x4); | |
445 | ||
446 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
447 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
448 | acb_set_d_d(acb_x3, x3.real, x3.imag); | |
449 | acb_set_d_d(acb_x4, x4.real, x4.imag); | |
450 | ||
451 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2) || !acb_is_finite(acb_x3) || !acb_is_finite(acb_x4)) | |
452 | { | |
453 | res->real = D_NAN; | |
454 | res->imag = D_NAN; | |
455 | status = FPWRAP_UNABLE; | |
456 | } | |
457 | else | |
458 | { | |
459 | for (wp = WP_INITIAL; ; wp *= 2) | |
460 | { | |
461 | func(acb_res, acb_x1, acb_x2, acb_x3, acb_x4, wp); | |
462 | CDOUBLE_CHECK_RESULT | |
463 | } | |
464 | } | |
465 | ||
466 | acb_clear(acb_x1); | |
467 | acb_clear(acb_x2); | |
468 | acb_clear(acb_x3); | |
469 | acb_clear(acb_x4); | |
470 | acb_clear(acb_res); | |
471 | ||
472 | return status; | |
473 | } | |
474 | ||
475 | int arb_fpwrap_double_1_int(double * res, arb_func_1_int func, double x, int intx, int flags) | |
476 | { | |
477 | arb_t arb_res, arb_x; | |
478 | slong wp; | |
479 | int status; | |
480 | ||
481 | arb_init(arb_res); | |
482 | arb_init(arb_x); | |
483 | ||
484 | arb_set_d(arb_x, x); | |
485 | ||
486 | if (!arb_is_finite(arb_x)) | |
487 | { | |
488 | *res = D_NAN; | |
489 | status = FPWRAP_UNABLE; | |
490 | } | |
491 | else | |
492 | { | |
493 | for (wp = WP_INITIAL; ; wp *= 2) | |
494 | { | |
495 | func(arb_res, arb_x, intx, wp); | |
496 | DOUBLE_CHECK_RESULT | |
497 | } | |
498 | } | |
499 | ||
500 | arb_clear(arb_x); | |
501 | arb_clear(arb_res); | |
502 | ||
503 | return status; | |
504 | } | |
505 | ||
506 | int arb_fpwrap_double_2_int(double * res, arb_func_2_int func, double x1, double x2, int intx, int flags) | |
507 | { | |
508 | arb_t arb_res, arb_x1, arb_x2; | |
509 | slong wp; | |
510 | int status; | |
511 | ||
512 | arb_init(arb_res); | |
513 | arb_init(arb_x1); | |
514 | arb_init(arb_x2); | |
515 | ||
516 | arb_set_d(arb_x1, x1); | |
517 | arb_set_d(arb_x2, x2); | |
518 | ||
519 | if (!arb_is_finite(arb_x1) || !arb_is_finite(arb_x2)) | |
520 | { | |
521 | *res = D_NAN; | |
522 | status = FPWRAP_UNABLE; | |
523 | } | |
524 | else | |
525 | { | |
526 | for (wp = WP_INITIAL; ; wp *= 2) | |
527 | { | |
528 | func(arb_res, arb_x1, arb_x2, intx, wp); | |
529 | DOUBLE_CHECK_RESULT | |
530 | } | |
531 | } | |
532 | ||
533 | arb_clear(arb_x1); | |
534 | arb_clear(arb_x2); | |
535 | arb_clear(arb_res); | |
536 | ||
537 | return status; | |
538 | } | |
539 | ||
540 | int arb_fpwrap_double_3_int(double * res, arb_func_3_int func, double x1, double x2, double x3, int intx, int flags) | |
541 | { | |
542 | arb_t arb_res, arb_x1, arb_x2, arb_x3; | |
543 | slong wp; | |
544 | int status; | |
545 | ||
546 | arb_init(arb_res); | |
547 | arb_init(arb_x1); | |
548 | arb_init(arb_x2); | |
549 | arb_init(arb_x3); | |
550 | ||
551 | arb_set_d(arb_x1, x1); | |
552 | arb_set_d(arb_x2, x2); | |
553 | arb_set_d(arb_x3, x3); | |
554 | ||
555 | if (!arb_is_finite(arb_x1) || !arb_is_finite(arb_x2) || !arb_is_finite(arb_x3)) | |
556 | { | |
557 | *res = D_NAN; | |
558 | status = FPWRAP_UNABLE; | |
559 | } | |
560 | else | |
561 | { | |
562 | for (wp = WP_INITIAL; ; wp *= 2) | |
563 | { | |
564 | func(arb_res, arb_x1, arb_x2, arb_x3, intx, wp); | |
565 | DOUBLE_CHECK_RESULT | |
566 | } | |
567 | } | |
568 | ||
569 | arb_clear(arb_x1); | |
570 | arb_clear(arb_x2); | |
571 | arb_clear(arb_x3); | |
572 | arb_clear(arb_res); | |
573 | ||
574 | return status; | |
575 | } | |
576 | ||
577 | int arb_fpwrap_double_4_int(double * res, arb_func_4_int func, double x1, double x2, double x3, double x4, int intx, int flags) | |
578 | { | |
579 | arb_t arb_res, arb_x1, arb_x2, arb_x3, arb_x4; | |
580 | slong wp; | |
581 | int status; | |
582 | ||
583 | arb_init(arb_res); | |
584 | arb_init(arb_x1); | |
585 | arb_init(arb_x2); | |
586 | arb_init(arb_x3); | |
587 | arb_init(arb_x4); | |
588 | ||
589 | arb_set_d(arb_x1, x1); | |
590 | arb_set_d(arb_x2, x2); | |
591 | arb_set_d(arb_x3, x3); | |
592 | arb_set_d(arb_x3, x4); | |
593 | ||
594 | if (!arb_is_finite(arb_x1) || !arb_is_finite(arb_x2) || !arb_is_finite(arb_x3) || !arb_is_finite(arb_x4)) | |
595 | { | |
596 | *res = D_NAN; | |
597 | status = FPWRAP_UNABLE; | |
598 | } | |
599 | else | |
600 | { | |
601 | for (wp = WP_INITIAL; ; wp *= 2) | |
602 | { | |
603 | func(arb_res, arb_x1, arb_x2, arb_x3, arb_x4, intx, wp); | |
604 | DOUBLE_CHECK_RESULT | |
605 | } | |
606 | } | |
607 | ||
608 | arb_clear(arb_x1); | |
609 | arb_clear(arb_x2); | |
610 | arb_clear(arb_x3); | |
611 | arb_clear(arb_x4); | |
612 | arb_clear(arb_res); | |
613 | ||
614 | return status; | |
615 | } | |
616 | ||
617 | int arb_fpwrap_cdouble_1_int(complex_double * res, acb_func_1_int func, complex_double x, int intx, int flags) | |
618 | { | |
619 | acb_t acb_res, acb_x; | |
620 | slong wp; | |
621 | int status; | |
622 | ||
623 | acb_init(acb_res); | |
624 | acb_init(acb_x); | |
625 | ||
626 | acb_set_d_d(acb_x, x.real, x.imag); | |
627 | ||
628 | if (!acb_is_finite(acb_x)) | |
629 | { | |
630 | res->real = D_NAN; | |
631 | res->imag = D_NAN; | |
632 | status = FPWRAP_UNABLE; | |
633 | } | |
634 | else | |
635 | { | |
636 | for (wp = WP_INITIAL; ; wp *= 2) | |
637 | { | |
638 | func(acb_res, acb_x, intx, wp); | |
639 | CDOUBLE_CHECK_RESULT | |
640 | } | |
641 | } | |
642 | ||
643 | acb_clear(acb_x); | |
644 | acb_clear(acb_res); | |
645 | ||
646 | return status; | |
647 | } | |
648 | ||
649 | int arb_fpwrap_cdouble_2_int(complex_double * res, acb_func_2_int func, complex_double x1, complex_double x2, int intx, int flags) | |
650 | { | |
651 | acb_t acb_res, acb_x1, acb_x2; | |
652 | slong wp; | |
653 | int status; | |
654 | ||
655 | acb_init(acb_res); | |
656 | acb_init(acb_x1); | |
657 | acb_init(acb_x2); | |
658 | ||
659 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
660 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
661 | ||
662 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2)) | |
663 | { | |
664 | res->real = D_NAN; | |
665 | res->imag = D_NAN; | |
666 | status = FPWRAP_UNABLE; | |
667 | } | |
668 | else | |
669 | { | |
670 | for (wp = WP_INITIAL; ; wp *= 2) | |
671 | { | |
672 | func(acb_res, acb_x1, acb_x2, intx, wp); | |
673 | CDOUBLE_CHECK_RESULT | |
674 | } | |
675 | } | |
676 | ||
677 | acb_clear(acb_x1); | |
678 | acb_clear(acb_x2); | |
679 | acb_clear(acb_res); | |
680 | ||
681 | return status; | |
682 | } | |
683 | ||
684 | int arb_fpwrap_cdouble_3_int(complex_double * res, acb_func_3_int func, complex_double x1, complex_double x2, complex_double x3, int intx, int flags) | |
685 | { | |
686 | acb_t acb_res, acb_x1, acb_x2, acb_x3; | |
687 | slong wp; | |
688 | int status; | |
689 | ||
690 | acb_init(acb_res); | |
691 | acb_init(acb_x1); | |
692 | acb_init(acb_x2); | |
693 | acb_init(acb_x3); | |
694 | ||
695 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
696 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
697 | acb_set_d_d(acb_x3, x3.real, x3.imag); | |
698 | ||
699 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2) || !acb_is_finite(acb_x3)) | |
700 | { | |
701 | res->real = D_NAN; | |
702 | res->imag = D_NAN; | |
703 | status = FPWRAP_UNABLE; | |
704 | } | |
705 | else | |
706 | { | |
707 | for (wp = WP_INITIAL; ; wp *= 2) | |
708 | { | |
709 | func(acb_res, acb_x1, acb_x2, acb_x3, intx, wp); | |
710 | CDOUBLE_CHECK_RESULT | |
711 | } | |
712 | } | |
713 | ||
714 | acb_clear(acb_x1); | |
715 | acb_clear(acb_x2); | |
716 | acb_clear(acb_x3); | |
717 | acb_clear(acb_res); | |
718 | ||
719 | return status; | |
720 | } | |
721 | ||
722 | int arb_fpwrap_cdouble_4_int(complex_double * res, acb_func_4_int func, complex_double x1, complex_double x2, complex_double x3, complex_double x4, int intx, int flags) | |
723 | { | |
724 | acb_t acb_res, acb_x1, acb_x2, acb_x3, acb_x4; | |
725 | slong wp; | |
726 | int status; | |
727 | ||
728 | acb_init(acb_res); | |
729 | acb_init(acb_x1); | |
730 | acb_init(acb_x2); | |
731 | acb_init(acb_x3); | |
732 | acb_init(acb_x4); | |
733 | ||
734 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
735 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
736 | acb_set_d_d(acb_x3, x3.real, x3.imag); | |
737 | acb_set_d_d(acb_x4, x4.real, x4.imag); | |
738 | ||
739 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2) || !acb_is_finite(acb_x3) || !acb_is_finite(acb_x4)) | |
740 | { | |
741 | res->real = D_NAN; | |
742 | res->imag = D_NAN; | |
743 | status = FPWRAP_UNABLE; | |
744 | } | |
745 | else | |
746 | { | |
747 | for (wp = WP_INITIAL; ; wp *= 2) | |
748 | { | |
749 | func(acb_res, acb_x1, acb_x2, acb_x3, acb_x4, intx, wp); | |
750 | CDOUBLE_CHECK_RESULT | |
751 | } | |
752 | } | |
753 | ||
754 | acb_clear(acb_x1); | |
755 | acb_clear(acb_x2); | |
756 | acb_clear(acb_x3); | |
757 | acb_clear(acb_x4); | |
758 | acb_clear(acb_res); | |
759 | ||
760 | return status; | |
761 | } | |
762 | ||
763 | #define DEF_DOUBLE_FUN_1(name, arb_fun) \ | |
764 | int arb_fpwrap_double_ ## name(double * res, double x, int flags) \ | |
765 | { \ | |
766 | return arb_fpwrap_double_1(res, arb_fun, x, flags); \ | |
767 | } \ | |
768 | ||
769 | #define DEF_DOUBLE_FUN_2(name, arb_fun) \ | |
770 | int arb_fpwrap_double_ ## name(double * res, double x1, double x2, int flags) \ | |
771 | { \ | |
772 | return arb_fpwrap_double_2(res, arb_fun, x1, x2, flags); \ | |
773 | } \ | |
774 | ||
775 | #define DEF_DOUBLE_FUN_3(name, arb_fun) \ | |
776 | int arb_fpwrap_double_ ## name(double * res, double x1, double x2, double x3, int flags) \ | |
777 | { \ | |
778 | return arb_fpwrap_double_3(res, arb_fun, x1, x2, x3, flags); \ | |
779 | } \ | |
780 | ||
781 | #define DEF_DOUBLE_FUN_4(name, arb_fun) \ | |
782 | int arb_fpwrap_double_ ## name(double * res, double x1, double x2, double x3, double x4, int flags) \ | |
783 | { \ | |
784 | return arb_fpwrap_double_4(res, arb_fun, x1, x2, x3, x4, flags); \ | |
785 | } \ | |
786 | ||
787 | #define DEF_CDOUBLE_FUN_1(name, acb_fun) \ | |
788 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x, int flags) \ | |
789 | { \ | |
790 | return arb_fpwrap_cdouble_1(res, acb_fun, x, flags); \ | |
791 | } \ | |
792 | ||
793 | #define DEF_CDOUBLE_FUN_2(name, acb_fun) \ | |
794 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x1, complex_double x2, int flags) \ | |
795 | { \ | |
796 | return arb_fpwrap_cdouble_2(res, acb_fun, x1, x2, flags); \ | |
797 | } \ | |
798 | ||
799 | #define DEF_CDOUBLE_FUN_3(name, acb_fun) \ | |
800 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x1, complex_double x2, complex_double x3, int flags) \ | |
801 | { \ | |
802 | return arb_fpwrap_cdouble_3(res, acb_fun, x1, x2, x3, flags); \ | |
803 | } \ | |
804 | ||
805 | #define DEF_CDOUBLE_FUN_4(name, acb_fun) \ | |
806 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x1, complex_double x2, complex_double x3, complex_double x4, int flags) \ | |
807 | { \ | |
808 | return arb_fpwrap_cdouble_4(res, acb_fun, x1, x2, x3, x4, flags); \ | |
809 | } \ | |
810 | ||
811 | #define DEF_DOUBLE_FUN_1_INT(name, arb_fun) \ | |
812 | int arb_fpwrap_double_ ## name(double * res, double x, int intx, int flags) \ | |
813 | { \ | |
814 | return arb_fpwrap_double_1_int(res, arb_fun, x, intx, flags); \ | |
815 | } \ | |
816 | ||
817 | #define DEF_DOUBLE_FUN_2_INT(name, arb_fun) \ | |
818 | int arb_fpwrap_double_ ## name(double * res, double x1, double x2, int intx, int flags) \ | |
819 | { \ | |
820 | return arb_fpwrap_double_2_int(res, arb_fun, x1, x2, intx, flags); \ | |
821 | } \ | |
822 | ||
823 | #define DEF_DOUBLE_FUN_3_INT(name, arb_fun) \ | |
824 | int arb_fpwrap_double_ ## name(double * res, double x1, double x2, double x3, int intx, int flags) \ | |
825 | { \ | |
826 | return arb_fpwrap_double_3_int(res, arb_fun, x1, x2, x3, intx, flags); \ | |
827 | } \ | |
828 | ||
829 | #define DEF_DOUBLE_FUN_4_INT(name, arb_fun) \ | |
830 | int arb_fpwrap_double_ ## name(double * res, double x1, double x2, double x3, double x4, int intx, int flags) \ | |
831 | { \ | |
832 | return arb_fpwrap_double_4_int(res, arb_fun, x1, x2, x3, x4, intx, flags); \ | |
833 | } \ | |
834 | ||
835 | #define DEF_CDOUBLE_FUN_1_INT(name, acb_fun) \ | |
836 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x, int intx, int flags) \ | |
837 | { \ | |
838 | return arb_fpwrap_cdouble_1_int(res, acb_fun, x, intx, flags); \ | |
839 | } \ | |
840 | ||
841 | #define DEF_CDOUBLE_FUN_2_INT(name, acb_fun) \ | |
842 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x1, complex_double x2, int intx, int flags) \ | |
843 | { \ | |
844 | return arb_fpwrap_cdouble_2_int(res, acb_fun, x1, x2, intx, flags); \ | |
845 | } \ | |
846 | ||
847 | #define DEF_CDOUBLE_FUN_3_INT(name, acb_fun) \ | |
848 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x1, complex_double x2, complex_double x3, int intx, int flags) \ | |
849 | { \ | |
850 | return arb_fpwrap_cdouble_3_int(res, acb_fun, x1, x2, x3, intx, flags); \ | |
851 | } \ | |
852 | ||
853 | #define DEF_CDOUBLE_FUN_4_INT(name, acb_fun) \ | |
854 | int arb_fpwrap_cdouble_ ## name(complex_double * res, complex_double x1, complex_double x2, complex_double x3, complex_double x4, int intx, int flags) \ | |
855 | { \ | |
856 | return arb_fpwrap_cdouble_4_int(res, acb_fun, x1, x2, x3, x4, intx, flags); \ | |
857 | } \ | |
858 | ||
859 | DEF_DOUBLE_FUN_1(exp, arb_exp) | |
860 | DEF_CDOUBLE_FUN_1(exp, acb_exp) | |
861 | ||
862 | DEF_DOUBLE_FUN_1(expm1, arb_expm1) | |
863 | DEF_CDOUBLE_FUN_1(expm1, acb_expm1) | |
864 | ||
865 | DEF_DOUBLE_FUN_1(log, arb_log) | |
866 | DEF_CDOUBLE_FUN_1(log, acb_log) | |
867 | ||
868 | DEF_DOUBLE_FUN_1(log1p, arb_log1p) | |
869 | DEF_CDOUBLE_FUN_1(log1p, acb_log1p) | |
870 | ||
871 | DEF_DOUBLE_FUN_1(sqrt, arb_sqrt) | |
872 | DEF_CDOUBLE_FUN_1(sqrt, acb_sqrt) | |
873 | ||
874 | DEF_DOUBLE_FUN_1(rsqrt, arb_rsqrt) | |
875 | DEF_CDOUBLE_FUN_1(rsqrt, acb_rsqrt) | |
876 | ||
877 | static void _arb_cbrt(arb_t res, const arb_t x, slong prec) { arb_root_ui(res, x, 3, prec); } | |
878 | static void _acb_cbrt(acb_t res, const acb_t x, slong prec) { acb_root_ui(res, x, 3, prec); } | |
879 | ||
880 | DEF_DOUBLE_FUN_1(cbrt, _arb_cbrt) | |
881 | DEF_CDOUBLE_FUN_1(cbrt, _acb_cbrt) | |
882 | ||
883 | DEF_DOUBLE_FUN_1(sin, arb_sin) | |
884 | DEF_CDOUBLE_FUN_1(sin, acb_sin) | |
885 | ||
886 | DEF_DOUBLE_FUN_1(cos, arb_cos) | |
887 | DEF_CDOUBLE_FUN_1(cos, acb_cos) | |
888 | ||
889 | DEF_DOUBLE_FUN_1(tan, arb_tan) | |
890 | DEF_CDOUBLE_FUN_1(tan, acb_tan) | |
891 | ||
892 | DEF_DOUBLE_FUN_1(cot, arb_cot) | |
893 | DEF_CDOUBLE_FUN_1(cot, acb_cot) | |
894 | ||
895 | DEF_DOUBLE_FUN_1(sec, arb_sec) | |
896 | DEF_CDOUBLE_FUN_1(sec, acb_sec) | |
897 | ||
898 | DEF_DOUBLE_FUN_1(csc, arb_csc) | |
899 | DEF_CDOUBLE_FUN_1(csc, acb_csc) | |
900 | ||
901 | DEF_DOUBLE_FUN_1(sinc, arb_sinc) | |
902 | DEF_CDOUBLE_FUN_1(sinc, acb_sinc) | |
903 | ||
904 | DEF_DOUBLE_FUN_1(sin_pi, arb_sin_pi) | |
905 | DEF_CDOUBLE_FUN_1(sin_pi, acb_sin_pi) | |
906 | ||
907 | DEF_DOUBLE_FUN_1(cos_pi, arb_cos_pi) | |
908 | DEF_CDOUBLE_FUN_1(cos_pi, acb_cos_pi) | |
909 | ||
910 | DEF_DOUBLE_FUN_1(tan_pi, arb_tan_pi) | |
911 | DEF_CDOUBLE_FUN_1(tan_pi, acb_tan_pi) | |
912 | ||
913 | DEF_DOUBLE_FUN_1(cot_pi, arb_cot_pi) | |
914 | DEF_CDOUBLE_FUN_1(cot_pi, acb_cot_pi) | |
915 | ||
916 | DEF_DOUBLE_FUN_1(sinc_pi, arb_sinc_pi) | |
917 | DEF_CDOUBLE_FUN_1(sinc_pi, acb_sinc_pi) | |
918 | ||
919 | DEF_DOUBLE_FUN_1(asin, arb_asin) | |
920 | DEF_CDOUBLE_FUN_1(asin, acb_asin) | |
921 | ||
922 | DEF_DOUBLE_FUN_1(acos, arb_acos) | |
923 | DEF_CDOUBLE_FUN_1(acos, acb_acos) | |
924 | ||
925 | DEF_DOUBLE_FUN_1(atan, arb_atan) | |
926 | DEF_CDOUBLE_FUN_1(atan, acb_atan) | |
927 | ||
928 | DEF_DOUBLE_FUN_2(atan2, arb_atan2) | |
929 | ||
930 | DEF_DOUBLE_FUN_1(asinh, arb_asinh) | |
931 | DEF_CDOUBLE_FUN_1(asinh, acb_asinh) | |
932 | ||
933 | DEF_DOUBLE_FUN_1(acosh, arb_acosh) | |
934 | DEF_CDOUBLE_FUN_1(acosh, acb_acosh) | |
935 | ||
936 | DEF_DOUBLE_FUN_1(atanh, arb_atanh) | |
937 | DEF_CDOUBLE_FUN_1(atanh, acb_atanh) | |
938 | ||
939 | DEF_DOUBLE_FUN_2(rising, arb_rising) | |
940 | DEF_CDOUBLE_FUN_2(rising, acb_rising) | |
941 | ||
942 | DEF_DOUBLE_FUN_1(gamma, arb_gamma) | |
943 | DEF_CDOUBLE_FUN_1(gamma, acb_gamma) | |
944 | ||
945 | DEF_DOUBLE_FUN_1(rgamma, arb_rgamma) | |
946 | DEF_CDOUBLE_FUN_1(rgamma, acb_rgamma) | |
947 | ||
948 | DEF_DOUBLE_FUN_1(lgamma, arb_lgamma) | |
949 | DEF_CDOUBLE_FUN_1(lgamma, acb_lgamma) | |
950 | ||
951 | DEF_DOUBLE_FUN_1(digamma, arb_digamma) | |
952 | DEF_CDOUBLE_FUN_1(digamma, acb_digamma) | |
953 | ||
954 | DEF_DOUBLE_FUN_1(zeta, arb_zeta) | |
955 | DEF_CDOUBLE_FUN_1(zeta, acb_zeta) | |
956 | ||
957 | DEF_DOUBLE_FUN_2(hurwitz_zeta, arb_hurwitz_zeta) | |
958 | DEF_CDOUBLE_FUN_2(hurwitz_zeta, acb_hurwitz_zeta) | |
959 | ||
960 | static void | |
961 | _arb_polygamma(arb_t res, const arb_t s, const arb_t z, slong prec) | |
962 | { | |
963 | acb_t t, u, v; | |
964 | acb_init(t); | |
965 | acb_init(u); | |
966 | acb_init(v); | |
967 | acb_set_arb(t, s); | |
968 | acb_set_arb(u, z); | |
969 | acb_polygamma(v, t, u, prec); | |
970 | if (acb_is_real(v)) | |
971 | arb_set(res, acb_realref(v)); | |
972 | else | |
973 | arb_indeterminate(res); | |
974 | acb_clear(t); | |
975 | acb_clear(u); | |
976 | acb_clear(v); | |
977 | } | |
978 | ||
979 | static void | |
980 | _arb_barnes_g(arb_t res, const arb_t x, slong prec) | |
981 | { | |
982 | acb_t t, u; | |
983 | acb_init(t); | |
984 | acb_init(u); | |
985 | acb_set_arb(t, x); | |
986 | acb_barnes_g(u, t, prec); | |
987 | arb_set(res, acb_realref(u)); | |
988 | acb_clear(t); | |
989 | acb_clear(u); | |
990 | } | |
991 | ||
992 | static void | |
993 | _arb_log_barnes_g(arb_t res, const arb_t x, slong prec) | |
994 | { | |
995 | if (!arb_is_positive(x)) | |
996 | { | |
997 | arb_indeterminate(res); | |
998 | } | |
999 | else | |
1000 | { | |
1001 | acb_t t, u; | |
1002 | acb_init(t); | |
1003 | acb_init(u); | |
1004 | acb_set_arb(t, x); | |
1005 | acb_log_barnes_g(u, t, prec); | |
1006 | arb_set(res, acb_realref(u)); | |
1007 | acb_clear(t); | |
1008 | acb_clear(u); | |
1009 | } | |
1010 | } | |
1011 | ||
1012 | DEF_DOUBLE_FUN_1(barnes_g, _arb_barnes_g) | |
1013 | DEF_CDOUBLE_FUN_1(barnes_g, acb_barnes_g) | |
1014 | ||
1015 | DEF_DOUBLE_FUN_1(log_barnes_g, _arb_log_barnes_g) | |
1016 | DEF_CDOUBLE_FUN_1(log_barnes_g, acb_log_barnes_g) | |
1017 | ||
1018 | DEF_DOUBLE_FUN_2(polygamma, _arb_polygamma) | |
1019 | DEF_CDOUBLE_FUN_2(polygamma, acb_polygamma) | |
1020 | ||
1021 | DEF_DOUBLE_FUN_2(polylog, arb_polylog) | |
1022 | DEF_CDOUBLE_FUN_2(polylog, acb_polylog) | |
1023 | ||
1024 | DEF_DOUBLE_FUN_1(dilog, arb_hypgeom_dilog) | |
1025 | DEF_CDOUBLE_FUN_1(dilog, acb_hypgeom_dilog) | |
1026 | ||
1027 | ||
1028 | DEF_DOUBLE_FUN_1(erf, arb_hypgeom_erf) | |
1029 | DEF_CDOUBLE_FUN_1(erf, acb_hypgeom_erf) | |
1030 | ||
1031 | DEF_DOUBLE_FUN_1(erfc, arb_hypgeom_erfc) | |
1032 | DEF_CDOUBLE_FUN_1(erfc, acb_hypgeom_erfc) | |
1033 | ||
1034 | DEF_DOUBLE_FUN_1(erfi, arb_hypgeom_erfi) | |
1035 | DEF_CDOUBLE_FUN_1(erfi, acb_hypgeom_erfi) | |
1036 | ||
1037 | static void _arb_hypgeom_fresnel_s(arb_t res, const arb_t x, int normalized, slong prec) { arb_hypgeom_fresnel(res, NULL, x, normalized, prec); } | |
1038 | static void _arb_hypgeom_fresnel_c(arb_t res, const arb_t x, int normalized, slong prec) { arb_hypgeom_fresnel(NULL, res, x, normalized, prec); } | |
1039 | static void _acb_hypgeom_fresnel_s(acb_t res, const acb_t x, int normalized, slong prec) { acb_hypgeom_fresnel(res, NULL, x, normalized, prec); } | |
1040 | static void _acb_hypgeom_fresnel_c(acb_t res, const acb_t x, int normalized, slong prec) { acb_hypgeom_fresnel(NULL, res, x, normalized, prec); } | |
1041 | ||
1042 | DEF_DOUBLE_FUN_1_INT(fresnel_s, _arb_hypgeom_fresnel_s) | |
1043 | DEF_CDOUBLE_FUN_1_INT(fresnel_s, _acb_hypgeom_fresnel_s) | |
1044 | ||
1045 | DEF_DOUBLE_FUN_1_INT(fresnel_c, _arb_hypgeom_fresnel_c) | |
1046 | DEF_CDOUBLE_FUN_1_INT(fresnel_c, _acb_hypgeom_fresnel_c) | |
1047 | ||
1048 | DEF_DOUBLE_FUN_2_INT(gamma_upper, arb_hypgeom_gamma_upper) | |
1049 | DEF_CDOUBLE_FUN_2_INT(gamma_upper, acb_hypgeom_gamma_upper) | |
1050 | ||
1051 | DEF_DOUBLE_FUN_2_INT(gamma_lower, arb_hypgeom_gamma_lower) | |
1052 | DEF_CDOUBLE_FUN_2_INT(gamma_lower, acb_hypgeom_gamma_lower) | |
1053 | ||
1054 | DEF_DOUBLE_FUN_3_INT(beta_lower, arb_hypgeom_beta_lower) | |
1055 | DEF_CDOUBLE_FUN_3_INT(beta_lower, acb_hypgeom_beta_lower) | |
1056 | ||
1057 | DEF_DOUBLE_FUN_2(exp_integral_e, arb_hypgeom_expint) | |
1058 | DEF_CDOUBLE_FUN_2(exp_integral_e, acb_hypgeom_expint) | |
1059 | ||
1060 | DEF_DOUBLE_FUN_1(exp_integral_ei, arb_hypgeom_ei) | |
1061 | DEF_CDOUBLE_FUN_1(exp_integral_ei, acb_hypgeom_ei) | |
1062 | ||
1063 | DEF_DOUBLE_FUN_1(sin_integral, arb_hypgeom_si) | |
1064 | DEF_CDOUBLE_FUN_1(sin_integral, acb_hypgeom_si) | |
1065 | ||
1066 | DEF_DOUBLE_FUN_1(cos_integral, arb_hypgeom_ci) | |
1067 | DEF_CDOUBLE_FUN_1(cos_integral, acb_hypgeom_ci) | |
1068 | ||
1069 | DEF_DOUBLE_FUN_1(sinh_integral, arb_hypgeom_shi) | |
1070 | DEF_CDOUBLE_FUN_1(sinh_integral, acb_hypgeom_shi) | |
1071 | ||
1072 | DEF_DOUBLE_FUN_1(cosh_integral, arb_hypgeom_chi) | |
1073 | DEF_CDOUBLE_FUN_1(cosh_integral, acb_hypgeom_chi) | |
1074 | ||
1075 | DEF_DOUBLE_FUN_1_INT(log_integral, arb_hypgeom_li) | |
1076 | DEF_CDOUBLE_FUN_1_INT(log_integral, acb_hypgeom_li) | |
1077 | ||
1078 | DEF_DOUBLE_FUN_2(bessel_j, arb_hypgeom_bessel_j) | |
1079 | DEF_CDOUBLE_FUN_2(bessel_j, acb_hypgeom_bessel_j) | |
1080 | ||
1081 | DEF_DOUBLE_FUN_2(bessel_y, arb_hypgeom_bessel_y) | |
1082 | DEF_CDOUBLE_FUN_2(bessel_y, acb_hypgeom_bessel_y) | |
1083 | ||
1084 | DEF_DOUBLE_FUN_2(bessel_i, arb_hypgeom_bessel_i) | |
1085 | DEF_CDOUBLE_FUN_2(bessel_i, acb_hypgeom_bessel_i) | |
1086 | ||
1087 | DEF_DOUBLE_FUN_2(bessel_k, arb_hypgeom_bessel_k) | |
1088 | DEF_CDOUBLE_FUN_2(bessel_k, acb_hypgeom_bessel_k) | |
1089 | ||
1090 | DEF_DOUBLE_FUN_2(bessel_k_scaled, arb_hypgeom_bessel_k_scaled) | |
1091 | DEF_CDOUBLE_FUN_2(bessel_k_scaled, acb_hypgeom_bessel_k_scaled) | |
1092 | ||
1093 | static void _arb_hypgeom_airy_ai(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(res, NULL, NULL, NULL, x, prec); } | |
1094 | static void _arb_hypgeom_airy_ai_prime(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(NULL, res, NULL, NULL, x, prec); } | |
1095 | static void _arb_hypgeom_airy_bi(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(NULL, NULL, res, NULL, x, prec); } | |
1096 | static void _arb_hypgeom_airy_bi_prime(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(NULL, NULL, NULL, res, x, prec); } | |
1097 | ||
1098 | static void _acb_hypgeom_airy_ai(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(res, NULL, NULL, NULL, x, prec); } | |
1099 | static void _acb_hypgeom_airy_ai_prime(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(NULL, res, NULL, NULL, x, prec); } | |
1100 | static void _acb_hypgeom_airy_bi(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(NULL, NULL, res, NULL, x, prec); } | |
1101 | static void _acb_hypgeom_airy_bi_prime(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(NULL, NULL, NULL, res, x, prec); } | |
1102 | ||
1103 | DEF_DOUBLE_FUN_1(airy_ai, _arb_hypgeom_airy_ai) | |
1104 | DEF_CDOUBLE_FUN_1(airy_ai, _acb_hypgeom_airy_ai) | |
1105 | ||
1106 | DEF_DOUBLE_FUN_1(airy_ai_prime, _arb_hypgeom_airy_ai_prime) | |
1107 | DEF_CDOUBLE_FUN_1(airy_ai_prime, _acb_hypgeom_airy_ai_prime) | |
1108 | ||
1109 | DEF_DOUBLE_FUN_1(airy_bi, _arb_hypgeom_airy_bi) | |
1110 | DEF_CDOUBLE_FUN_1(airy_bi, _acb_hypgeom_airy_bi) | |
1111 | ||
1112 | DEF_DOUBLE_FUN_1(airy_bi_prime, _arb_hypgeom_airy_bi_prime) | |
1113 | DEF_CDOUBLE_FUN_1(airy_bi_prime, _acb_hypgeom_airy_bi_prime) | |
1114 | ||
1115 | static void _arb_hypgeom_coulomb_f(arb_t res, const arb_t l, const arb_t eta, const arb_t z, slong prec) { arb_hypgeom_coulomb(res, NULL, l, eta, z, prec); } | |
1116 | static void _arb_hypgeom_coulomb_g(arb_t res, const arb_t l, const arb_t eta, const arb_t z, slong prec) { arb_hypgeom_coulomb(NULL, res, l, eta, z, prec); } | |
1117 | ||
1118 | static void _acb_hypgeom_coulomb_f(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(res, NULL, NULL, NULL, l, eta, z, prec); } | |
1119 | static void _acb_hypgeom_coulomb_g(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(NULL, res, NULL, NULL, l, eta, z, prec); } | |
1120 | static void _acb_hypgeom_coulomb_hpos(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(NULL, NULL, res, NULL, l, eta, z, prec); } | |
1121 | static void _acb_hypgeom_coulomb_hneg(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(NULL, NULL, NULL, res, l, eta, z, prec); } | |
1122 | ||
1123 | DEF_DOUBLE_FUN_3(coulomb_f, _arb_hypgeom_coulomb_f) | |
1124 | DEF_CDOUBLE_FUN_3(coulomb_f, _acb_hypgeom_coulomb_f) | |
1125 | ||
1126 | DEF_DOUBLE_FUN_3(coulomb_g, _arb_hypgeom_coulomb_g) | |
1127 | DEF_CDOUBLE_FUN_3(coulomb_g, _acb_hypgeom_coulomb_g) | |
1128 | ||
1129 | DEF_CDOUBLE_FUN_3(coulomb_hpos, _acb_hypgeom_coulomb_hpos) | |
1130 | DEF_CDOUBLE_FUN_3(coulomb_hneg, _acb_hypgeom_coulomb_hneg) | |
1131 | ||
1132 | DEF_DOUBLE_FUN_2(chebyshev_t, arb_hypgeom_chebyshev_t) | |
1133 | DEF_CDOUBLE_FUN_2(chebyshev_t, acb_hypgeom_chebyshev_t) | |
1134 | ||
1135 | DEF_DOUBLE_FUN_2(chebyshev_u, arb_hypgeom_chebyshev_u) | |
1136 | DEF_CDOUBLE_FUN_2(chebyshev_u, acb_hypgeom_chebyshev_u) | |
1137 | ||
1138 | DEF_DOUBLE_FUN_4(jacobi_p, arb_hypgeom_jacobi_p) | |
1139 | DEF_CDOUBLE_FUN_4(jacobi_p, acb_hypgeom_jacobi_p) | |
1140 | ||
1141 | DEF_DOUBLE_FUN_3(gegenbauer_c, arb_hypgeom_gegenbauer_c) | |
1142 | DEF_CDOUBLE_FUN_3(gegenbauer_c, acb_hypgeom_gegenbauer_c) | |
1143 | ||
1144 | DEF_DOUBLE_FUN_3(laguerre_l, arb_hypgeom_laguerre_l) | |
1145 | DEF_CDOUBLE_FUN_3(laguerre_l, acb_hypgeom_laguerre_l) | |
1146 | ||
1147 | DEF_DOUBLE_FUN_2(hermite_h, arb_hypgeom_hermite_h) | |
1148 | DEF_CDOUBLE_FUN_2(hermite_h, acb_hypgeom_hermite_h) | |
1149 | ||
1150 | DEF_DOUBLE_FUN_3_INT(legendre_p, arb_hypgeom_legendre_p) | |
1151 | DEF_CDOUBLE_FUN_3_INT(legendre_p, acb_hypgeom_legendre_p) | |
1152 | ||
1153 | DEF_DOUBLE_FUN_3_INT(legendre_q, arb_hypgeom_legendre_q) | |
1154 | DEF_CDOUBLE_FUN_3_INT(legendre_q, acb_hypgeom_legendre_q) | |
1155 | ||
1156 | int arb_fpwrap_cdouble_spherical_y(complex_double * res, slong n, slong m, complex_double x1, complex_double x2, int flags) | |
1157 | { | |
1158 | acb_t acb_res, acb_x1, acb_x2; | |
1159 | slong wp; | |
1160 | int status; | |
1161 | ||
1162 | acb_init(acb_res); | |
1163 | acb_init(acb_x1); | |
1164 | acb_init(acb_x2); | |
1165 | ||
1166 | acb_set_d_d(acb_x1, x1.real, x1.imag); | |
1167 | acb_set_d_d(acb_x2, x2.real, x2.imag); | |
1168 | ||
1169 | if (!acb_is_finite(acb_x1) || !acb_is_finite(acb_x2)) | |
1170 | { | |
1171 | res->real = D_NAN; | |
1172 | res->imag = D_NAN; | |
1173 | status = FPWRAP_UNABLE; | |
1174 | } | |
1175 | else | |
1176 | { | |
1177 | for (wp = WP_INITIAL; ; wp *= 2) | |
1178 | { | |
1179 | acb_hypgeom_spherical_y(acb_res, n, m, acb_x1, acb_x2, wp); | |
1180 | CDOUBLE_CHECK_RESULT | |
1181 | } | |
1182 | } | |
1183 | ||
1184 | acb_clear(acb_x1); | |
1185 | acb_clear(acb_x2); | |
1186 | acb_clear(acb_res); | |
1187 | ||
1188 | return status; | |
1189 | } | |
1190 | ||
1191 | DEF_DOUBLE_FUN_2_INT(hypgeom_0f1, arb_hypgeom_0f1) | |
1192 | DEF_CDOUBLE_FUN_2_INT(hypgeom_0f1, acb_hypgeom_0f1) | |
1193 | ||
1194 | DEF_DOUBLE_FUN_3_INT(hypgeom_1f1, arb_hypgeom_1f1) | |
1195 | DEF_CDOUBLE_FUN_3_INT(hypgeom_1f1, acb_hypgeom_1f1) | |
1196 | ||
1197 | DEF_DOUBLE_FUN_3(hypgeom_u, arb_hypgeom_u) | |
1198 | DEF_CDOUBLE_FUN_3(hypgeom_u, acb_hypgeom_u) | |
1199 | ||
1200 | DEF_DOUBLE_FUN_4_INT(hypgeom_2f1, arb_hypgeom_2f1) | |
1201 | DEF_CDOUBLE_FUN_4_INT(hypgeom_2f1, acb_hypgeom_2f1) | |
1202 | ||
1203 | int arb_fpwrap_double_hypgeom_pfq(double * res, const double * a, slong p, const double * b, slong q, double z, int regularized, int flags) | |
1204 | { | |
1205 | arb_t arb_res; | |
1206 | arb_ptr t; | |
1207 | slong wp; | |
1208 | slong i; | |
1209 | int status; | |
1210 | ||
1211 | arb_init(arb_res); | |
1212 | t = _arb_vec_init(p + q + 1); | |
1213 | ||
1214 | for (i = 0; i < p; i++) | |
1215 | arb_set_d(t + i, a[i]); | |
1216 | for (i = 0; i < q; i++) | |
1217 | arb_set_d(t + p + i, b[i]); | |
1218 | arb_set_d(t + p + q, z); | |
1219 | ||
1220 | if (!_arb_vec_is_finite(t, p + q + 1)) | |
1221 | { | |
1222 | *res = D_NAN; | |
1223 | status = FPWRAP_UNABLE; | |
1224 | } | |
1225 | else | |
1226 | { | |
1227 | for (wp = WP_INITIAL; ; wp *= 2) | |
1228 | { | |
1229 | arb_hypgeom_pfq(arb_res, t, p, t + p, q, t + p + q, regularized, wp); | |
1230 | DOUBLE_CHECK_RESULT | |
1231 | } | |
1232 | } | |
1233 | ||
1234 | _arb_vec_clear(t, p + q + 1); | |
1235 | arb_clear(arb_res); | |
1236 | ||
1237 | return status; | |
1238 | } | |
1239 | ||
1240 | int arb_fpwrap_cdouble_hypgeom_pfq(complex_double * res, const complex_double * a, slong p, const complex_double * b, slong q, complex_double z, int regularized, int flags) | |
1241 | { | |
1242 | acb_t acb_res; | |
1243 | acb_ptr t; | |
1244 | slong wp; | |
1245 | slong i; | |
1246 | int status; | |
1247 | ||
1248 | acb_init(acb_res); | |
1249 | t = _acb_vec_init(p + q + 1); | |
1250 | ||
1251 | for (i = 0; i < p; i++) | |
1252 | acb_set_d_d(t + i, a[i].real, a[i].imag); | |
1253 | for (i = 0; i < q; i++) | |
1254 | acb_set_d_d(t + p + i, b[i].real, b[i].imag); | |
1255 | acb_set_d_d(t + p + q, z.real, z.imag); | |
1256 | ||
1257 | if (!_acb_vec_is_finite(t, p + q + 1)) | |
1258 | { | |
1259 | res->real = D_NAN; | |
1260 | res->imag = D_NAN; | |
1261 | status = FPWRAP_UNABLE; | |
1262 | } | |
1263 | else | |
1264 | { | |
1265 | for (wp = WP_INITIAL; ; wp *= 2) | |
1266 | { | |
1267 | acb_hypgeom_pfq(acb_res, t, p, t + p, q, t + p + q, regularized, wp); | |
1268 | CDOUBLE_CHECK_RESULT | |
1269 | } | |
1270 | } | |
1271 | ||
1272 | _acb_vec_clear(t, p + q + 1); | |
1273 | acb_clear(acb_res); | |
1274 | ||
1275 | return status; | |
1276 | } | |
1277 | ||
1278 | DEF_DOUBLE_FUN_2(agm, arb_agm) | |
1279 | DEF_CDOUBLE_FUN_2(agm, acb_agm) | |
1280 | ||
1281 | DEF_CDOUBLE_FUN_1(elliptic_k, acb_elliptic_k) | |
1282 | DEF_CDOUBLE_FUN_1(elliptic_e, acb_elliptic_e) | |
1283 | DEF_CDOUBLE_FUN_2(elliptic_pi, acb_elliptic_pi) | |
1284 | DEF_CDOUBLE_FUN_2_INT(elliptic_f, acb_elliptic_f) | |
1285 | DEF_CDOUBLE_FUN_2_INT(elliptic_e_inc, acb_elliptic_e_inc) | |
1286 | DEF_CDOUBLE_FUN_3_INT(elliptic_pi_inc, acb_elliptic_pi_inc) | |
1287 | ||
1288 | DEF_CDOUBLE_FUN_3_INT(elliptic_rf, acb_elliptic_rf) | |
1289 | DEF_CDOUBLE_FUN_3_INT(elliptic_rg, acb_elliptic_rg) | |
1290 | DEF_CDOUBLE_FUN_4_INT(elliptic_rj, acb_elliptic_rj) | |
1291 | ||
1292 | DEF_CDOUBLE_FUN_2(elliptic_p, acb_elliptic_p) | |
1293 | DEF_CDOUBLE_FUN_2(elliptic_p_prime, acb_elliptic_p_prime) | |
1294 | DEF_CDOUBLE_FUN_2(elliptic_inv_p, acb_elliptic_inv_p) | |
1295 | DEF_CDOUBLE_FUN_2(elliptic_zeta, acb_elliptic_zeta) | |
1296 | DEF_CDOUBLE_FUN_2(elliptic_sigma, acb_elliptic_sigma) | |
1297 | ||
1298 | ||
1299 | static void | |
1300 | _acb_theta1(acb_t res, const acb_t z, const acb_t tau, slong prec) | |
1301 | { | |
1302 | acb_t a, b, c; acb_init(a); acb_init(b); acb_init(c); | |
1303 | acb_modular_theta(res, a, b, c, z, tau, prec); | |
1304 | acb_clear(a); acb_clear(b); acb_clear(c); | |
1305 | } | |
1306 | ||
1307 | static void | |
1308 | _acb_theta2(acb_t res, const acb_t z, const acb_t tau, slong prec) | |
1309 | { | |
1310 | acb_t a, b, c; acb_init(a); acb_init(b); acb_init(c); | |
1311 | acb_modular_theta(a, res, b, c, z, tau, prec); | |
1312 | acb_clear(a); acb_clear(b); acb_clear(c); | |
1313 | } | |
1314 | ||
1315 | static void | |
1316 | _acb_theta3(acb_t res, const acb_t z, const acb_t tau, slong prec) | |
1317 | { | |
1318 | acb_t a, b, c; acb_init(a); acb_init(b); acb_init(c); | |
1319 | acb_modular_theta(a, b, res, c, z, tau, prec); | |
1320 | acb_clear(a); acb_clear(b); acb_clear(c); | |
1321 | } | |
1322 | ||
1323 | static void | |
1324 | _acb_theta4(acb_t res, const acb_t z, const acb_t tau, slong prec) | |
1325 | { | |
1326 | acb_t a, b, c; acb_init(a); acb_init(b); acb_init(c); | |
1327 | acb_modular_theta(a, b, c, res, z, tau, prec); | |
1328 | acb_clear(a); acb_clear(b); acb_clear(c); | |
1329 | } | |
1330 | ||
1331 | DEF_CDOUBLE_FUN_2(jacobi_theta_1, _acb_theta1) | |
1332 | DEF_CDOUBLE_FUN_2(jacobi_theta_2, _acb_theta2) | |
1333 | DEF_CDOUBLE_FUN_2(jacobi_theta_3, _acb_theta3) | |
1334 | DEF_CDOUBLE_FUN_2(jacobi_theta_4, _acb_theta4) | |
1335 | ||
1336 | DEF_CDOUBLE_FUN_1(dedekind_eta, acb_modular_eta) | |
1337 | DEF_CDOUBLE_FUN_1(modular_j, acb_modular_j) | |
1338 | DEF_CDOUBLE_FUN_1(modular_lambda, acb_modular_lambda) | |
1339 | DEF_CDOUBLE_FUN_1(modular_delta, acb_modular_delta) | |
1340 | ||
1341 | DEF_CDOUBLE_FUN_1(dirichlet_eta, acb_dirichlet_eta) | |
1342 | DEF_CDOUBLE_FUN_1(riemann_xi, acb_dirichlet_xi) | |
1343 | ||
1344 | static void | |
1345 | _acb_hardy_theta(acb_t res, const acb_t t, slong prec) | |
1346 | { | |
1347 | acb_dirichlet_hardy_theta(res, t, NULL, NULL, 1, prec); | |
1348 | } | |
1349 | ||
1350 | static void | |
1351 | _acb_hardy_z(acb_t res, const acb_t t, slong prec) | |
1352 | { | |
1353 | acb_dirichlet_hardy_z(res, t, NULL, NULL, 1, prec); | |
1354 | } | |
1355 | ||
1356 | DEF_CDOUBLE_FUN_1(hardy_theta, _acb_hardy_theta) | |
1357 | DEF_CDOUBLE_FUN_1(hardy_z, _acb_hardy_z) | |
1358 | ||
1359 | int arb_fpwrap_cdouble_zeta_zero(complex_double * res, ulong n, int flags) | |
1360 | { | |
1361 | fmpz_t t; | |
1362 | acb_t acb_res; | |
1363 | slong wp; | |
1364 | int status; | |
1365 | ||
1366 | if (n == 0) | |
1367 | { | |
1368 | res->real = D_NAN; | |
1369 | res->imag = D_NAN; | |
1370 | return FPWRAP_UNABLE; | |
1371 | } | |
1372 | ||
1373 | acb_init(acb_res); | |
1374 | fmpz_init(t); | |
1375 | ||
1376 | fmpz_set_ui(t, n); | |
1377 | ||
1378 | for (wp = WP_INITIAL; ; wp *= 2) | |
1379 | { | |
1380 | acb_dirichlet_zeta_zero(acb_res, t, wp); | |
1381 | CDOUBLE_CHECK_RESULT | |
1382 | } | |
1383 | ||
1384 | acb_clear(acb_res); | |
1385 | ||
1386 | return status; | |
1387 | } | |
1388 | ||
1389 | int arb_fpwrap_double_legendre_root(double * res1, double * res2, ulong n, ulong k, int flags) | |
1390 | { | |
1391 | arb_t arb_res1, arb_res2; | |
1392 | slong wp; | |
1393 | int status; | |
1394 | ||
1395 | if (k >= n) | |
1396 | { | |
1397 | *res1 = D_NAN; | |
1398 | *res2 = D_NAN; | |
1399 | return FPWRAP_UNABLE; | |
1400 | } | |
1401 | ||
1402 | arb_init(arb_res1); | |
1403 | arb_init(arb_res2); | |
1404 | ||
1405 | for (wp = WP_INITIAL; ; wp *= 2) | |
1406 | { | |
1407 | arb_hypgeom_legendre_p_ui_root(arb_res1, arb_res2, n, k, wp); | |
1408 | DOUBLE_CHECK_RESULT2 | |
1409 | } | |
1410 | ||
1411 | arb_clear(arb_res1); | |
1412 | arb_clear(arb_res2); | |
1413 | ||
1414 | return status; | |
1415 | } | |
1416 | ||
1417 | int _arb_fpwrap_double_airy_zero(double * res, ulong n, int which, int flags) | |
1418 | { | |
1419 | fmpz_t t; | |
1420 | arb_t arb_res; | |
1421 | slong wp; | |
1422 | int status; | |
1423 | ||
1424 | if (n == 0) | |
1425 | { | |
1426 | *res = D_NAN; | |
1427 | return FPWRAP_UNABLE; | |
1428 | } | |
1429 | ||
1430 | arb_init(arb_res); | |
1431 | fmpz_init(t); | |
1432 | fmpz_set_ui(t, n); | |
1433 | ||
1434 | for (wp = WP_INITIAL; ; wp *= 2) | |
1435 | { | |
1436 | if (which == 0) | |
1437 | arb_hypgeom_airy_zero(arb_res, NULL, NULL, NULL, t, wp); | |
1438 | else if (which == 1) | |
1439 | arb_hypgeom_airy_zero(NULL, arb_res, NULL, NULL, t, wp); | |
1440 | else if (which == 2) | |
1441 | arb_hypgeom_airy_zero(NULL, NULL, arb_res, NULL, t, wp); | |
1442 | else | |
1443 | arb_hypgeom_airy_zero(NULL, NULL, NULL, arb_res, t, wp); | |
1444 | ||
1445 | DOUBLE_CHECK_RESULT | |
1446 | } | |
1447 | ||
1448 | arb_clear(arb_res); | |
1449 | fmpz_clear(t); | |
1450 | ||
1451 | return status; | |
1452 | } | |
1453 | ||
1454 | int arb_fpwrap_double_airy_ai_zero(double * res, ulong n, int flags) { return _arb_fpwrap_double_airy_zero(res, n, 0, flags); } | |
1455 | int arb_fpwrap_double_airy_ai_prime_zero(double * res, ulong n, int flags) { return _arb_fpwrap_double_airy_zero(res, n, 1, flags); } | |
1456 | int arb_fpwrap_double_airy_bi_zero(double * res, ulong n, int flags) { return _arb_fpwrap_double_airy_zero(res, n, 2, flags); } | |
1457 | int arb_fpwrap_double_airy_bi_prime_zero(double * res, ulong n, int flags) { return _arb_fpwrap_double_airy_zero(res, n, 3, flags); } | |
1458 | ||
1459 | int arb_fpwrap_double_lambertw(double * res, double x, slong branch, int flags) | |
1460 | { | |
1461 | arb_t arb_res, arb_x; | |
1462 | slong wp; | |
1463 | int status; | |
1464 | ||
1465 | arb_init(arb_res); | |
1466 | arb_init(arb_x); | |
1467 | ||
1468 | arb_set_d(arb_x, x); | |
1469 | ||
1470 | if (!arb_is_finite(arb_x) || !(branch == 0 || branch == -1)) | |
1471 | { | |
1472 | *res = D_NAN; | |
1473 | status = FPWRAP_UNABLE; | |
1474 | } | |
1475 | else | |
1476 | { | |
1477 | for (wp = WP_INITIAL; ; wp *= 2) | |
1478 | { | |
1479 | arb_lambertw(arb_res, arb_x, (branch == -1), wp); | |
1480 | DOUBLE_CHECK_RESULT | |
1481 | } | |
1482 | } | |
1483 | ||
1484 | arb_clear(arb_x); | |
1485 | arb_clear(arb_res); | |
1486 | ||
1487 | return status; | |
1488 | } | |
1489 | ||
1490 | int arb_fpwrap_cdouble_lambertw(complex_double * res, complex_double x, slong branch, int flags) | |
1491 | { | |
1492 | fmpz_t t; | |
1493 | acb_t acb_res, acb_x; | |
1494 | slong wp; | |
1495 | int status; | |
1496 | ||
1497 | acb_init(acb_res); | |
1498 | acb_init(acb_x); | |
1499 | fmpz_init(t); | |
1500 | ||
1501 | acb_set_d_d(acb_x, x.real, x.imag); | |
1502 | fmpz_set_si(t, branch); | |
1503 | ||
1504 | if (!acb_is_finite(acb_x)) | |
1505 | { | |
1506 | res->real = D_NAN; | |
1507 | res->imag = D_NAN; | |
1508 | status = FPWRAP_UNABLE; | |
1509 | } | |
1510 | else | |
1511 | { | |
1512 | for (wp = WP_INITIAL; ; wp *= 2) | |
1513 | { | |
1514 | acb_lambertw(acb_res, acb_x, t, 0, wp); | |
1515 | CDOUBLE_CHECK_RESULT | |
1516 | } | |
1517 | } | |
1518 | ||
1519 | acb_clear(acb_x); | |
1520 | acb_clear(acb_res); | |
1521 | fmpz_clear(t); | |
1522 | ||
1523 | return status; | |
1524 | } | |
1525 | ||
1526 | /* todo: functions with multiple outputs */ | |
1527 | /* todo: elliptic invariants, roots */ | |
1528 | /* todo: eisenstein series */ | |
1529 | /* todo: dirichlet functions requiring characters */ | |
1530 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "flint/double_extras.h" | |
12 | #include "arb_fpwrap.h" | |
13 | ||
14 | #define CHECK_DOUBLE(fcall) \ | |
15 | do { \ | |
16 | int fail = fcall; \ | |
17 | if (fail || res != res) \ | |
18 | { \ | |
19 | flint_printf("FAIL\n"); \ | |
20 | flint_printf("%d\n", __LINE__); \ | |
21 | flint_abort(); \ | |
22 | } \ | |
23 | } while (0) | |
24 | ||
25 | #define CHECK_CDOUBLE(fcall) \ | |
26 | do { \ | |
27 | int fail = fcall; \ | |
28 | if (fail || cres.real != cres.real || cres.imag != cres.imag) \ | |
29 | { \ | |
30 | flint_printf("FAIL\n"); \ | |
31 | flint_printf("%d\n", __LINE__); \ | |
32 | flint_abort(); \ | |
33 | } \ | |
34 | } while (0) | |
35 | ||
36 | ||
37 | int main() | |
38 | { | |
39 | slong iter; | |
40 | flint_rand_t state; | |
41 | ||
42 | flint_printf("fpwrap...."); | |
43 | fflush(stdout); | |
44 | ||
45 | flint_randinit(state); | |
46 | ||
47 | /* correct rounding test */ | |
48 | for (iter = 0; iter < 100000 * arb_test_multiplier(); iter++) | |
49 | { | |
50 | mpfr_t t; | |
51 | double x, y, z; | |
52 | ||
53 | mpfr_init2(t, 53); | |
54 | ||
55 | x = d_randtest(state) + n_randint(state, 100); | |
56 | ||
57 | mpfr_set_d(t, x, MPFR_RNDN); | |
58 | ||
59 | switch (n_randint(state, 4)) | |
60 | { | |
61 | case 0: | |
62 | arb_fpwrap_double_log1p(&y, x, FPWRAP_CORRECT_ROUNDING); | |
63 | mpfr_log1p(t, t, MPFR_RNDN); | |
64 | break; | |
65 | case 1: | |
66 | arb_fpwrap_double_sqrt(&y, x, FPWRAP_CORRECT_ROUNDING); | |
67 | mpfr_sqrt(t, t, MPFR_RNDN); | |
68 | break; | |
69 | case 2: | |
70 | arb_fpwrap_double_exp(&y, x, FPWRAP_CORRECT_ROUNDING); | |
71 | mpfr_exp(t, t, MPFR_RNDN); | |
72 | break; | |
73 | default: | |
74 | arb_fpwrap_double_sin(&y, x, FPWRAP_CORRECT_ROUNDING); | |
75 | mpfr_sin(t, t, MPFR_RNDN); | |
76 | break; | |
77 | } | |
78 | ||
79 | z = mpfr_get_d(t, MPFR_RNDN); | |
80 | ||
81 | if (z != y) | |
82 | { | |
83 | flint_printf("FAIL: correct rounding\n\n"); | |
84 | flint_abort(); | |
85 | } | |
86 | ||
87 | mpfr_clear(t); | |
88 | } | |
89 | ||
90 | { | |
91 | double a[1], b[2]; | |
92 | double z, y; | |
93 | ||
94 | z = 1.75; | |
95 | a[0] = 0.25; | |
96 | b[0] = 1.5; | |
97 | b[1] = -2.125; | |
98 | ||
99 | arb_fpwrap_double_hypgeom_pfq(&y, a, 1, b, 2, z, 0, 0); | |
100 | ||
101 | if (fabs(y - 0.68910385124070327187) > 1e-16) | |
102 | { | |
103 | flint_printf("FAIL: value 1\n\n"); | |
104 | flint_abort(); | |
105 | } | |
106 | ||
107 | arb_fpwrap_double_hypgeom_pfq(&y, a, 1, b, 2, z, 1, 0); | |
108 | ||
109 | if (fabs(y - (-0.21324224371323783595)) > 1e-16) | |
110 | { | |
111 | flint_printf("FAIL: value 2\n\n"); | |
112 | flint_abort(); | |
113 | } | |
114 | } | |
115 | ||
116 | { | |
117 | complex_double y, z; | |
118 | ||
119 | arb_fpwrap_cdouble_zeta_zero(&y, 1, FPWRAP_CORRECT_ROUNDING); | |
120 | arb_fpwrap_cdouble_zeta(&z, y, 0); | |
121 | ||
122 | if (fabs(z.real - (-1.0483650805588237388e-16)) > 1e-31) | |
123 | { | |
124 | flint_printf("FAIL: value 3\n\n"); | |
125 | flint_abort(); | |
126 | } | |
127 | ||
128 | if (fabs(z.imag - 6.5852592776051578103e-16) > 1e-31) | |
129 | { | |
130 | flint_printf("FAIL: value 4\n\n"); | |
131 | flint_abort(); | |
132 | } | |
133 | } | |
134 | ||
135 | { | |
136 | complex_double x, y; | |
137 | ||
138 | x.real = 1.0; | |
139 | x.imag = 1e-100; | |
140 | ||
141 | arb_fpwrap_cdouble_erf(&y, x, FPWRAP_ACCURATE_PARTS); | |
142 | ||
143 | if (fabs(y.imag - 4.1510749742059471164e-101) > 1e-116) | |
144 | { | |
145 | flint_printf("FAIL: value 5\n\n"); | |
146 | flint_abort(); | |
147 | } | |
148 | } | |
149 | ||
150 | { | |
151 | double x, y, z; | |
152 | complex_double cx, cy, cz, ctau; | |
153 | double res, res2; | |
154 | complex_double cres; | |
155 | int flags; | |
156 | ||
157 | x = 0.25; | |
158 | y = 0.625; | |
159 | z = 0.75; | |
160 | ||
161 | cx.real = 0.25; | |
162 | cx.imag = 0.125; | |
163 | cy.real = 0.5; | |
164 | cy.imag = 0.625; | |
165 | cz.real = 0.75; | |
166 | cz.imag = 0.125; | |
167 | ctau.real = 0.25; | |
168 | ctau.imag = 1.0; | |
169 | ||
170 | flags = 0; | |
171 | ||
172 | CHECK_DOUBLE(arb_fpwrap_double_exp(&res, x, flags)); | |
173 | CHECK_CDOUBLE(arb_fpwrap_cdouble_exp(&cres, cx, flags)); | |
174 | ||
175 | CHECK_DOUBLE(arb_fpwrap_double_expm1(&res, x, flags)); | |
176 | CHECK_CDOUBLE(arb_fpwrap_cdouble_expm1(&cres, cx, flags)); | |
177 | ||
178 | CHECK_DOUBLE(arb_fpwrap_double_log(&res, x, flags)); | |
179 | CHECK_CDOUBLE(arb_fpwrap_cdouble_log(&cres, cx, flags)); | |
180 | ||
181 | CHECK_DOUBLE(arb_fpwrap_double_log1p(&res, x, flags)); | |
182 | CHECK_CDOUBLE(arb_fpwrap_cdouble_log1p(&cres, cx, flags)); | |
183 | ||
184 | CHECK_DOUBLE(arb_fpwrap_double_sqrt(&res, x, flags)); | |
185 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sqrt(&cres, cx, flags)); | |
186 | ||
187 | CHECK_DOUBLE(arb_fpwrap_double_rsqrt(&res, x, flags)); | |
188 | CHECK_CDOUBLE(arb_fpwrap_cdouble_rsqrt(&cres, cx, flags)); | |
189 | ||
190 | CHECK_DOUBLE(arb_fpwrap_double_cbrt(&res, x, flags)); | |
191 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cbrt(&cres, cx, flags)); | |
192 | ||
193 | CHECK_DOUBLE(arb_fpwrap_double_sin(&res, x, flags)); | |
194 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sin(&cres, cx, flags)); | |
195 | ||
196 | CHECK_DOUBLE(arb_fpwrap_double_cos(&res, x, flags)); | |
197 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cos(&cres, cx, flags)); | |
198 | ||
199 | CHECK_DOUBLE(arb_fpwrap_double_tan(&res, x, flags)); | |
200 | CHECK_CDOUBLE(arb_fpwrap_cdouble_tan(&cres, cx, flags)); | |
201 | ||
202 | CHECK_DOUBLE(arb_fpwrap_double_cot(&res, x, flags)); | |
203 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cot(&cres, cx, flags)); | |
204 | ||
205 | CHECK_DOUBLE(arb_fpwrap_double_sec(&res, x, flags)); | |
206 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sec(&cres, cx, flags)); | |
207 | ||
208 | CHECK_DOUBLE(arb_fpwrap_double_csc(&res, x, flags)); | |
209 | CHECK_CDOUBLE(arb_fpwrap_cdouble_csc(&cres, cx, flags)); | |
210 | ||
211 | CHECK_DOUBLE(arb_fpwrap_double_sinc(&res, x, flags)); | |
212 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sinc(&cres, cx, flags)); | |
213 | ||
214 | CHECK_DOUBLE(arb_fpwrap_double_sin_pi(&res, x, flags)); | |
215 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sin_pi(&cres, cx, flags)); | |
216 | ||
217 | CHECK_DOUBLE(arb_fpwrap_double_cos_pi(&res, x, flags)); | |
218 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cos_pi(&cres, cx, flags)); | |
219 | ||
220 | CHECK_DOUBLE(arb_fpwrap_double_tan_pi(&res, x, flags)); | |
221 | CHECK_CDOUBLE(arb_fpwrap_cdouble_tan_pi(&cres, cx, flags)); | |
222 | ||
223 | CHECK_DOUBLE(arb_fpwrap_double_cot_pi(&res, x, flags)); | |
224 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cot_pi(&cres, cx, flags)); | |
225 | ||
226 | CHECK_DOUBLE(arb_fpwrap_double_sinc_pi(&res, x, flags)); | |
227 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sinc_pi(&cres, cx, flags)); | |
228 | ||
229 | CHECK_DOUBLE(arb_fpwrap_double_asin(&res, x, flags)); | |
230 | CHECK_CDOUBLE(arb_fpwrap_cdouble_asin(&cres, cx, flags)); | |
231 | ||
232 | CHECK_DOUBLE(arb_fpwrap_double_acos(&res, x, flags)); | |
233 | CHECK_CDOUBLE(arb_fpwrap_cdouble_acos(&cres, cx, flags)); | |
234 | ||
235 | CHECK_DOUBLE(arb_fpwrap_double_atan(&res, x, flags)); | |
236 | CHECK_CDOUBLE(arb_fpwrap_cdouble_atan(&cres, cx, flags)); | |
237 | ||
238 | CHECK_DOUBLE(arb_fpwrap_double_atan2(&res, x, y, flags)); | |
239 | ||
240 | CHECK_DOUBLE(arb_fpwrap_double_asinh(&res, x, flags)); | |
241 | CHECK_CDOUBLE(arb_fpwrap_cdouble_asinh(&cres, cx, flags)); | |
242 | ||
243 | CHECK_DOUBLE(arb_fpwrap_double_acosh(&res, 1.0 + x, flags)); | |
244 | CHECK_CDOUBLE(arb_fpwrap_cdouble_acosh(&cres, cx, flags)); | |
245 | ||
246 | CHECK_DOUBLE(arb_fpwrap_double_atanh(&res, x, flags)); | |
247 | CHECK_CDOUBLE(arb_fpwrap_cdouble_atanh(&cres, cx, flags)); | |
248 | ||
249 | CHECK_DOUBLE(arb_fpwrap_double_lambertw(&res, x, 0, flags)); | |
250 | CHECK_CDOUBLE(arb_fpwrap_cdouble_lambertw(&cres, cx, 0, flags)); | |
251 | ||
252 | CHECK_DOUBLE(arb_fpwrap_double_lambertw(&res, -0.2, -1, flags)); | |
253 | CHECK_CDOUBLE(arb_fpwrap_cdouble_lambertw(&cres, cx, -1, flags)); | |
254 | ||
255 | CHECK_DOUBLE(arb_fpwrap_double_rising(&res, x, y, flags)); | |
256 | CHECK_CDOUBLE(arb_fpwrap_cdouble_rising(&cres, cx, cy, flags)); | |
257 | ||
258 | CHECK_DOUBLE(arb_fpwrap_double_gamma(&res, x, flags)); | |
259 | CHECK_CDOUBLE(arb_fpwrap_cdouble_gamma(&cres, cx, flags)); | |
260 | ||
261 | CHECK_DOUBLE(arb_fpwrap_double_rgamma(&res, x, flags)); | |
262 | CHECK_CDOUBLE(arb_fpwrap_cdouble_rgamma(&cres, cx, flags)); | |
263 | ||
264 | CHECK_DOUBLE(arb_fpwrap_double_lgamma(&res, x, flags)); | |
265 | CHECK_CDOUBLE(arb_fpwrap_cdouble_lgamma(&cres, cx, flags)); | |
266 | ||
267 | CHECK_DOUBLE(arb_fpwrap_double_digamma(&res, x, flags)); | |
268 | CHECK_CDOUBLE(arb_fpwrap_cdouble_digamma(&cres, cx, flags)); | |
269 | ||
270 | CHECK_DOUBLE(arb_fpwrap_double_zeta(&res, x, flags)); | |
271 | CHECK_CDOUBLE(arb_fpwrap_cdouble_zeta(&cres, cx, flags)); | |
272 | ||
273 | CHECK_DOUBLE(arb_fpwrap_double_hurwitz_zeta(&res, x, z, flags)); | |
274 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hurwitz_zeta(&cres, cx, cz, flags)); | |
275 | ||
276 | CHECK_DOUBLE(arb_fpwrap_double_barnes_g(&res, x, flags)); | |
277 | CHECK_CDOUBLE(arb_fpwrap_cdouble_barnes_g(&cres, cx, flags)); | |
278 | ||
279 | CHECK_DOUBLE(arb_fpwrap_double_log_barnes_g(&res, x, flags)); | |
280 | CHECK_CDOUBLE(arb_fpwrap_cdouble_log_barnes_g(&cres, cx, flags)); | |
281 | ||
282 | CHECK_DOUBLE(arb_fpwrap_double_polygamma(&res, x, z, flags)); | |
283 | CHECK_CDOUBLE(arb_fpwrap_cdouble_polygamma(&cres, cx, cz, flags)); | |
284 | ||
285 | CHECK_DOUBLE(arb_fpwrap_double_polylog(&res, x, z, flags)); | |
286 | CHECK_CDOUBLE(arb_fpwrap_cdouble_polylog(&cres, cx, cz, flags)); | |
287 | ||
288 | CHECK_CDOUBLE(arb_fpwrap_cdouble_dirichlet_eta(&cres, cz, flags)); | |
289 | CHECK_CDOUBLE(arb_fpwrap_cdouble_riemann_xi(&cres, cz, flags)); | |
290 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hardy_theta(&cres, cz, flags)); | |
291 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hardy_z(&cres, cz, flags)); | |
292 | CHECK_CDOUBLE(arb_fpwrap_cdouble_zeta_zero(&cres, 2, flags)); | |
293 | ||
294 | CHECK_DOUBLE(arb_fpwrap_double_erf(&res, x, flags)); | |
295 | CHECK_CDOUBLE(arb_fpwrap_cdouble_erf(&cres, cx, flags)); | |
296 | ||
297 | CHECK_DOUBLE(arb_fpwrap_double_erfc(&res, x, flags)); | |
298 | CHECK_CDOUBLE(arb_fpwrap_cdouble_erfc(&cres, cx, flags)); | |
299 | ||
300 | CHECK_DOUBLE(arb_fpwrap_double_erfi(&res, x, flags)); | |
301 | CHECK_CDOUBLE(arb_fpwrap_cdouble_erfi(&cres, cx, flags)); | |
302 | ||
303 | CHECK_DOUBLE(arb_fpwrap_double_fresnel_s(&res, x, 0, flags)); | |
304 | CHECK_CDOUBLE(arb_fpwrap_cdouble_fresnel_s(&cres, cx, 0, flags)); | |
305 | ||
306 | CHECK_DOUBLE(arb_fpwrap_double_fresnel_c(&res, x, 0, flags)); | |
307 | CHECK_CDOUBLE(arb_fpwrap_cdouble_fresnel_c(&cres, cx, 0, flags)); | |
308 | ||
309 | CHECK_DOUBLE(arb_fpwrap_double_gamma_upper(&res, x, z, 0, flags)); | |
310 | CHECK_CDOUBLE(arb_fpwrap_cdouble_gamma_upper(&cres, cx, cz, 0, flags)); | |
311 | ||
312 | CHECK_DOUBLE(arb_fpwrap_double_gamma_lower(&res, x, z, 0, flags)); | |
313 | CHECK_CDOUBLE(arb_fpwrap_cdouble_gamma_lower(&cres, cx, cz, 0, flags)); | |
314 | ||
315 | CHECK_DOUBLE(arb_fpwrap_double_beta_lower(&res, x, y, z, 0, flags)); | |
316 | CHECK_CDOUBLE(arb_fpwrap_cdouble_beta_lower(&cres, cx, cy, cz, 0, flags)); | |
317 | ||
318 | CHECK_DOUBLE(arb_fpwrap_double_exp_integral_e(&res, x, z, flags)); | |
319 | CHECK_CDOUBLE(arb_fpwrap_cdouble_exp_integral_e(&cres, cx, cz, flags)); | |
320 | ||
321 | CHECK_DOUBLE(arb_fpwrap_double_exp_integral_ei(&res, x, flags)); | |
322 | CHECK_CDOUBLE(arb_fpwrap_cdouble_exp_integral_ei(&cres, cx, flags)); | |
323 | ||
324 | CHECK_DOUBLE(arb_fpwrap_double_sin_integral(&res, x, flags)); | |
325 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sin_integral(&cres, cx, flags)); | |
326 | ||
327 | CHECK_DOUBLE(arb_fpwrap_double_cos_integral(&res, x, flags)); | |
328 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cos_integral(&cres, cx, flags)); | |
329 | ||
330 | CHECK_DOUBLE(arb_fpwrap_double_sinh_integral(&res, x, flags)); | |
331 | CHECK_CDOUBLE(arb_fpwrap_cdouble_sinh_integral(&cres, cx, flags)); | |
332 | ||
333 | CHECK_DOUBLE(arb_fpwrap_double_cosh_integral(&res, x, flags)); | |
334 | CHECK_CDOUBLE(arb_fpwrap_cdouble_cosh_integral(&cres, cx, flags)); | |
335 | ||
336 | CHECK_DOUBLE(arb_fpwrap_double_log_integral(&res, x, 0, flags)); | |
337 | CHECK_CDOUBLE(arb_fpwrap_cdouble_log_integral(&cres, cx, 0, flags)); | |
338 | ||
339 | CHECK_DOUBLE(arb_fpwrap_double_bessel_j(&res, y, x, flags)); | |
340 | CHECK_CDOUBLE(arb_fpwrap_cdouble_bessel_j(&cres, cy, cx, flags)); | |
341 | ||
342 | CHECK_DOUBLE(arb_fpwrap_double_bessel_y(&res, y, x, flags)); | |
343 | CHECK_CDOUBLE(arb_fpwrap_cdouble_bessel_y(&cres, cy, cx, flags)); | |
344 | ||
345 | CHECK_DOUBLE(arb_fpwrap_double_bessel_i(&res, y, x, flags)); | |
346 | CHECK_CDOUBLE(arb_fpwrap_cdouble_bessel_i(&cres, cy, cx, flags)); | |
347 | ||
348 | CHECK_DOUBLE(arb_fpwrap_double_bessel_k(&res, y, x, flags)); | |
349 | CHECK_CDOUBLE(arb_fpwrap_cdouble_bessel_k(&cres, cy, cx, flags)); | |
350 | ||
351 | CHECK_DOUBLE(arb_fpwrap_double_bessel_k_scaled(&res, y, x, flags)); | |
352 | CHECK_CDOUBLE(arb_fpwrap_cdouble_bessel_k_scaled(&cres, cy, cx, flags)); | |
353 | ||
354 | CHECK_DOUBLE(arb_fpwrap_double_airy_ai(&res, x, flags)); | |
355 | CHECK_CDOUBLE(arb_fpwrap_cdouble_airy_ai(&cres, cx, flags)); | |
356 | ||
357 | CHECK_DOUBLE(arb_fpwrap_double_airy_ai_prime(&res, x, flags)); | |
358 | CHECK_CDOUBLE(arb_fpwrap_cdouble_airy_ai_prime(&cres, cx, flags)); | |
359 | ||
360 | CHECK_DOUBLE(arb_fpwrap_double_airy_bi(&res, x, flags)); | |
361 | CHECK_CDOUBLE(arb_fpwrap_cdouble_airy_bi(&cres, cx, flags)); | |
362 | ||
363 | CHECK_DOUBLE(arb_fpwrap_double_airy_bi_prime(&res, x, flags)); | |
364 | CHECK_CDOUBLE(arb_fpwrap_cdouble_airy_bi_prime(&cres, cx, flags)); | |
365 | ||
366 | CHECK_DOUBLE(arb_fpwrap_double_airy_ai_zero(&res, 1, flags)); | |
367 | CHECK_DOUBLE(arb_fpwrap_double_airy_ai_prime_zero(&res, 1, flags)); | |
368 | CHECK_DOUBLE(arb_fpwrap_double_airy_bi_zero(&res, 1, flags)); | |
369 | CHECK_DOUBLE(arb_fpwrap_double_airy_bi_prime_zero(&res, 1, flags)); | |
370 | ||
371 | CHECK_DOUBLE(arb_fpwrap_double_coulomb_f(&res, y, z, x, flags)); | |
372 | CHECK_CDOUBLE(arb_fpwrap_cdouble_coulomb_f(&cres, cy, cz, cx, flags)); | |
373 | ||
374 | CHECK_DOUBLE(arb_fpwrap_double_coulomb_g(&res, y, z, x, flags)); | |
375 | CHECK_CDOUBLE(arb_fpwrap_cdouble_coulomb_g(&cres, cy, cz, cx, flags)); | |
376 | ||
377 | CHECK_CDOUBLE(arb_fpwrap_cdouble_coulomb_hpos(&cres, cy, cz, cx, flags)); | |
378 | CHECK_CDOUBLE(arb_fpwrap_cdouble_coulomb_hneg(&cres, cy, cz, cx, flags)); | |
379 | ||
380 | CHECK_DOUBLE(arb_fpwrap_double_chebyshev_t(&res, y, x, flags)); | |
381 | CHECK_CDOUBLE(arb_fpwrap_cdouble_chebyshev_t(&cres, cy, cx, flags)); | |
382 | ||
383 | CHECK_DOUBLE(arb_fpwrap_double_chebyshev_u(&res, y, x, flags)); | |
384 | CHECK_CDOUBLE(arb_fpwrap_cdouble_chebyshev_u(&cres, cy, cx, flags)); | |
385 | ||
386 | CHECK_DOUBLE(arb_fpwrap_double_jacobi_p(&res, y, x, y, x, flags)); | |
387 | CHECK_CDOUBLE(arb_fpwrap_cdouble_jacobi_p(&cres, cy, cx, cy, cx, flags)); | |
388 | ||
389 | CHECK_DOUBLE(arb_fpwrap_double_gegenbauer_c(&res, y, z, x, flags)); | |
390 | CHECK_CDOUBLE(arb_fpwrap_cdouble_gegenbauer_c(&cres, cy, cz, cx, flags)); | |
391 | ||
392 | CHECK_DOUBLE(arb_fpwrap_double_laguerre_l(&res, y, z, x, flags)); | |
393 | CHECK_CDOUBLE(arb_fpwrap_cdouble_laguerre_l(&cres, cy, cz, cx, flags)); | |
394 | ||
395 | CHECK_DOUBLE(arb_fpwrap_double_hermite_h(&res, y, x, flags)); | |
396 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hermite_h(&cres, cy, cx, flags)); | |
397 | ||
398 | CHECK_DOUBLE(arb_fpwrap_double_legendre_p(&res, y, z, x, 0, flags)); | |
399 | CHECK_CDOUBLE(arb_fpwrap_cdouble_legendre_p(&cres, cy, cz, cx, 0, flags)); | |
400 | ||
401 | CHECK_DOUBLE(arb_fpwrap_double_legendre_q(&res, y, z, x, 0, flags)); | |
402 | CHECK_CDOUBLE(arb_fpwrap_cdouble_legendre_q(&cres, cy, cz, cx, 0, flags)); | |
403 | ||
404 | CHECK_DOUBLE(arb_fpwrap_double_legendre_root(&res, &res2, 2, 1, flags)); | |
405 | ||
406 | CHECK_CDOUBLE(arb_fpwrap_cdouble_spherical_y(&cres, 2, 1, cx, cy, flags)); | |
407 | ||
408 | CHECK_DOUBLE(arb_fpwrap_double_hypgeom_0f1(&res, y, x, 0, flags)); | |
409 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hypgeom_0f1(&cres, cy, cx, 0, flags)); | |
410 | ||
411 | CHECK_DOUBLE(arb_fpwrap_double_hypgeom_1f1(&res, x, y, x, 0, flags)); | |
412 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hypgeom_1f1(&cres, cx, cy, cx, 0, flags)); | |
413 | ||
414 | CHECK_DOUBLE(arb_fpwrap_double_hypgeom_u(&res, x, y, x, flags)); | |
415 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hypgeom_u(&cres, cx, cy, cx, flags)); | |
416 | ||
417 | CHECK_DOUBLE(arb_fpwrap_double_hypgeom_2f1(&res, x, y, z, x, 0, flags)); | |
418 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hypgeom_2f1(&cres, cx, cy, cz, cx, 0, flags)); | |
419 | ||
420 | CHECK_DOUBLE(arb_fpwrap_double_hypgeom_pfq(&res, &x, 1, &y, 1, z, 0, flags)); | |
421 | CHECK_CDOUBLE(arb_fpwrap_cdouble_hypgeom_pfq(&cres, &cx, 1, &cy, 1, cz, 0, flags)); | |
422 | ||
423 | CHECK_DOUBLE(arb_fpwrap_double_agm(&res, x, y, flags)); | |
424 | CHECK_CDOUBLE(arb_fpwrap_cdouble_agm(&cres, cx, cy, flags)); | |
425 | ||
426 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_k(&cres, cz, flags)); | |
427 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_e(&cres, cz, flags)); | |
428 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_pi(&cres, cy, cz, flags)); | |
429 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_f(&cres, cx, cz, 0, flags)); | |
430 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_e_inc(&cres, cx, cz, 0, flags)); | |
431 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_pi_inc(&cres, cx, cy, cz, 0, flags)); | |
432 | ||
433 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_rf(&cres, cx, cy, cz, 0, flags)); | |
434 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_rg(&cres, cx, cy, cz, 0, flags)); | |
435 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_rj(&cres, cx, cy, cz, cx, 0, flags)); | |
436 | ||
437 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_p(&cres, cz, ctau, flags)); | |
438 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_p_prime(&cres, cz, ctau, flags)); | |
439 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_inv_p(&cres, cz, ctau, flags)); | |
440 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_zeta(&cres, cz, ctau, flags)); | |
441 | CHECK_CDOUBLE(arb_fpwrap_cdouble_elliptic_sigma(&cres, cz, ctau, flags)); | |
442 | ||
443 | CHECK_CDOUBLE(arb_fpwrap_cdouble_jacobi_theta_1(&cres, cz, ctau, flags)); | |
444 | CHECK_CDOUBLE(arb_fpwrap_cdouble_jacobi_theta_2(&cres, cz, ctau, flags)); | |
445 | CHECK_CDOUBLE(arb_fpwrap_cdouble_jacobi_theta_3(&cres, cz, ctau, flags)); | |
446 | CHECK_CDOUBLE(arb_fpwrap_cdouble_jacobi_theta_4(&cres, cz, ctau, flags)); | |
447 | ||
448 | CHECK_CDOUBLE(arb_fpwrap_cdouble_dedekind_eta(&cres, ctau, flags)); | |
449 | CHECK_CDOUBLE(arb_fpwrap_cdouble_modular_j(&cres, ctau, flags)); | |
450 | CHECK_CDOUBLE(arb_fpwrap_cdouble_modular_lambda(&cres, ctau, flags)); | |
451 | CHECK_CDOUBLE(arb_fpwrap_cdouble_modular_delta(&cres, ctau, flags)); | |
452 | } | |
453 | ||
454 | flint_randclear(state); | |
455 | flint_cleanup(); | |
456 | flint_printf("PASS\n"); | |
457 | return EXIT_SUCCESS; | |
458 | } | |
459 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #ifndef ARB_FPWRAP_H | |
12 | #define ARB_FPWRAP_H | |
13 | ||
14 | #ifdef ARB_FPWRAP_INLINES_C | |
15 | #define ARB_FPWRAP_INLINE | |
16 | #else | |
17 | #define ARB_FPWRAP_INLINE static __inline__ | |
18 | #endif | |
19 | ||
20 | #include "arb.h" | |
21 | #include "acb.h" | |
22 | ||
23 | #ifdef __cplusplus | |
24 | extern "C" { | |
25 | #endif | |
26 | ||
27 | #define FPWRAP_SUCCESS 0 | |
28 | #define FPWRAP_UNABLE 1 | |
29 | ||
30 | #define FPWRAP_ACCURATE_PARTS 1 | |
31 | #define FPWRAP_CORRECT_ROUNDING 2 | |
32 | #define FPWRAP_WORK_LIMIT 65536 | |
33 | ||
34 | typedef struct | |
35 | { | |
36 | double real; | |
37 | double imag; | |
38 | } | |
39 | complex_double; | |
40 | ||
41 | int arb_fpwrap_double_exp(double * res, double x, int flags); | |
42 | int arb_fpwrap_cdouble_exp(complex_double * res, complex_double x, int flags); | |
43 | ||
44 | int arb_fpwrap_double_expm1(double * res, double x, int flags); | |
45 | int arb_fpwrap_cdouble_expm1(complex_double * res, complex_double x, int flags); | |
46 | ||
47 | int arb_fpwrap_double_log(double * res, double x, int flags); | |
48 | int arb_fpwrap_cdouble_log(complex_double * res, complex_double x, int flags); | |
49 | ||
50 | int arb_fpwrap_double_log1p(double * res, double x, int flags); | |
51 | int arb_fpwrap_cdouble_log1p(complex_double * res, complex_double x, int flags); | |
52 | ||
53 | int arb_fpwrap_double_sqrt(double * res, double x, int flags); | |
54 | int arb_fpwrap_cdouble_sqrt(complex_double * res, complex_double x, int flags); | |
55 | ||
56 | int arb_fpwrap_double_rsqrt(double * res, double x, int flags); | |
57 | int arb_fpwrap_cdouble_rsqrt(complex_double * res, complex_double x, int flags); | |
58 | ||
59 | int arb_fpwrap_double_cbrt(double * res, double x, int flags); | |
60 | int arb_fpwrap_cdouble_cbrt(complex_double * res, complex_double x, int flags); | |
61 | ||
62 | int arb_fpwrap_double_sin(double * res, double x, int flags); | |
63 | int arb_fpwrap_cdouble_sin(complex_double * res, complex_double x, int flags); | |
64 | ||
65 | int arb_fpwrap_double_cos(double * res, double x, int flags); | |
66 | int arb_fpwrap_cdouble_cos(complex_double * res, complex_double x, int flags); | |
67 | ||
68 | int arb_fpwrap_double_tan(double * res, double x, int flags); | |
69 | int arb_fpwrap_cdouble_tan(complex_double * res, complex_double x, int flags); | |
70 | ||
71 | int arb_fpwrap_double_cot(double * res, double x, int flags); | |
72 | int arb_fpwrap_cdouble_cot(complex_double * res, complex_double x, int flags); | |
73 | ||
74 | int arb_fpwrap_double_sec(double * res, double x, int flags); | |
75 | int arb_fpwrap_cdouble_sec(complex_double * res, complex_double x, int flags); | |
76 | ||
77 | int arb_fpwrap_double_csc(double * res, double x, int flags); | |
78 | int arb_fpwrap_cdouble_csc(complex_double * res, complex_double x, int flags); | |
79 | ||
80 | int arb_fpwrap_double_sinc(double * res, double x, int flags); | |
81 | int arb_fpwrap_cdouble_sinc(complex_double * res, complex_double x, int flags); | |
82 | ||
83 | int arb_fpwrap_double_sin_pi(double * res, double x, int flags); | |
84 | int arb_fpwrap_cdouble_sin_pi(complex_double * res, complex_double x, int flags); | |
85 | ||
86 | int arb_fpwrap_double_cos_pi(double * res, double x, int flags); | |
87 | int arb_fpwrap_cdouble_cos_pi(complex_double * res, complex_double x, int flags); | |
88 | ||
89 | int arb_fpwrap_double_tan_pi(double * res, double x, int flags); | |
90 | int arb_fpwrap_cdouble_tan_pi(complex_double * res, complex_double x, int flags); | |
91 | ||
92 | int arb_fpwrap_double_cot_pi(double * res, double x, int flags); | |
93 | int arb_fpwrap_cdouble_cot_pi(complex_double * res, complex_double x, int flags); | |
94 | ||
95 | int arb_fpwrap_double_sinc_pi(double * res, double x, int flags); | |
96 | int arb_fpwrap_cdouble_sinc_pi(complex_double * res, complex_double x, int flags); | |
97 | ||
98 | int arb_fpwrap_double_asin(double * res, double x, int flags); | |
99 | int arb_fpwrap_cdouble_asin(complex_double * res, complex_double x, int flags); | |
100 | ||
101 | int arb_fpwrap_double_acos(double * res, double x, int flags); | |
102 | int arb_fpwrap_cdouble_acos(complex_double * res, complex_double x, int flags); | |
103 | ||
104 | int arb_fpwrap_double_atan(double * res, double x, int flags); | |
105 | int arb_fpwrap_cdouble_atan(complex_double * res, complex_double x, int flags); | |
106 | ||
107 | int arb_fpwrap_double_atan2(double * res, double x1, double x2, int flags); | |
108 | ||
109 | int arb_fpwrap_double_asinh(double * res, double x, int flags); | |
110 | int arb_fpwrap_cdouble_asinh(complex_double * res, complex_double x, int flags); | |
111 | ||
112 | int arb_fpwrap_double_acosh(double * res, double x, int flags); | |
113 | int arb_fpwrap_cdouble_acosh(complex_double * res, complex_double x, int flags); | |
114 | ||
115 | int arb_fpwrap_double_atanh(double * res, double x, int flags); | |
116 | int arb_fpwrap_cdouble_atanh(complex_double * res, complex_double x, int flags); | |
117 | ||
118 | int arb_fpwrap_double_lambertw(double * res, double x, slong branch, int flags); | |
119 | int arb_fpwrap_cdouble_lambertw(complex_double * res, complex_double x, slong branch, int flags); | |
120 | ||
121 | int arb_fpwrap_double_rising(double * res, double x, double n, int flags); | |
122 | int arb_fpwrap_cdouble_rising(complex_double * res, complex_double x, complex_double n, int flags); | |
123 | ||
124 | int arb_fpwrap_double_gamma(double * res, double x, int flags); | |
125 | int arb_fpwrap_cdouble_gamma(complex_double * res, complex_double x, int flags); | |
126 | ||
127 | int arb_fpwrap_double_rgamma(double * res, double x, int flags); | |
128 | int arb_fpwrap_cdouble_rgamma(complex_double * res, complex_double x, int flags); | |
129 | ||
130 | int arb_fpwrap_double_lgamma(double * res, double x, int flags); | |
131 | int arb_fpwrap_cdouble_lgamma(complex_double * res, complex_double x, int flags); | |
132 | ||
133 | int arb_fpwrap_double_digamma(double * res, double x, int flags); | |
134 | int arb_fpwrap_cdouble_digamma(complex_double * res, complex_double x, int flags); | |
135 | ||
136 | int arb_fpwrap_double_zeta(double * res, double x, int flags); | |
137 | int arb_fpwrap_cdouble_zeta(complex_double * res, complex_double x, int flags); | |
138 | ||
139 | int arb_fpwrap_double_hurwitz_zeta(double * res, double s, double z, int flags); | |
140 | int arb_fpwrap_cdouble_hurwitz_zeta(complex_double * res, complex_double s, complex_double z, int flags); | |
141 | ||
142 | int arb_fpwrap_double_barnes_g(double * res, double x, int flags); | |
143 | int arb_fpwrap_cdouble_barnes_g(complex_double * res, complex_double x, int flags); | |
144 | ||
145 | int arb_fpwrap_double_log_barnes_g(double * res, double x, int flags); | |
146 | int arb_fpwrap_cdouble_log_barnes_g(complex_double * res, complex_double x, int flags); | |
147 | ||
148 | int arb_fpwrap_double_polygamma(double * res, double s, double z, int flags); | |
149 | int arb_fpwrap_cdouble_polygamma(complex_double * res, complex_double s, complex_double z, int flags); | |
150 | ||
151 | int arb_fpwrap_double_polylog(double * res, double s, double z, int flags); | |
152 | int arb_fpwrap_cdouble_polylog(complex_double * res, complex_double s, complex_double z, int flags); | |
153 | ||
154 | int arb_fpwrap_cdouble_dirichlet_eta(complex_double * res, complex_double s, int flags); | |
155 | int arb_fpwrap_cdouble_riemann_xi(complex_double * res, complex_double s, int flags); | |
156 | int arb_fpwrap_cdouble_hardy_theta(complex_double * res, complex_double z, int flags); | |
157 | int arb_fpwrap_cdouble_hardy_z(complex_double * res, complex_double z, int flags); | |
158 | int arb_fpwrap_cdouble_zeta_zero(complex_double * res, ulong n, int flags); | |
159 | ||
160 | int arb_fpwrap_double_erf(double * res, double x, int flags); | |
161 | int arb_fpwrap_cdouble_erf(complex_double * res, complex_double x, int flags); | |
162 | ||
163 | int arb_fpwrap_double_erfc(double * res, double x, int flags); | |
164 | int arb_fpwrap_cdouble_erfc(complex_double * res, complex_double x, int flags); | |
165 | ||
166 | int arb_fpwrap_double_erfi(double * res, double x, int flags); | |
167 | int arb_fpwrap_cdouble_erfi(complex_double * res, complex_double x, int flags); | |
168 | ||
169 | int arb_fpwrap_double_fresnel_s(double * res, double x, int normalized, int flags); | |
170 | int arb_fpwrap_cdouble_fresnel_s(complex_double * res, complex_double x, int normalized, int flags); | |
171 | ||
172 | int arb_fpwrap_double_fresnel_c(double * res, double x, int normalized, int flags); | |
173 | int arb_fpwrap_cdouble_fresnel_c(complex_double * res, complex_double x, int normalized, int flags); | |
174 | ||
175 | int arb_fpwrap_double_gamma_upper(double * res, double s, double z, int regularized, int flags); | |
176 | int arb_fpwrap_cdouble_gamma_upper(complex_double * res, complex_double s, complex_double z, int regularized, int flags); | |
177 | ||
178 | int arb_fpwrap_double_gamma_lower(double * res, double s, double z, int regularized, int flags); | |
179 | int arb_fpwrap_cdouble_gamma_lower(complex_double * res, complex_double s, complex_double z, int regularized, int flags); | |
180 | ||
181 | int arb_fpwrap_double_beta_lower(double * res, double a, double b, double z, int regularized, int flags); | |
182 | int arb_fpwrap_cdouble_beta_lower(complex_double * res, complex_double a, complex_double b, complex_double z, int regularized, int flags); | |
183 | ||
184 | int arb_fpwrap_double_exp_integral_e(double * res, double s, double z, int flags); | |
185 | int arb_fpwrap_cdouble_exp_integral_e(complex_double * res, complex_double s, complex_double z, int flags); | |
186 | ||
187 | int arb_fpwrap_double_exp_integral_ei(double * res, double x, int flags); | |
188 | int arb_fpwrap_cdouble_exp_integral_ei(complex_double * res, complex_double x, int flags); | |
189 | ||
190 | int arb_fpwrap_double_sin_integral(double * res, double x, int flags); | |
191 | int arb_fpwrap_cdouble_sin_integral(complex_double * res, complex_double x, int flags); | |
192 | ||
193 | int arb_fpwrap_double_cos_integral(double * res, double x, int flags); | |
194 | int arb_fpwrap_cdouble_cos_integral(complex_double * res, complex_double x, int flags); | |
195 | ||
196 | int arb_fpwrap_double_sinh_integral(double * res, double x, int flags); | |
197 | int arb_fpwrap_cdouble_sinh_integral(complex_double * res, complex_double x, int flags); | |
198 | ||
199 | int arb_fpwrap_double_cosh_integral(double * res, double x, int flags); | |
200 | int arb_fpwrap_cdouble_cosh_integral(complex_double * res, complex_double x, int flags); | |
201 | ||
202 | int arb_fpwrap_double_log_integral(double * res, double x, int offset, int flags); | |
203 | int arb_fpwrap_cdouble_log_integral(complex_double * res, complex_double x, int offset, int flags); | |
204 | ||
205 | int arb_fpwrap_double_bessel_j(double * res, double nu, double x, int flags); | |
206 | int arb_fpwrap_cdouble_bessel_j(complex_double * res, complex_double nu, complex_double x, int flags); | |
207 | ||
208 | int arb_fpwrap_double_bessel_y(double * res, double nu, double x, int flags); | |
209 | int arb_fpwrap_cdouble_bessel_y(complex_double * res, complex_double nu, complex_double x, int flags); | |
210 | ||
211 | int arb_fpwrap_double_bessel_i(double * res, double nu, double x, int flags); | |
212 | int arb_fpwrap_cdouble_bessel_i(complex_double * res, complex_double nu, complex_double x, int flags); | |
213 | ||
214 | int arb_fpwrap_double_bessel_k(double * res, double nu, double x, int flags); | |
215 | int arb_fpwrap_cdouble_bessel_k(complex_double * res, complex_double nu, complex_double x, int flags); | |
216 | ||
217 | int arb_fpwrap_double_bessel_k_scaled(double * res, double nu, double x, int flags); | |
218 | int arb_fpwrap_cdouble_bessel_k_scaled(complex_double * res, complex_double nu, complex_double x, int flags); | |
219 | ||
220 | int arb_fpwrap_double_airy_ai(double * res, double x, int flags); | |
221 | int arb_fpwrap_cdouble_airy_ai(complex_double * res, complex_double x, int flags); | |
222 | ||
223 | int arb_fpwrap_double_airy_ai_prime(double * res, double x, int flags); | |
224 | int arb_fpwrap_cdouble_airy_ai_prime(complex_double * res, complex_double x, int flags); | |
225 | ||
226 | int arb_fpwrap_double_airy_bi(double * res, double x, int flags); | |
227 | int arb_fpwrap_cdouble_airy_bi(complex_double * res, complex_double x, int flags); | |
228 | ||
229 | int arb_fpwrap_double_airy_bi_prime(double * res, double x, int flags); | |
230 | int arb_fpwrap_cdouble_airy_bi_prime(complex_double * res, complex_double x, int flags); | |
231 | ||
232 | int arb_fpwrap_double_airy_ai_zero(double * res, ulong n, int flags); | |
233 | int arb_fpwrap_double_airy_ai_prime_zero(double * res, ulong n, int flags); | |
234 | int arb_fpwrap_double_airy_bi_zero(double * res, ulong n, int flags); | |
235 | int arb_fpwrap_double_airy_bi_prime_zero(double * res, ulong n, int flags); | |
236 | ||
237 | int arb_fpwrap_double_coulomb_f(double * res, double l, double eta, double x, int flags); | |
238 | int arb_fpwrap_cdouble_coulomb_f(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags); | |
239 | ||
240 | int arb_fpwrap_double_coulomb_g(double * res, double l, double eta, double x, int flags); | |
241 | int arb_fpwrap_cdouble_coulomb_g(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags); | |
242 | ||
243 | int arb_fpwrap_cdouble_coulomb_hpos(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags); | |
244 | int arb_fpwrap_cdouble_coulomb_hneg(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags); | |
245 | ||
246 | int arb_fpwrap_double_chebyshev_t(double * res, double n, double x, int flags); | |
247 | int arb_fpwrap_cdouble_chebyshev_t(complex_double * res, complex_double n, complex_double x, int flags); | |
248 | ||
249 | int arb_fpwrap_double_chebyshev_u(double * res, double n, double x, int flags); | |
250 | int arb_fpwrap_cdouble_chebyshev_u(complex_double * res, complex_double n, complex_double x, int flags); | |
251 | ||
252 | int arb_fpwrap_double_jacobi_p(double * res, double n, double a, double b, double x, int flags); | |
253 | int arb_fpwrap_cdouble_jacobi_p(complex_double * res, complex_double n, complex_double a, complex_double b, complex_double x, int flags); | |
254 | ||
255 | int arb_fpwrap_double_gegenbauer_c(double * res, double n, double m, double x, int flags); | |
256 | int arb_fpwrap_cdouble_gegenbauer_c(complex_double * res, complex_double n, complex_double m, complex_double x, int flags); | |
257 | ||
258 | int arb_fpwrap_double_laguerre_l(double * res, double n, double m, double x, int flags); | |
259 | int arb_fpwrap_cdouble_laguerre_l(complex_double * res, complex_double n, complex_double m, complex_double x, int flags); | |
260 | ||
261 | int arb_fpwrap_double_hermite_h(double * res, double n, double x, int flags); | |
262 | int arb_fpwrap_cdouble_hermite_h(complex_double * res, complex_double n, complex_double x, int flags); | |
263 | ||
264 | int arb_fpwrap_double_legendre_p(double * res, double n, double m, double x, int type, int flags); | |
265 | int arb_fpwrap_cdouble_legendre_p(complex_double * res, complex_double n, complex_double m, complex_double x, int type, int flags); | |
266 | ||
267 | int arb_fpwrap_double_legendre_q(double * res, double n, double m, double x, int type, int flags); | |
268 | int arb_fpwrap_cdouble_legendre_q(complex_double * res, complex_double n, complex_double m, complex_double x, int type, int flags); | |
269 | ||
270 | int arb_fpwrap_double_legendre_root(double * res1, double * res2, ulong n, ulong k, int flags); | |
271 | ||
272 | int arb_fpwrap_cdouble_spherical_y(complex_double * res, slong n, slong m, complex_double x1, complex_double x2, int flags); | |
273 | ||
274 | int arb_fpwrap_double_hypgeom_0f1(double * res, double a, double x, int regularized, int flags); | |
275 | int arb_fpwrap_cdouble_hypgeom_0f1(complex_double * res, complex_double a, complex_double x, int regularized, int flags); | |
276 | ||
277 | int arb_fpwrap_double_hypgeom_1f1(double * res, double a, double b, double x, int regularized, int flags); | |
278 | int arb_fpwrap_cdouble_hypgeom_1f1(complex_double * res, complex_double a, complex_double b, complex_double x, int regularized, int flags); | |
279 | ||
280 | int arb_fpwrap_double_hypgeom_u(double * res, double a, double b, double x, int flags); | |
281 | int arb_fpwrap_cdouble_hypgeom_u(complex_double * res, complex_double a, complex_double b, complex_double x, int flags); | |
282 | ||
283 | int arb_fpwrap_double_hypgeom_2f1(double * res, double a, double b, double c, double x, int regularized, int flags); | |
284 | int arb_fpwrap_cdouble_hypgeom_2f1(complex_double * res, complex_double a, complex_double b, complex_double c, complex_double x, int regularized, int flags); | |
285 | ||
286 | int arb_fpwrap_double_hypgeom_pfq(double * res, const double * a, slong p, const double * b, slong q, double z, int regularized, int flags); | |
287 | int arb_fpwrap_cdouble_hypgeom_pfq(complex_double * res, const complex_double * a, slong p, const complex_double * b, slong q, complex_double z, int regularized, int flags); | |
288 | ||
289 | ||
290 | int arb_fpwrap_double_agm(double * res, double x, double y, int flags); | |
291 | int arb_fpwrap_cdouble_agm(complex_double * res, complex_double x, complex_double y, int flags); | |
292 | ||
293 | int arb_fpwrap_cdouble_elliptic_k(complex_double * res, complex_double m, int flags); | |
294 | int arb_fpwrap_cdouble_elliptic_e(complex_double * res, complex_double m, int flags); | |
295 | int arb_fpwrap_cdouble_elliptic_pi(complex_double * res, complex_double n, complex_double m, int flags); | |
296 | int arb_fpwrap_cdouble_elliptic_f(complex_double * res, complex_double phi, complex_double m, int pi, int flags); | |
297 | int arb_fpwrap_cdouble_elliptic_e_inc(complex_double * res, complex_double phi, complex_double m, int pi, int flags); | |
298 | int arb_fpwrap_cdouble_elliptic_pi_inc(complex_double * res, complex_double n, complex_double phi, complex_double m, int pi, int flags); | |
299 | ||
300 | int arb_fpwrap_cdouble_elliptic_rf(complex_double * res, complex_double x, complex_double y, complex_double z, int option, int flags); | |
301 | int arb_fpwrap_cdouble_elliptic_rg(complex_double * res, complex_double x, complex_double y, complex_double z, int option, int flags); | |
302 | int arb_fpwrap_cdouble_elliptic_rj(complex_double * res, complex_double x, complex_double y, complex_double z, complex_double w, int option, int flags); | |
303 | ||
304 | int arb_fpwrap_cdouble_elliptic_p(complex_double * res, complex_double z, complex_double tau, int flags); | |
305 | int arb_fpwrap_cdouble_elliptic_p_prime(complex_double * res, complex_double z, complex_double tau, int flags); | |
306 | int arb_fpwrap_cdouble_elliptic_inv_p(complex_double * res, complex_double z, complex_double tau, int flags); | |
307 | int arb_fpwrap_cdouble_elliptic_zeta(complex_double * res, complex_double z, complex_double tau, int flags); | |
308 | int arb_fpwrap_cdouble_elliptic_sigma(complex_double * res, complex_double z, complex_double tau, int flags); | |
309 | ||
310 | int arb_fpwrap_cdouble_jacobi_theta_1(complex_double * res, complex_double z, complex_double tau, int flags); | |
311 | int arb_fpwrap_cdouble_jacobi_theta_2(complex_double * res, complex_double z, complex_double tau, int flags); | |
312 | int arb_fpwrap_cdouble_jacobi_theta_3(complex_double * res, complex_double z, complex_double tau, int flags); | |
313 | int arb_fpwrap_cdouble_jacobi_theta_4(complex_double * res, complex_double z, complex_double tau, int flags); | |
314 | ||
315 | int arb_fpwrap_cdouble_dedekind_eta(complex_double * res, complex_double tau, int flags); | |
316 | int arb_fpwrap_cdouble_modular_j(complex_double * res, complex_double tau, int flags); | |
317 | int arb_fpwrap_cdouble_modular_lambda(complex_double * res, complex_double tau, int flags); | |
318 | int arb_fpwrap_cdouble_modular_delta(complex_double * res, complex_double tau, int flags); | |
319 | ||
320 | #ifdef __cplusplus | |
321 | } | |
322 | #endif | |
323 | ||
324 | #endif | |
325 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "bernoulli.h" | |
13 | ||
14 | /* tuning factor */ | |
15 | double GAMMA_STIRLING_BETA = 0.0; | |
16 | ||
17 | #define PI 3.1415926535897932385 | |
18 | ||
19 | static slong | |
20 | choose_n(double log2z, double argz, int digamma, slong prec) | |
21 | { | |
22 | double argf, boundn, boundn_best; | |
23 | slong n, nbest; | |
24 | ||
25 | argf = 1.0 / cos(0.5 * argz); | |
26 | argf = log(argf) * (1. / log(2)); | |
27 | ||
28 | boundn_best = 1e300; | |
29 | nbest = 1; | |
30 | ||
31 | for (n = 1; ; n++) | |
32 | { | |
33 | if (digamma) | |
34 | boundn = bernoulli_bound_2exp_si(2*n) - (2*n)*log2z + (2*n+1)*argf; | |
35 | else | |
36 | boundn = bernoulli_bound_2exp_si(2*n) - (2*n-1)*log2z + (2*n)*argf; | |
37 | ||
38 | /* success */ | |
39 | if (boundn <= -prec) | |
40 | return n; | |
41 | ||
42 | if (boundn < boundn_best) | |
43 | { | |
44 | nbest = n; | |
45 | boundn_best = boundn; | |
46 | } | |
47 | ||
48 | /* if the term magnitude does not decrease, r is too small */ | |
49 | if (boundn > 1) | |
50 | { | |
51 | /* printf("failure: prec = %ld, nbound_best = %f [%ld, %ld]\n", prec, boundn_best, n, nbest); */ | |
52 | return nbest; | |
53 | } | |
54 | } | |
55 | } | |
56 | ||
57 | static void | |
58 | choose_small(int * reflect, slong * r, slong * n, | |
59 | double x, double y, int use_reflect, int digamma, slong prec) | |
60 | { | |
61 | double w, argz, log2z, BETA; | |
62 | slong rr; | |
63 | ||
64 | /* use reflection formula if very negative */ | |
65 | if (x < -5.0 && use_reflect) | |
66 | { | |
67 | *reflect = 1; | |
68 | x = 1.0 - x; | |
69 | } | |
70 | else | |
71 | { | |
72 | *reflect = 0; | |
73 | } | |
74 | ||
75 | BETA = GAMMA_STIRLING_BETA; | |
76 | ||
77 | if (BETA < 0.12) | |
78 | { | |
79 | if (prec <= 32768) | |
80 | BETA = 0.17; | |
81 | else if (prec <= 131072) | |
82 | BETA = 0.20; | |
83 | else | |
84 | BETA = 0.24; | |
85 | } | |
86 | ||
87 | /* argument reduction until |z| >= w */ | |
88 | w = FLINT_MAX(1.0, BETA * prec); | |
89 | ||
90 | rr = 0; | |
91 | while (x < 1.0 || x*x + y*y < w*w) | |
92 | { | |
93 | x++; | |
94 | rr++; | |
95 | } | |
96 | ||
97 | log2z = 0.5 * log(x*x + y*y) * 1.44269504088896341; | |
98 | argz = atan2(y, x); | |
99 | ||
100 | *r = rr; | |
101 | *n = choose_n(log2z, argz, digamma, prec); | |
102 | } | |
103 | ||
104 | static void | |
105 | choose_large(int * reflect, slong * r, slong * n, | |
106 | const arf_t a, const arf_t b, int use_reflect, int digamma, slong prec) | |
107 | { | |
108 | if (use_reflect && arf_sgn(a) < 0) | |
109 | *reflect = 1; | |
110 | else | |
111 | *reflect = 0; | |
112 | ||
113 | *r = 0; | |
114 | ||
115 | /* so big that we will certainly have n = 0 */ | |
116 | if (arf_cmpabs_2exp_si(a, WORD_MAX / 8) >= 0 || | |
117 | arf_cmpabs_2exp_si(b, WORD_MAX / 8) >= 0) | |
118 | { | |
119 | *n = 0; | |
120 | } | |
121 | else | |
122 | { | |
123 | slong ab, bb; | |
124 | double log2z, argz; | |
125 | ||
126 | ab = arf_abs_bound_lt_2exp_si(a); | |
127 | bb = arf_abs_bound_lt_2exp_si(b); | |
128 | ||
129 | log2z = FLINT_MAX(ab, bb); | |
130 | ||
131 | /* piecewise approximation of the argument */ | |
132 | if (arf_is_zero(b)) | |
133 | { | |
134 | if ((arf_sgn(a) < 0) && !(*reflect)) | |
135 | argz = PI; | |
136 | else | |
137 | argz = 0.0; | |
138 | } | |
139 | else | |
140 | { | |
141 | if ((arf_sgn(a) < 0) && !(*reflect)) | |
142 | if (arf_cmpabs(a, b) <= 0) | |
143 | argz = PI * 0.75; | |
144 | else | |
145 | argz = PI; | |
146 | else | |
147 | if (arf_cmpabs(a, b) <= 0) | |
148 | argz = PI * 0.25; | |
149 | else | |
150 | argz = PI * 0.5; | |
151 | } | |
152 | ||
153 | if (argz == PI) | |
154 | *n = 0; | |
155 | else | |
156 | *n = choose_n(log2z, argz, digamma, prec); | |
157 | } | |
158 | } | |
159 | ||
160 | ||
161 | void | |
162 | acb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
163 | const acb_t z, int use_reflect, int digamma, slong prec) | |
164 | { | |
165 | const arf_struct * a = arb_midref(acb_realref(z)); | |
166 | const arf_struct * b = arb_midref(acb_imagref(z)); | |
167 | ||
168 | if (!arf_is_finite(a) || !arf_is_finite(b)) | |
169 | { | |
170 | *reflect = *r = *n = 0; | |
171 | } | |
172 | else if (arf_cmpabs_2exp_si(a, 40) > 0 || arf_cmpabs_2exp_si(b, 40) > 0) | |
173 | { | |
174 | choose_large(reflect, r, n, a, b, use_reflect, digamma, prec); | |
175 | } | |
176 | else | |
177 | { | |
178 | choose_small(reflect, r, n, | |
179 | arf_get_d(a, ARF_RND_UP), | |
180 | arf_get_d(b, ARF_RND_UP), use_reflect, digamma, prec); | |
181 | } | |
182 | } | |
183 | ||
184 | void | |
185 | arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
186 | const arb_t x, int use_reflect, int digamma, slong prec) | |
187 | { | |
188 | const arf_struct * a = arb_midref(x); | |
189 | ||
190 | if (arf_is_inf(a) || arf_is_nan(a)) | |
191 | { | |
192 | *reflect = *r = *n = 0; | |
193 | } | |
194 | else if (arf_cmpabs_2exp_si(a, 40) > 0) | |
195 | { | |
196 | arf_t b; | |
197 | arf_init(b); | |
198 | choose_large(reflect, r, n, a, b, use_reflect, digamma, prec); | |
199 | arf_clear(b); | |
200 | } | |
201 | else | |
202 | { | |
203 | choose_small(reflect, r, n, | |
204 | arf_get_d(a, ARF_RND_UP), 0.0, use_reflect, digamma, prec); | |
205 | } | |
206 | } | |
207 | ||
208 | void arb_gamma_stirling_bound(mag_ptr err, const arb_t x, slong k0, slong knum, slong n); | |
209 | ||
210 | void | |
211 | arb_hypgeom_gamma_stirling_inner(arb_t s, const arb_t z, slong N, slong prec) | |
212 | { | |
213 | arb_t logz, t; | |
214 | mag_t err; | |
215 | ||
216 | mag_init(err); | |
217 | arb_init(t); | |
218 | arb_init(logz); | |
219 | ||
220 | arb_gamma_stirling_bound(err, z, 0, 1, N); | |
221 | ||
222 | /* t = (z-0.5)*log(z) - z + log(2*pi)/2 */ | |
223 | arb_log(logz, z, prec); | |
224 | arb_one(t); | |
225 | arb_mul_2exp_si(t, t, -1); | |
226 | arb_sub(t, z, t, prec); | |
227 | arb_mul(t, logz, t, prec); | |
228 | arb_sub(t, t, z, prec); | |
229 | arb_const_log_sqrt2pi(logz, prec); | |
230 | arb_add(t, t, logz, prec); | |
231 | ||
232 | /* sum part */ | |
233 | if (prec <= 128 || (prec <= 768 && N <= 40) || (prec <= 2048 && N <= 16)) | |
234 | arb_hypgeom_gamma_stirling_sum_horner(s, z, N, prec); | |
235 | else | |
236 | arb_hypgeom_gamma_stirling_sum_improved(s, z, N, 0, prec); | |
237 | ||
238 | arb_add(s, s, t, prec); | |
239 | ||
240 | mag_add(arb_radref(s), arb_radref(s), err); | |
241 | ||
242 | arb_clear(t); | |
243 | arb_clear(logz); | |
244 | mag_clear(err); | |
245 | } | |
246 | ||
247 | int | |
248 | arb_hypgeom_gamma_exact(arb_t res, const arb_t x, int reciprocal, slong prec) | |
249 | { | |
250 | if (arb_is_exact(x)) | |
251 | { | |
252 | const arf_struct * mid = arb_midref(x); | |
253 | ||
254 | if (arf_is_special(mid)) | |
255 | { | |
256 | if (!reciprocal && arf_is_pos_inf(mid)) | |
257 | arb_set(res, x); | |
258 | else if (arf_is_nan(mid) || arf_is_neg_inf(mid) || !reciprocal) | |
259 | arb_indeterminate(res); | |
260 | else | |
261 | arb_zero(res); | |
262 | return 1; | |
263 | } | |
264 | else if (reciprocal && arf_is_int(mid) && arf_sgn(mid) < 0) | |
265 | { | |
266 | arb_zero(res); | |
267 | return 1; | |
268 | } | |
269 | else | |
270 | { | |
271 | /* todo: cutoffs for larger denominators */ | |
272 | ||
273 | /* fast gamma(n), gamma(n/2) or gamma(n/4), ... */ | |
274 | if (arf_cmpabs_2exp_si(mid, prec) < 0 && | |
275 | (arf_is_int_2exp_si(mid, -2) || (prec > 1000 && arf_is_int_2exp_si(mid, -prec / 50)))) | |
276 | { | |
277 | fmpq_t a; | |
278 | fmpq_init(a); | |
279 | arf_get_fmpq(a, mid); | |
280 | arb_gamma_fmpq(res, a, prec + 2 * reciprocal); | |
281 | if (reciprocal) | |
282 | arb_inv(res, res, prec); | |
283 | fmpq_clear(a); | |
284 | return 1; | |
285 | } | |
286 | } | |
287 | } | |
288 | ||
289 | return 0; | |
290 | } | |
291 | ||
292 | void | |
293 | arb_hypgeom_gamma_stirling(arb_t y, const arb_t x, int reciprocal, slong prec) | |
294 | { | |
295 | int reflect; | |
296 | slong r, n, wp; | |
297 | arb_t t, u, v; | |
298 | double acc; | |
299 | ||
300 | /* todo: for large x (if exact or accurate enough), increase precision */ | |
301 | acc = arb_rel_accuracy_bits(x); | |
302 | acc = FLINT_MAX(acc, 0); | |
303 | wp = FLINT_MIN(prec, acc + 20); | |
304 | wp = FLINT_MAX(wp, 2); | |
305 | wp = wp + FLINT_BIT_COUNT(wp); | |
306 | ||
307 | if (acc < 3) /* try to avoid divisions blowing up */ | |
308 | { | |
309 | if (arf_cmp_d(arb_midref(x), -0.5) < 0) | |
310 | { | |
311 | reflect = 1; | |
312 | r = 0; | |
313 | } | |
314 | else if (arf_cmp_si(arb_midref(x), 1) < 0) | |
315 | { | |
316 | reflect = 0; | |
317 | r = 1; | |
318 | } | |
319 | else | |
320 | { | |
321 | reflect = 0; | |
322 | r = 0; | |
323 | } | |
324 | ||
325 | n = 1; | |
326 | } | |
327 | else | |
328 | { | |
329 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
330 | } | |
331 | ||
332 | arb_init(t); | |
333 | arb_init(u); | |
334 | arb_init(v); | |
335 | ||
336 | if (reflect) | |
337 | { | |
338 | arb_sub_ui(t, x, 1, wp); | |
339 | arb_neg(t, t); | |
340 | arb_hypgeom_rising_ui_rec(u, t, r, wp); | |
341 | arb_const_pi(v, wp); | |
342 | arb_mul(u, u, v, wp); | |
343 | arb_add_ui(t, t, r, wp); | |
344 | arb_hypgeom_gamma_stirling_inner(v, t, n, wp); | |
345 | ||
346 | if (reciprocal) | |
347 | { | |
348 | /* rgamma(x) = gamma(1-x+r) sin(pi x) / ((rf(1-x, r) * pi) */ | |
349 | arb_exp(v, v, wp); | |
350 | arb_sin_pi(t, x, wp); | |
351 | arb_mul(v, v, t, wp); | |
352 | arb_mul(y, u, v, wp); | |
353 | arb_div(y, v, u, prec); | |
354 | } | |
355 | else | |
356 | { | |
357 | /* gamma(x) = (rf(1-x, r) * pi) rgamma(1-x+r) csc(pi x) */ | |
358 | arb_neg(v, v); | |
359 | arb_exp(v, v, wp); | |
360 | arb_csc_pi(t, x, wp); | |
361 | arb_mul(v, v, t, wp); | |
362 | arb_mul(y, v, u, prec); | |
363 | } | |
364 | } | |
365 | else | |
366 | { | |
367 | arb_add_ui(t, x, r, wp); | |
368 | arb_hypgeom_gamma_stirling_inner(u, t, n, wp); | |
369 | ||
370 | if (reciprocal) | |
371 | { | |
372 | /* rgamma(x) = rf(x,r) rgamma(x+r) */ | |
373 | arb_neg(u, u); | |
374 | arb_exp(u, u, prec); | |
375 | arb_hypgeom_rising_ui_rec(v, x, r, wp); | |
376 | arb_mul(y, v, u, prec); | |
377 | } | |
378 | else | |
379 | { | |
380 | /* gamma(x) = gamma(x+r) / rf(x,r) */ | |
381 | arb_exp(u, u, prec); | |
382 | arb_hypgeom_rising_ui_rec(v, x, r, wp); | |
383 | arb_div(y, u, v, prec); | |
384 | } | |
385 | } | |
386 | ||
387 | arb_clear(t); | |
388 | arb_clear(u); | |
389 | arb_clear(v); | |
390 | } | |
391 | ||
392 | void | |
393 | arb_hypgeom_gamma(arb_t y, const arb_t x, slong prec) | |
394 | { | |
395 | if (arb_hypgeom_gamma_exact(y, x, 0, prec)) | |
396 | return; | |
397 | ||
398 | if (arb_hypgeom_gamma_taylor(y, x, 0, prec)) | |
399 | return; | |
400 | ||
401 | arb_hypgeom_gamma_stirling(y, x, 0, prec); | |
402 | } | |
403 | ||
404 | void | |
405 | arb_hypgeom_rgamma(arb_t y, const arb_t x, slong prec) | |
406 | { | |
407 | if (arb_hypgeom_gamma_exact(y, x, 1, prec)) | |
408 | return; | |
409 | ||
410 | if (arb_hypgeom_gamma_taylor(y, x, 1, prec)) | |
411 | return; | |
412 | ||
413 | arb_hypgeom_gamma_stirling(y, x, 1, prec); | |
414 | } | |
415 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "hypgeom.h" | |
13 | ||
14 | void | |
15 | arb_gamma_const_1_3_eval(arb_t s, slong prec) | |
16 | { | |
17 | hypgeom_t series; | |
18 | arb_t t, u; | |
19 | slong wp = prec + 4 + 2 * FLINT_BIT_COUNT(prec); | |
20 | ||
21 | arb_init(t); | |
22 | arb_init(u); | |
23 | ||
24 | hypgeom_init(series); | |
25 | ||
26 | fmpz_poly_set_str(series->A, "1 1"); | |
27 | fmpz_poly_set_str(series->B, "1 1"); | |
28 | fmpz_poly_set_str(series->P, "4 5 -46 108 -72"); | |
29 | fmpz_poly_set_str(series->Q, "4 0 0 0 512000"); | |
30 | ||
31 | prec += FLINT_CLOG2(prec); | |
32 | ||
33 | arb_hypgeom_infsum(s, t, series, wp, wp); | |
34 | ||
35 | arb_sqrt_ui(u, 10, wp); | |
36 | arb_mul(t, t, u, wp); | |
37 | ||
38 | arb_const_pi(u, wp); | |
39 | arb_pow_ui(u, u, 4, wp); | |
40 | arb_mul_ui(u, u, 12, wp); | |
41 | arb_mul(s, s, u, wp); | |
42 | ||
43 | arb_div(s, s, t, wp); | |
44 | arb_root_ui(s, s, 2, wp); | |
45 | arb_root_ui(s, s, 3, prec); | |
46 | ||
47 | hypgeom_clear(series); | |
48 | arb_clear(t); | |
49 | arb_clear(u); | |
50 | } | |
51 | ||
52 | ARB_DEF_CACHED_CONSTANT(arb_gamma_const_1_3, arb_gamma_const_1_3_eval) | |
53 | ||
54 | void | |
55 | arb_gamma_const_1_4_eval(arb_t x, slong prec) | |
56 | { | |
57 | arb_t t, u; | |
58 | slong wp = prec + 4 + 2 * FLINT_BIT_COUNT(prec); | |
59 | ||
60 | arb_init(t); | |
61 | arb_init(u); | |
62 | ||
63 | arb_one(t); | |
64 | arb_sqrt_ui(u, 2, wp); | |
65 | arb_agm(x, t, u, wp); | |
66 | ||
67 | arb_const_pi(t, wp); | |
68 | arb_mul_2exp_si(t, t, 1); | |
69 | arb_sqrt(u, t, wp); | |
70 | arb_mul(u, u, t, wp); | |
71 | ||
72 | arb_div(x, u, x, wp); | |
73 | arb_sqrt(x, x, wp); | |
74 | ||
75 | arb_clear(t); | |
76 | arb_clear(u); | |
77 | } | |
78 | ||
79 | ARB_DEF_CACHED_CONSTANT(arb_gamma_const_1_4, arb_gamma_const_1_4_eval) | |
80 | ||
81 | ||
82 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, const arb_t x, int use_reflect, int digamma, slong prec); | |
83 | void arb_hypgeom_gamma_stirling_inner(arb_t s, const arb_t z, slong N, slong prec); | |
84 | ||
85 | void | |
86 | arb_hypgeom_gamma_fmpq_stirling(arb_t y, const fmpq_t a, slong prec) | |
87 | { | |
88 | int reflect; | |
89 | slong r, n, wp; | |
90 | arb_t x, t, u, v; | |
91 | ||
92 | wp = prec + FLINT_BIT_COUNT(prec); | |
93 | ||
94 | arb_init(x); | |
95 | arb_init(t); | |
96 | arb_init(u); | |
97 | arb_init(v); | |
98 | ||
99 | arb_set_fmpq(x, a, wp); | |
100 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 1, 0, wp); | |
101 | ||
102 | if (reflect) | |
103 | { | |
104 | /* gamma(x) = (rf(1-x, r) * pi) / (gamma(1-x+r) sin(pi x)) */ | |
105 | fmpq_t b; | |
106 | fmpq_init(b); | |
107 | fmpz_sub(fmpq_numref(b), fmpq_denref(a), fmpq_numref(a)); | |
108 | fmpz_set(fmpq_denref(b), fmpq_denref(a)); | |
109 | arb_rising_fmpq_ui(u, b, r, wp); | |
110 | fmpq_clear(b); | |
111 | arb_const_pi(v, wp); | |
112 | arb_mul(u, u, v, wp); | |
113 | arb_sub_ui(t, x, 1, wp); | |
114 | arb_neg(t, t); | |
115 | arb_add_ui(t, t, r, wp); | |
116 | arb_hypgeom_gamma_stirling_inner(v, t, n, wp); | |
117 | arb_exp(v, v, wp); | |
118 | arb_sin_pi_fmpq(t, a, wp); | |
119 | arb_mul(v, v, t, wp); | |
120 | } | |
121 | else | |
122 | { | |
123 | /* gamma(x) = gamma(x+r) / rf(x,r) */ | |
124 | arb_add_ui(t, x, r, wp); | |
125 | arb_hypgeom_gamma_stirling_inner(u, t, n, wp); | |
126 | arb_exp(u, u, prec); | |
127 | arb_rising_fmpq_ui(v, a, r, wp); | |
128 | } | |
129 | ||
130 | arb_div(y, u, v, prec); | |
131 | ||
132 | arb_clear(t); | |
133 | arb_clear(u); | |
134 | arb_clear(v); | |
135 | arb_clear(x); | |
136 | } | |
137 | ||
138 | void | |
139 | arb_hypgeom_gamma_small_frac(arb_t y, unsigned int p, unsigned int q, slong prec) | |
140 | { | |
141 | slong wp = prec + 4; | |
142 | ||
143 | if (q == 1) | |
144 | { | |
145 | arb_one(y); | |
146 | } | |
147 | else if (q == 2) /* p = 1 */ | |
148 | { | |
149 | arb_const_sqrt_pi(y, prec); | |
150 | } | |
151 | else if (q == 3) | |
152 | { | |
153 | if (p == 1) | |
154 | { | |
155 | arb_gamma_const_1_3(y, prec); | |
156 | } | |
157 | else /* p = 2 */ | |
158 | { | |
159 | arb_t t; | |
160 | arb_init(t); | |
161 | arb_gamma_const_1_3(y, wp); | |
162 | arb_sqrt_ui(t, 3, wp); | |
163 | arb_mul(y, y, t, wp); | |
164 | arb_const_pi(t, wp); | |
165 | arb_div(y, t, y, prec); | |
166 | arb_mul_2exp_si(y, y, 1); | |
167 | arb_clear(t); | |
168 | } | |
169 | } | |
170 | else if (q == 4) | |
171 | { | |
172 | if (p == 1) | |
173 | { | |
174 | arb_gamma_const_1_4(y, prec); | |
175 | } | |
176 | else /* p = 3 */ | |
177 | { | |
178 | arb_t t; | |
179 | arb_init(t); | |
180 | arb_sqrt_ui(y, 2, wp); | |
181 | arb_const_pi(t, wp); | |
182 | arb_mul(y, y, t, wp); | |
183 | arb_gamma_const_1_4(t, wp); | |
184 | arb_div(y, y, t, prec); | |
185 | arb_clear(t); | |
186 | } | |
187 | } | |
188 | else if (q == 6) | |
189 | { | |
190 | arb_t t; | |
191 | arb_init(t); | |
192 | arb_const_pi(t, wp); | |
193 | arb_div_ui(t, t, 3, wp); | |
194 | arb_sqrt(t, t, wp); | |
195 | arb_set_ui(y, 2); | |
196 | arb_root_ui(y, y, 3, wp); | |
197 | arb_mul(t, t, y, wp); | |
198 | arb_gamma_const_1_3(y, wp); | |
199 | arb_mul(y, y, y, prec); | |
200 | ||
201 | if (p == 1) | |
202 | { | |
203 | arb_div(y, y, t, prec); | |
204 | } | |
205 | else /* p = 5 */ | |
206 | { | |
207 | arb_div(y, t, y, wp); | |
208 | arb_const_pi(t, wp); | |
209 | arb_mul(y, y, t, prec); | |
210 | arb_mul_2exp_si(y, y, 1); | |
211 | } | |
212 | ||
213 | arb_clear(t); | |
214 | } | |
215 | else | |
216 | { | |
217 | flint_printf("small fraction not implemented!\n"); | |
218 | flint_abort(); | |
219 | } | |
220 | } | |
221 | ||
222 | slong _arb_compute_bs_exponents(slong * tab, slong n); | |
223 | slong _arb_get_exp_pos(const slong * tab, slong step); | |
224 | ||
225 | static void | |
226 | bsplit2(arb_t P, arb_t Q, const fmpz_t zp, const fmpz_t zq, | |
227 | const slong * xexp, arb_srcptr xpow, | |
228 | ulong N, slong a, slong b, int cont, slong prec) | |
229 | { | |
230 | if (b - a == 1) | |
231 | { | |
232 | fmpz_t t; | |
233 | fmpz_init(t); | |
234 | fmpz_set(t, zp); | |
235 | fmpz_addmul_ui(t, zq, a + 1); | |
236 | arb_set_fmpz(P, t); | |
237 | arb_set(Q, P); | |
238 | fmpz_clear(t); | |
239 | } | |
240 | else | |
241 | { | |
242 | arb_t Pb, Qb; | |
243 | slong step, i, m; | |
244 | ||
245 | arb_init(Pb); | |
246 | arb_init(Qb); | |
247 | ||
248 | step = (b - a) / 2; | |
249 | m = a + step; | |
250 | ||
251 | bsplit2(P, Q, zp, zq, xexp, xpow, N, a, m, 1, prec); | |
252 | bsplit2(Pb, Qb, zp, zq, xexp, xpow, N, m, b, 1, prec); | |
253 | ||
254 | arb_mul(P, P, Pb, prec); | |
255 | arb_mul(Q, Q, Pb, prec); | |
256 | ||
257 | i = (step == 1) ? 0 : _arb_get_exp_pos(xexp, step); | |
258 | arb_addmul(Q, Qb, xpow + i, prec); | |
259 | ||
260 | arb_clear(Pb); | |
261 | arb_clear(Qb); | |
262 | } | |
263 | } | |
264 | ||
265 | static void | |
266 | bsplit3(arb_t P, arb_t Q, const fmpz_t zp, const fmpz_t zq, | |
267 | const slong * xexp, arb_srcptr xpow, | |
268 | ulong N, slong a, slong b, int cont, slong prec) | |
269 | { | |
270 | if (b - a == 1) | |
271 | { | |
272 | fmpz_t t; | |
273 | fmpz_init(t); | |
274 | arb_set(P, xpow + 0); /* N zq */ | |
275 | fmpz_set(t, zp); | |
276 | fmpz_submul_ui(t, zq, a + 1); /* zp - (a + 1) zq */ | |
277 | arb_set_fmpz(Q, t); | |
278 | fmpz_clear(t); | |
279 | } | |
280 | else | |
281 | { | |
282 | arb_t Pb, Qb; | |
283 | slong step, i, m; | |
284 | ||
285 | arb_init(Pb); | |
286 | arb_init(Qb); | |
287 | ||
288 | step = (b - a) / 2; | |
289 | m = a + step; | |
290 | ||
291 | bsplit3(P, Q, zp, zq, xexp, xpow, N, a, m, 1, prec); | |
292 | bsplit3(Pb, Qb, zp, zq, xexp, xpow, N, m, b, 1, prec); | |
293 | ||
294 | i = _arb_get_exp_pos(xexp, m - a); | |
295 | ||
296 | arb_mul(P, P, xpow + i, prec); | |
297 | if (b - m != m - a) | |
298 | arb_mul(P, P, xpow + 0, prec); | |
299 | ||
300 | arb_addmul(P, Q, Pb, prec); | |
301 | ||
302 | if (cont) | |
303 | { | |
304 | arb_mul(Q, Q, Qb, prec); | |
305 | } | |
306 | else | |
307 | { | |
308 | i = _arb_get_exp_pos(xexp, m - a); | |
309 | ||
310 | arb_mul(Q, xpow + i, xpow + i, prec); | |
311 | if (b - m != m - a) | |
312 | arb_mul(Q, Q, xpow + 0, prec); | |
313 | } | |
314 | ||
315 | arb_clear(Pb); | |
316 | arb_clear(Qb); | |
317 | } | |
318 | } | |
319 | ||
320 | double d_lambertw_branch1(double x); | |
321 | ||
322 | static ulong | |
323 | more_trailing_zeros(ulong N) | |
324 | { | |
325 | ulong bc, N2; | |
326 | ||
327 | bc = FLINT_BIT_COUNT(N); | |
328 | ||
329 | if (bc >= 8) | |
330 | { | |
331 | N2 = (N >> (bc - 5)) << (bc - 5); | |
332 | N2 += ((N2 != N) << (bc - 5)); | |
333 | return N2; | |
334 | } | |
335 | else | |
336 | { | |
337 | return N; | |
338 | } | |
339 | } | |
340 | ||
341 | #define C_LOG2 0.69314718055994530942 | |
342 | #define C_EXP1 2.7182818284590452354 | |
343 | ||
344 | static void | |
345 | build_bsplit_power_table(arb_ptr xpow, const slong * xexp, slong len, slong prec) | |
346 | { | |
347 | slong i; | |
348 | ||
349 | for (i = 1; i < len; i++) | |
350 | { | |
351 | if (xexp[i] == 2 * xexp[i-1]) | |
352 | { | |
353 | arb_mul(xpow + i, xpow + i - 1, xpow + i - 1, prec); | |
354 | } | |
355 | else if (xexp[i] == 2 * xexp[i-2]) /* prefer squaring if possible */ | |
356 | { | |
357 | arb_mul(xpow + i, xpow + i - 2, xpow + i - 2, prec); | |
358 | } | |
359 | else if (xexp[i] == 2 * xexp[i-1] + 1) | |
360 | { | |
361 | arb_mul(xpow + i, xpow + i - 1, xpow + i - 1, prec); | |
362 | arb_mul(xpow + i, xpow + i, xpow, prec); | |
363 | } | |
364 | else if (xexp[i] == 2 * xexp[i-2] + 1) | |
365 | { | |
366 | arb_mul(xpow + i, xpow + i - 2, xpow + i - 2, prec); | |
367 | arb_mul(xpow + i, xpow + i, xpow, prec); | |
368 | } | |
369 | else | |
370 | { | |
371 | flint_printf("power table has the wrong structure!\n"); | |
372 | flint_abort(); | |
373 | } | |
374 | } | |
375 | } | |
376 | ||
377 | /* assumes z in [1, 2] */ | |
378 | static void | |
379 | arb_hypgeom_gamma_fmpq_general_off1(arb_t res, const fmpq_t z, slong prec) | |
380 | { | |
381 | slong wp, N, n, n2, length, length2, wp2; | |
382 | double alpha; | |
383 | arb_t P, Q; | |
384 | slong *xexp, *xexp2; | |
385 | arb_ptr xpow; | |
386 | mag_t err, err2; | |
387 | ||
388 | wp = prec + 30; | |
389 | ||
390 | alpha = 0.52; /* tuning parameter between 0.5 and 1 */ | |
391 | ||
392 | N = alpha * C_LOG2 * wp; | |
393 | N = more_trailing_zeros(N); | |
394 | alpha = N / (C_LOG2 * wp); | |
395 | ||
396 | /* Terms in convergent series */ | |
397 | n = (1 - alpha) / d_lambertw((1 - alpha) / (alpha * C_EXP1)) * C_LOG2 * wp; | |
398 | ||
399 | /* Precision and terms in asymptotic series */ | |
400 | wp2 = wp * (1 - alpha); | |
401 | wp2 = FLINT_MAX(wp2, 30); | |
402 | n2 = (alpha - 1) / d_lambertw_branch1((alpha - 1) / (alpha * C_EXP1)) * C_LOG2 * wp; | |
403 | n2 = FLINT_MAX(n2, 2); /* binary splitting correctness */ | |
404 | ||
405 | mag_init(err); | |
406 | mag_init(err2); | |
407 | arb_init(P); | |
408 | arb_init(Q); | |
409 | ||
410 | /* compute the powers of x = N*zq that will appear (at least x^1) */ | |
411 | xexp = flint_calloc(2 * FLINT_BITS, sizeof(slong)); | |
412 | xexp2 = flint_calloc(2 * FLINT_BITS, sizeof(slong)); | |
413 | ||
414 | length = _arb_compute_bs_exponents(xexp, n); | |
415 | length2 = _arb_compute_bs_exponents(xexp2, n2); | |
416 | ||
417 | xpow = _arb_vec_init(FLINT_MAX(length, length2)); | |
418 | ||
419 | arb_set_fmpz(xpow + 0, fmpq_denref(z)); | |
420 | arb_mul_ui(xpow + 0, xpow + 0, N, wp); | |
421 | ||
422 | build_bsplit_power_table(xpow, xexp, length, wp); | |
423 | ||
424 | /* 1F1(1, 1+z, N) */ | |
425 | bsplit2(P, Q, fmpq_numref(z), fmpq_denref(z), xexp, xpow, N, 0, n, 0, wp); | |
426 | arb_div(P, Q, P, wp); | |
427 | ||
428 | /* Convergent series error bound: N^n / n! (1 + (N/n) + ...) */ | |
429 | mag_set_ui(err, N); | |
430 | mag_pow_ui(err, err, n); | |
431 | mag_rfac_ui(err2, n); | |
432 | mag_mul(err, err, err2); | |
433 | mag_set_ui(err2, N); | |
434 | mag_div_ui(err2, err2, n); | |
435 | mag_geom_series(err2, err2, 0); | |
436 | mag_mul(err, err, err2); | |
437 | arb_add_error_mag(P, err); | |
438 | ||
439 | /* divide 1F1 by z */ | |
440 | arb_mul_fmpz(P, P, fmpq_denref(z), wp); | |
441 | arb_div_fmpz(P, P, fmpq_numref(z), wp); | |
442 | arb_swap(res, P); | |
443 | ||
444 | build_bsplit_power_table(xpow, xexp2, length2, wp2); | |
445 | ||
446 | bsplit3(P, Q, fmpq_numref(z), fmpq_denref(z), xexp2, xpow, N, 0, n2, 0, wp2); | |
447 | arb_div(P, P, Q, wp2); | |
448 | ||
449 | /* 2F0 error bound (bounded by first omitted term) */ | |
450 | mag_fac_ui(err, n2); | |
451 | mag_set_ui_lower(err2, N); | |
452 | mag_pow_ui_lower(err2, err2, n2); | |
453 | mag_div(err, err, err2); | |
454 | arb_add_error_mag(P, err); | |
455 | ||
456 | /* N^z * exp(-N) * (1F1/z + 2F0/N) */ | |
457 | arb_div_ui(P, P, N, wp2); | |
458 | ||
459 | arb_add(res, res, P, wp); | |
460 | arb_set_ui(Q, N); | |
461 | arb_pow_fmpq(Q, Q, z, wp); | |
462 | arb_mul(res, res, Q, wp); | |
463 | ||
464 | arb_set_si(Q, -N); | |
465 | arb_exp(Q, Q, wp); | |
466 | arb_mul(res, res, Q, wp); | |
467 | ||
468 | _arb_vec_clear(xpow, FLINT_MAX(length, length2)); | |
469 | flint_free(xexp); | |
470 | flint_free(xexp2); | |
471 | ||
472 | arb_clear(P); | |
473 | arb_clear(Q); | |
474 | mag_clear(err); | |
475 | mag_clear(err2); | |
476 | } | |
477 | ||
478 | /* assumes z in (0, 1] */ | |
479 | void | |
480 | arb_hypgeom_gamma_fmpq_hyp(arb_t res, const fmpq_t z, slong prec) | |
481 | { | |
482 | fmpq_t t; | |
483 | fmpq_init(t); | |
484 | fmpq_add_ui(t, z, 1); | |
485 | arb_hypgeom_gamma_fmpq_general_off1(res, t, prec); | |
486 | arb_mul_fmpz(res, res, fmpq_denref(z), prec + 30); | |
487 | arb_div_fmpz(res, res, fmpq_numref(z), prec); | |
488 | fmpq_clear(t); | |
489 | } | |
490 | ||
491 | void | |
492 | arb_hypgeom_gamma_fmpq_outward(arb_t y, const fmpq_t x, slong prec) | |
493 | { | |
494 | fmpq_t a; | |
495 | fmpz_t n; | |
496 | fmpz p, q; | |
497 | slong m; | |
498 | arb_t t, u; | |
499 | ||
500 | fmpq_init(a); | |
501 | fmpz_init(n); | |
502 | arb_init(t); | |
503 | arb_init(u); | |
504 | ||
505 | /* write x = a + n with 0 < a <= 1 */ | |
506 | if (fmpz_is_one(fmpq_denref(x))) | |
507 | { | |
508 | fmpq_one(a); | |
509 | fmpz_sub_ui(n, fmpq_numref(x), 1); | |
510 | } | |
511 | else | |
512 | { | |
513 | fmpz_fdiv_qr(n, fmpq_numref(a), fmpq_numref(x), fmpq_denref(x)); | |
514 | fmpz_set(fmpq_denref(a), fmpq_denref(x)); | |
515 | } | |
516 | ||
517 | if (!fmpz_fits_si(n)) | |
518 | { | |
519 | flint_printf("gamma: too large fmpq to reduce to 0!\n"); | |
520 | flint_abort(); | |
521 | } | |
522 | ||
523 | m = fmpz_get_si(n); | |
524 | ||
525 | /* evaluate gamma(a) */ | |
526 | p = *fmpq_numref(a); | |
527 | q = *fmpq_denref(a); | |
528 | ||
529 | if (q == 1 || q == 2 || q == 3 || q == 4 || q == 6) | |
530 | { | |
531 | arb_hypgeom_gamma_small_frac(t, p, q, prec); | |
532 | } | |
533 | else | |
534 | { | |
535 | arb_hypgeom_gamma_fmpq_hyp(t, a, prec); | |
536 | } | |
537 | ||
538 | /* argument reduction */ | |
539 | if (m >= 0) | |
540 | { | |
541 | arb_rising_fmpq_ui(u, a, m, prec); | |
542 | arb_mul(y, t, u, prec); | |
543 | } | |
544 | else | |
545 | { | |
546 | arb_rising_fmpq_ui(u, x, -m, prec); | |
547 | arb_div(y, t, u, prec); | |
548 | } | |
549 | ||
550 | fmpq_clear(a); | |
551 | fmpz_clear(n); | |
552 | arb_clear(t); | |
553 | arb_clear(u); | |
554 | } | |
555 | ||
556 | int | |
557 | arb_hypgeom_gamma_fmpq_taylor(arb_t y, const fmpq_t x, slong prec) | |
558 | { | |
559 | fmpq_t a; | |
560 | fmpz_t n; | |
561 | slong m; | |
562 | arb_t t; | |
563 | int success; | |
564 | ||
565 | fmpq_init(a); | |
566 | fmpz_init(n); | |
567 | arb_init(t); | |
568 | ||
569 | success = 1; | |
570 | ||
571 | /* write x = a + n with 0 < a <= 1 */ | |
572 | if (fmpz_is_one(fmpq_denref(x))) | |
573 | { | |
574 | fmpq_one(a); | |
575 | fmpz_sub_ui(n, fmpq_numref(x), 1); | |
576 | } | |
577 | else | |
578 | { | |
579 | fmpz_fdiv_qr(n, fmpq_numref(a), fmpq_numref(x), fmpq_denref(x)); | |
580 | fmpz_set(fmpq_denref(a), fmpq_denref(x)); | |
581 | } | |
582 | ||
583 | if (!fmpz_fits_si(n)) | |
584 | { | |
585 | success = 0; | |
586 | goto cleanup; | |
587 | } | |
588 | ||
589 | m = fmpz_get_si(n); | |
590 | ||
591 | if (m < -(40 + (prec - 40) / 4)) | |
592 | { | |
593 | success = 0; | |
594 | goto cleanup; | |
595 | } | |
596 | ||
597 | if (m > 70 + (prec - 40) / 8) | |
598 | { | |
599 | success = 0; | |
600 | goto cleanup; | |
601 | } | |
602 | ||
603 | arb_set_fmpq(t, a, prec + 4); | |
604 | success = arb_hypgeom_gamma_taylor(t, t, 0, prec); | |
605 | ||
606 | if (success) | |
607 | { | |
608 | arb_t u; | |
609 | arb_init(u); | |
610 | ||
611 | if (m >= 0) | |
612 | { | |
613 | arb_rising_fmpq_ui(u, a, m, prec); | |
614 | arb_mul(y, t, u, prec); | |
615 | } | |
616 | else | |
617 | { | |
618 | arb_rising_fmpq_ui(u, x, -m, prec); | |
619 | arb_div(y, t, u, prec); | |
620 | } | |
621 | ||
622 | arb_clear(u); | |
623 | } | |
624 | ||
625 | cleanup: | |
626 | fmpq_clear(a); | |
627 | fmpz_clear(n); | |
628 | arb_clear(t); | |
629 | ||
630 | return success; | |
631 | } | |
632 | ||
633 | void | |
634 | arb_hypgeom_gamma_fmpq(arb_t y, const fmpq_t x, slong prec) | |
635 | { | |
636 | fmpz p, q; | |
637 | ||
638 | p = *fmpq_numref(x); | |
639 | q = *fmpq_denref(x); | |
640 | ||
641 | if ((q == 1 || q == 2 || q == 3 || q == 4 || q == 6) && !COEFF_IS_MPZ(p)) | |
642 | { | |
643 | if (q == 1) | |
644 | { | |
645 | if (p <= 0) | |
646 | { | |
647 | arb_indeterminate(y); | |
648 | return; | |
649 | } | |
650 | ||
651 | if (p < 1200 || 1.44265 * (p*log(p) - p) < 15.0 * prec) | |
652 | { | |
653 | fmpz_t t; | |
654 | fmpz_init(t); | |
655 | fmpz_fac_ui(t, p - 1); | |
656 | arb_set_round_fmpz(y, t, prec); | |
657 | fmpz_clear(t); | |
658 | return; | |
659 | } | |
660 | } | |
661 | ||
662 | p = FLINT_ABS(p); | |
663 | ||
664 | if (p < q * 500.0 || p < q * (500.0 + 0.1 * prec * sqrt(prec))) | |
665 | { | |
666 | arb_hypgeom_gamma_fmpq_outward(y, x, prec); | |
667 | return; | |
668 | } | |
669 | } | |
670 | ||
671 | if (q != 1 && prec > 7000 + 300 * fmpz_bits(fmpq_denref(x)) && | |
672 | (slong) fmpz_bits(fmpq_numref(x)) - (slong) fmpz_bits(fmpq_denref(x)) < FLINT_BITS && | |
673 | fabs(fmpq_get_d(x)) < 0.03 * prec * sqrt(prec)) | |
674 | { | |
675 | arb_hypgeom_gamma_fmpq_outward(y, x, prec); | |
676 | return; | |
677 | } | |
678 | ||
679 | if (fmpz_bits(fmpq_denref(x)) > 0.1 * prec || fmpz_bits(fmpq_numref(x)) > 0.1 * prec) | |
680 | { | |
681 | slong wp; | |
682 | ||
683 | wp = (slong) fmpz_bits(fmpq_numref(x)) - (slong) fmpz_bits(fmpq_denref(x)); | |
684 | wp = FLINT_MAX(wp, 0); | |
685 | wp = FLINT_MIN(wp, 4 * prec); | |
686 | wp += prec; | |
687 | ||
688 | arb_set_fmpq(y, x, wp); | |
689 | ||
690 | if (!arb_hypgeom_gamma_taylor(y, y, 0, prec)) | |
691 | arb_hypgeom_gamma_stirling(y, y, 0, prec); | |
692 | ||
693 | return; | |
694 | } | |
695 | ||
696 | if (arb_hypgeom_gamma_fmpq_taylor(y, x, prec)) | |
697 | return; | |
698 | ||
699 | arb_hypgeom_gamma_fmpq_stirling(y, x, prec); | |
700 | } | |
701 | ||
702 | void | |
703 | arb_hypgeom_gamma_fmpz(arb_t y, const fmpz_t x, slong prec) | |
704 | { | |
705 | fmpq_t t; | |
706 | *fmpq_numref(t) = *x; | |
707 | *fmpq_denref(t) = WORD(1); | |
708 | arb_hypgeom_gamma_fmpq(y, t, prec); | |
709 | } | |
710 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | void arb_gamma_stirling_coeff(arb_t b, ulong k, int digamma, slong prec); | |
14 | ||
15 | void | |
16 | arb_hypgeom_gamma_stirling_sum_horner(arb_t s, const arb_t z, slong N, slong prec) | |
17 | { | |
18 | arb_t b, t, zinv, w; | |
19 | mag_t zinv_mag; | |
20 | slong n, term_mag, term_prec; | |
21 | slong * term_mags; | |
22 | ||
23 | if (N <= 1) | |
24 | { | |
25 | arb_zero(s); | |
26 | return; | |
27 | } | |
28 | ||
29 | arb_init(b); | |
30 | arb_init(t); | |
31 | arb_init(zinv); | |
32 | arb_init(w); | |
33 | mag_init(zinv_mag); | |
34 | ||
35 | arb_inv(zinv, z, prec); | |
36 | arb_mul(w, zinv, zinv, prec); | |
37 | ||
38 | arb_get_mag(zinv_mag, zinv); | |
39 | term_mags = flint_malloc(sizeof(ulong) * N); | |
40 | ||
41 | _arb_hypgeom_gamma_stirling_term_bounds(term_mags, zinv_mag, N); | |
42 | ||
43 | arb_zero(s); | |
44 | ||
45 | for (n = N - 1; n >= 1; n--) | |
46 | { | |
47 | term_mag = term_mags[n]; | |
48 | term_prec = prec + term_mag; | |
49 | term_prec = FLINT_MIN(term_prec, prec); | |
50 | term_prec = FLINT_MAX(term_prec, 10); | |
51 | ||
52 | if (prec - term_prec > 200) | |
53 | { | |
54 | arb_set_round(t, w, term_prec); | |
55 | arb_mul(s, s, t, term_prec); | |
56 | } | |
57 | else | |
58 | arb_mul(s, s, w, term_prec); | |
59 | ||
60 | arb_gamma_stirling_coeff(b, n, 0, term_prec); | |
61 | arb_add(s, s, b, term_prec); | |
62 | } | |
63 | ||
64 | arb_mul(s, s, zinv, prec); | |
65 | ||
66 | flint_free(term_mags); | |
67 | ||
68 | arb_clear(t); | |
69 | arb_clear(b); | |
70 | arb_clear(zinv); | |
71 | arb_clear(w); | |
72 | mag_clear(zinv_mag); | |
73 | } | |
74 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | #include "bernoulli.h" | |
13 | ||
14 | void | |
15 | arb_hypgeom_gamma_stirling_sum_improved(arb_t s, const arb_t z, slong N, slong K, slong prec) | |
16 | { | |
17 | arb_t b, t, zinv, w, u, S2, S3, S4; | |
18 | mag_t zinv_mag, err; | |
19 | slong n, term_mag, term_prec; | |
20 | slong * term_mags; | |
21 | slong i, j, k, M; | |
22 | slong * Mk; | |
23 | arb_ptr upow, ukpow; | |
24 | slong kodd, kpow_exp, wp; | |
25 | fmpz_t kpow; | |
26 | slong m; | |
27 | ||
28 | if (N <= 1) | |
29 | { | |
30 | arb_zero(s); | |
31 | return; | |
32 | } | |
33 | ||
34 | if (N == 2) | |
35 | { | |
36 | arb_mul_ui(s, z, 12, prec); | |
37 | arb_inv(s, s, prec); | |
38 | return; | |
39 | } | |
40 | ||
41 | if (K == 0) | |
42 | { | |
43 | if (prec <= 128) | |
44 | K = 1; | |
45 | else if (prec <= 1024) | |
46 | K = 2; | |
47 | else | |
48 | { | |
49 | K = 4 + 0.1 * sqrt(FLINT_MAX(prec - 4096, 0)); | |
50 | K = FLINT_MIN(K, 100); | |
51 | } | |
52 | } | |
53 | ||
54 | arb_init(b); | |
55 | arb_init(t); | |
56 | arb_init(zinv); | |
57 | arb_init(w); | |
58 | arb_init(u); | |
59 | arb_init(S2); | |
60 | arb_init(S3); | |
61 | arb_init(S4); | |
62 | mag_init(zinv_mag); | |
63 | mag_init(err); | |
64 | ||
65 | arb_inv(zinv, z, prec); | |
66 | arb_mul(w, zinv, zinv, prec); | |
67 | ||
68 | arb_get_mag(zinv_mag, zinv); | |
69 | ||
70 | term_mags = flint_malloc(sizeof(ulong) * (N + 1)); | |
71 | ||
72 | /* Avoid possible overflow. (This case is not interesting to handle well, | |
73 | but we need to handle it.) */ | |
74 | if (mag_cmp_2exp_si(zinv_mag, 10) > 0) | |
75 | K = 1; | |
76 | ||
77 | /* Avoid possible underflow. */ | |
78 | if (mag_cmp_2exp_si(zinv_mag, -100000) < 0) | |
79 | mag_set_ui_2exp_si(zinv_mag, 1, -100000); | |
80 | ||
81 | _arb_hypgeom_gamma_stirling_term_bounds(term_mags, zinv_mag, N + 1); | |
82 | ||
83 | /* We will assume below that term_mags is nonincreasing */ | |
84 | for (n = N - 2; n >= 1; n--) | |
85 | { | |
86 | if (term_mags[n] < term_mags[n + 1]) | |
87 | term_mags[n] = term_mags[n + 1]; | |
88 | } | |
89 | ||
90 | Mk = NULL; | |
91 | ||
92 | if (K > 1) | |
93 | { | |
94 | Mk = flint_malloc(sizeof(slong) * (K + 1)); | |
95 | Mk[0] = Mk[1] = N; | |
96 | ||
97 | for (k = 2; k <= K; k++) | |
98 | { | |
99 | double log2_k; | |
100 | ||
101 | Mk[k] = N; | |
102 | ||
103 | log2_k = log(k) * (1.0 / 0.693147180559945309); | |
104 | ||
105 | while (Mk[k] > 2) | |
106 | { | |
107 | slong err, Mnew; | |
108 | ||
109 | Mnew = Mk[k] - 1; | |
110 | err = term_mags[Mnew] - log2_k * (2 * Mnew) + FLINT_BIT_COUNT(N - Mnew); | |
111 | ||
112 | if (err < -prec) | |
113 | Mk[k] = Mnew; | |
114 | else | |
115 | break; | |
116 | } | |
117 | } | |
118 | ||
119 | /* We will assume that Mk is nonincreasing. */ | |
120 | for (k = 2; k <= K; k++) | |
121 | { | |
122 | if (Mk[k] > Mk[k - 1]) | |
123 | Mk[k] = Mk[k - 1]; | |
124 | } | |
125 | ||
126 | while (K >= 2 && Mk[K] == Mk[K - 1]) | |
127 | K--; | |
128 | ||
129 | M = Mk[K]; | |
130 | ||
131 | mag_hurwitz_zeta_uiui(err, 2 * M, K); | |
132 | mag_mul_ui(err, err, N - M); | |
133 | mag_mul_2exp_si(err, err, term_mags[M]); | |
134 | ||
135 | for (k = 1; k < K; k++) | |
136 | { | |
137 | mag_t t; | |
138 | mag_init(t); | |
139 | mag_set_ui_lower(t, k); | |
140 | mag_inv(t, t); | |
141 | mag_pow_ui(t, t, 2 * Mk[k]); | |
142 | mag_mul_ui(t, t, N - Mk[k]); | |
143 | mag_mul_2exp_si(t, t, term_mags[Mk[k]]); | |
144 | mag_add(err, err, t); | |
145 | mag_clear(t); | |
146 | } | |
147 | } | |
148 | else | |
149 | { | |
150 | M = N; | |
151 | } | |
152 | ||
153 | m = sqrt(N - M); | |
154 | m = FLINT_MAX(m, 1); | |
155 | ||
156 | /* S3 precision */ | |
157 | wp = prec + term_mags[M]; | |
158 | wp = FLINT_MIN(wp, prec); | |
159 | wp = FLINT_MAX(wp, 10); | |
160 | ||
161 | arb_zero(S3); | |
162 | ||
163 | /* todo: could avoid one mul + div with precomputation here */ | |
164 | /* u = -1 / (2 pi z)^2 */ | |
165 | arb_const_pi(u, wp); | |
166 | arb_mul(u, u, z, wp); | |
167 | arb_mul_2exp_si(u, u, 1); | |
168 | arb_mul(u, u, u, wp); | |
169 | arb_inv(u, u, wp); | |
170 | arb_neg(u, u); | |
171 | ||
172 | fmpz_init(kpow); | |
173 | upow = _arb_vec_init(m + 1); | |
174 | ukpow = _arb_vec_init(m + 1); | |
175 | ||
176 | _arb_vec_set_powers(upow, u, m + 1, wp); | |
177 | ||
178 | for (kodd = 1; kodd < K; kodd += 2) | |
179 | { | |
180 | for (k = kodd; k < K; k *= 2) | |
181 | { | |
182 | if (k == 1) | |
183 | { | |
184 | _arb_vec_set(ukpow, upow, m + 1); | |
185 | fmpz_one(kpow); | |
186 | kpow_exp = 0; | |
187 | } | |
188 | else if (k == kodd) | |
189 | { | |
190 | arb_set(ukpow + 0, upow + 0); | |
191 | for (j = 1; j <= FLINT_MIN(Mk[k] - M - 1, m); j++) | |
192 | { | |
193 | if (j == 1) | |
194 | fmpz_set_ui(kpow, k * k); | |
195 | else | |
196 | fmpz_mul_ui(kpow, kpow, k * k); | |
197 | arb_div_fmpz(ukpow + j, upow + j, kpow, wp); | |
198 | } | |
199 | ||
200 | /* set kpow = k^(2M) */ | |
201 | fmpz_ui_pow_ui(kpow, k * k, M); | |
202 | kpow_exp = 0; | |
203 | } | |
204 | else | |
205 | { | |
206 | /* compute x / k^(2j) given x / (k/2)^(2j) */ | |
207 | for (j = 1; j <= FLINT_MIN(Mk[k] - M - 1, m); j++) | |
208 | arb_mul_2exp_si(ukpow + j, ukpow + j, -2 * j); | |
209 | kpow_exp += 2 * M; | |
210 | } | |
211 | ||
212 | arb_zero(S4); | |
213 | ||
214 | for (n = Mk[k] - 1; n >= M; n--) | |
215 | { | |
216 | i = n - M; | |
217 | ||
218 | term_prec = prec + term_mags[n]; | |
219 | term_prec = FLINT_MIN(wp, prec); | |
220 | term_prec = FLINT_MAX(term_prec, 10); | |
221 | ||
222 | /* note: set_round makes small difference here */ | |
223 | arb_fma_ui(S4, S4, (2 * n) * (2 * n - 1), ukpow + i % m, term_prec); | |
224 | ||
225 | if (i != 0 && i % m == 0) | |
226 | { | |
227 | /* note: set_round makes small difference here */ | |
228 | arb_mul(S4, S4, ukpow + m, term_prec); | |
229 | } | |
230 | } | |
231 | ||
232 | /* divide by k^(2M) */ | |
233 | if (k != 1) | |
234 | { | |
235 | if (!fmpz_is_one(kpow)) | |
236 | arb_div_fmpz(S4, S4, kpow, wp); | |
237 | ||
238 | arb_mul_2exp_si(S4, S4, -kpow_exp); | |
239 | } | |
240 | ||
241 | arb_add(S3, S3, S4, wp); | |
242 | } | |
243 | } | |
244 | ||
245 | /* multiply by -2 (2M-2)! u^M z */ | |
246 | fmpz_fac_ui(kpow, 2 * M - 2); | |
247 | arb_mul_fmpz(S3, S3, kpow, wp); | |
248 | arb_pow_ui(u, u, M, wp); | |
249 | arb_mul(S3, S3, u, wp); | |
250 | arb_set_round(t, z, wp); | |
251 | arb_mul(S3, S3, t, wp); | |
252 | arb_mul_2exp_si(S3, S3, 1); | |
253 | arb_neg(S3, S3); | |
254 | ||
255 | arb_add_error_mag(S3, err); | |
256 | ||
257 | _arb_vec_clear(upow, m + 1); | |
258 | _arb_vec_clear(ukpow, m + 1); | |
259 | fmpz_clear(kpow); | |
260 | ||
261 | arb_zero(S2); | |
262 | ||
263 | m = sqrt(M); | |
264 | upow = _arb_vec_init(m + 1); | |
265 | _arb_vec_set_powers(upow, w, m + 1, prec); | |
266 | ||
267 | BERNOULLI_ENSURE_CACHED(2 * M - 2); | |
268 | ||
269 | { | |
270 | fmpz_t d, e, f, g, h; | |
271 | fmpz q[4]; | |
272 | ||
273 | fmpz_init(d); | |
274 | fmpz_init(e); | |
275 | fmpz_init(f); | |
276 | fmpz_init(g); | |
277 | fmpz_init(h); | |
278 | ||
279 | fmpz_init(q); | |
280 | fmpz_init(q + 1); | |
281 | fmpz_init(q + 2); | |
282 | fmpz_init(q + 3); | |
283 | ||
284 | for (n = M - 1; n >= 1; n--) | |
285 | { | |
286 | i = n - 1; | |
287 | ||
288 | if (i >= 4 && i % m >= 3 && prec >= 512 && prec <= 4096) | |
289 | { | |
290 | term_mag = term_mags[n - 3]; | |
291 | term_prec = prec + term_mag; | |
292 | term_prec = FLINT_MIN(term_prec, prec); | |
293 | term_prec = FLINT_MAX(term_prec, 10); | |
294 | ||
295 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * (n - 0)), 2 * (n - 0) * (2 * (n - 0) - 1)); | |
296 | fmpz_mul_ui(e, fmpq_denref(bernoulli_cache + 2 * (n - 1)), 2 * (n - 1) * (2 * (n - 1) - 1)); | |
297 | fmpz_mul_ui(g, fmpq_denref(bernoulli_cache + 2 * (n - 2)), 2 * (n - 2) * (2 * (n - 2) - 1)); | |
298 | fmpz_mul_ui(h, fmpq_denref(bernoulli_cache + 2 * (n - 3)), 2 * (n - 3) * (2 * (n - 3) - 1)); | |
299 | ||
300 | /* q3 = egh q2 = dgh q1 = deh q0 = deg d = degh */ | |
301 | fmpz_mul(q + 3, e, g); | |
302 | fmpz_mul(q + 0, q + 3, d); | |
303 | fmpz_mul(q + 3, q + 3, h); | |
304 | fmpz_mul(q + 2, d, h); | |
305 | fmpz_mul(q + 1, q + 2, e); | |
306 | fmpz_mul(q + 2, q + 2, g); | |
307 | fmpz_mul(d, q + 3, d); | |
308 | ||
309 | fmpz_mul(q + 3, q + 3, fmpq_numref(bernoulli_cache + 2 * (n - 0))); | |
310 | fmpz_mul(q + 2, q + 2, fmpq_numref(bernoulli_cache + 2 * (n - 1))); | |
311 | fmpz_mul(q + 1, q + 1, fmpq_numref(bernoulli_cache + 2 * (n - 2))); | |
312 | fmpz_mul(q + 0, q + 0, fmpq_numref(bernoulli_cache + 2 * (n - 3))); | |
313 | ||
314 | arb_dot_fmpz(t, NULL, 0, upow + i % m - 3, 1, q, 1, 4, term_prec); | |
315 | arb_div_fmpz(t, t, d, term_prec); | |
316 | arb_add(S2, S2, t, term_prec); | |
317 | ||
318 | n -= 3; | |
319 | i -= 3; | |
320 | } | |
321 | else if (i >= 3 && i % m >= 2) | |
322 | { | |
323 | term_mag = term_mags[n - 2]; | |
324 | term_prec = prec + term_mag; | |
325 | term_prec = FLINT_MIN(term_prec, prec); | |
326 | term_prec = FLINT_MAX(term_prec, 10); | |
327 | ||
328 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * (n - 0)), 2 * (n - 0) * (2 * (n - 0) - 1)); | |
329 | fmpz_mul_ui(e, fmpq_denref(bernoulli_cache + 2 * (n - 1)), 2 * (n - 1) * (2 * (n - 1) - 1)); | |
330 | fmpz_mul_ui(g, fmpq_denref(bernoulli_cache + 2 * (n - 2)), 2 * (n - 2) * (2 * (n - 2) - 1)); | |
331 | ||
332 | fmpz_mul(q + 2, e, g); | |
333 | fmpz_mul(q + 2, q + 2, fmpq_numref(bernoulli_cache + 2 * (n - 0))); | |
334 | fmpz_mul(q + 1, d, g); | |
335 | fmpz_mul(q + 1, q + 1, fmpq_numref(bernoulli_cache + 2 * (n - 1))); | |
336 | fmpz_mul(q + 0, d, e); | |
337 | fmpz_mul(d, q + 0, g); | |
338 | fmpz_mul(q + 0, q + 0, fmpq_numref(bernoulli_cache + 2 * (n - 2))); | |
339 | ||
340 | arb_dot_fmpz(t, NULL, 0, upow + i % m - 2, 1, q, 1, 3, term_prec); | |
341 | arb_div_fmpz(t, t, d, term_prec); | |
342 | arb_add(S2, S2, t, term_prec); | |
343 | ||
344 | n -= 2; | |
345 | i -= 2; | |
346 | } | |
347 | else if (i >= 1 && i % m >= 1) | |
348 | { | |
349 | term_mag = term_mags[n - 1]; | |
350 | term_prec = prec + term_mag; | |
351 | term_prec = FLINT_MIN(term_prec, prec); | |
352 | term_prec = FLINT_MAX(term_prec, 10); | |
353 | ||
354 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * (n - 0)), 2 * (n - 0) * (2 * (n - 0) - 1)); | |
355 | fmpz_mul_ui(e, fmpq_denref(bernoulli_cache + 2 * (n - 1)), 2 * (n - 1) * (2 * (n - 1) - 1)); | |
356 | ||
357 | fmpz_mul(f, fmpq_numref(bernoulli_cache + 2 * (n - 0)), e); | |
358 | arb_set_round(u, upow + i % m, term_prec); | |
359 | arb_mul_fmpz(t, u, f, term_prec); /* todo: output-sensitive mul */ | |
360 | fmpz_mul(f, fmpq_numref(bernoulli_cache + 2 * (n - 1)), d); | |
361 | arb_set_round(u, upow + i % m - 1, term_prec); | |
362 | arb_mul_fmpz(u, u, f, term_prec); /* todo: output-sensitive mul */ | |
363 | arb_add(t, t, u, term_prec); | |
364 | ||
365 | fmpz_mul(d, d, e); | |
366 | arb_div_fmpz(t, t, d, term_prec); | |
367 | arb_add(S2, S2, t, term_prec); | |
368 | ||
369 | n--; | |
370 | i--; | |
371 | } | |
372 | else | |
373 | { | |
374 | term_mag = term_mags[n]; | |
375 | term_prec = prec + term_mag; | |
376 | term_prec = FLINT_MIN(term_prec, prec); | |
377 | term_prec = FLINT_MAX(term_prec, 10); | |
378 | ||
379 | arb_set_round(u, upow + i % m, term_prec); | |
380 | arb_mul_fmpz(t, u, fmpq_numref(bernoulli_cache + 2 * n), term_prec); /* todo: output-sensitive mul */ | |
381 | fmpz_mul_ui(d, fmpq_denref(bernoulli_cache + 2 * n), 2 * n * (2 * n - 1)); | |
382 | arb_div_fmpz(t, t, d, term_prec); | |
383 | ||
384 | arb_add(S2, S2, t, term_prec); | |
385 | } | |
386 | ||
387 | if (i != 0 && i % m == 0) | |
388 | { | |
389 | arb_set_round(u, upow + m, term_prec); /* todo: output-sensitive mul */ | |
390 | arb_mul(S2, S2, u, term_prec); | |
391 | } | |
392 | } | |
393 | ||
394 | fmpz_clear(q); | |
395 | fmpz_clear(q + 1); | |
396 | fmpz_clear(q + 2); | |
397 | fmpz_clear(q + 3); | |
398 | ||
399 | fmpz_clear(d); | |
400 | fmpz_clear(e); | |
401 | fmpz_clear(f); | |
402 | fmpz_clear(g); | |
403 | fmpz_clear(h); | |
404 | } | |
405 | ||
406 | _arb_vec_clear(upow, m + 1); | |
407 | ||
408 | arb_mul(S2, S2, zinv, prec); | |
409 | arb_add(s, S2, S3, prec); | |
410 | ||
411 | flint_free(term_mags); | |
412 | ||
413 | if (Mk != NULL) | |
414 | flint_free(Mk); | |
415 | ||
416 | arb_clear(b); | |
417 | arb_clear(t); | |
418 | arb_clear(zinv); | |
419 | arb_clear(w); | |
420 | arb_clear(u); | |
421 | arb_clear(S2); | |
422 | arb_clear(S3); | |
423 | arb_clear(S4); | |
424 | mag_clear(zinv_mag); | |
425 | mag_clear(err); | |
426 | } | |
427 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | void | |
14 | _arb_hypgeom_gamma_stirling_term_bounds(slong * bound, const mag_t zinv, slong N) | |
15 | { | |
16 | mag_t b, u; | |
17 | slong n; | |
18 | ||
19 | mag_init(b); | |
20 | mag_init(u); | |
21 | ||
22 | /* bound[0] = WORD_MAX; -- should not be used */ | |
23 | ||
24 | /* first term 1/(12z) */ | |
25 | mag_set(b, zinv); | |
26 | mag_div_ui(b, b, 12); | |
27 | bound[1] = MAG_EXP(b); | |
28 | ||
29 | /* u = 1/(2 pi z)^2 */ | |
30 | mag_const_pi_lower(u); | |
31 | mag_mul_2exp_si(u, u, 1); | |
32 | mag_inv(u, u); | |
33 | mag_mul(u, u, zinv); | |
34 | mag_mul(u, u, u); | |
35 | ||
36 | /* zeta(2n) 2 (2n-2)! / (2pi)^(2n) / z^(2n-1) */ | |
37 | /* ratio bounded by (2n-2)(2n-3)/(2 pi z)^2 */ | |
38 | ||
39 | for (n = 2; n < N; n++) | |
40 | { | |
41 | mag_mul_ui(b, b, (2*n-2) * (2*n-3)); | |
42 | mag_mul(b, b, u); | |
43 | bound[n] = MAG_EXP(b); | |
44 | } | |
45 | ||
46 | mag_clear(b); | |
47 | mag_clear(u); | |
48 | } | |
49 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | #if FLINT_BITS == 64 | |
14 | #define Z2(a,b) UWORD(0x ## b ## a) | |
15 | #else | |
16 | #define Z2(a,b) UWORD(0x ## a), UWORD(0x ## b) | |
17 | #endif | |
18 | ||
19 | #define Z8(a,b,c,d,e,f,g,h) Z2(a,b), Z2(c,d), Z2(e,f), Z2(g,h), | |
20 | ||
21 | arb_hypgeom_gamma_coeff_t arb_hypgeom_gamma_coeffs[ARB_HYPGEOM_GAMMA_TAB_NUM] = { | |
22 | {1, 0, 54, 0}, {0, 54, 54, 0}, {0, 108, 54, 1}, {-4, 162, 54, 1}, | |
23 | {-2, 216, 54, 0}, {-4, 270, 54, 1}, {-6, 324, 54, 1}, {-7, 378, 54, 0}, | |
24 | {-9, 432, 54, 1}, {-12, 486, 54, 1}, {-12, 540, 54, 0}, {-15, 594, 54, 1}, | |
25 | {-19, 648, 54, 1}, {-19, 702, 54, 0}, {-22, 756, 54, 1}, {-27, 810, 54, 0}, | |
26 | {-27, 864, 54, 0}, {-29, 918, 54, 1}, {-33, 972, 54, 0}, {-36, 1026, 54, 0}, | |
27 | {-37, 1080, 54, 1}, {-40, 1134, 54, 0}, {-45, 1188, 54, 1}, {-47, 1242, 54, 1}, | |
28 | {-49, 1296, 54, 0}, {-52, 1350, 53, 1}, {-59, 1403, 53, 0}, {-59, 1456, 53, 0}, | |
29 | {-61, 1509, 53, 1}, {-65, 1562, 53, 0}, {-72, 1615, 53, 0}, {-72, 1668, 53, 1}, | |
30 | {-74, 1721, 53, 0}, {-78, 1774, 53, 1}, {-85, 1827, 53, 1}, {-85, 1880, 53, 0}, | |
31 | {-88, 1933, 53, 1}, {-92, 1986, 53, 0}, {-99, 2039, 53, 0}, {-99, 2092, 52, 1}, | |
32 | {-102, 2144, 52, 0}, {-106, 2196, 52, 1}, {-116, 2248, 52, 0}, {-114, 2300, 52, 0}, | |
33 | {-117, 2352, 52, 1}, {-121, 2404, 52, 0}, {-127, 2456, 52, 1}, {-129, 2508, 52, 1}, | |
34 | {-132, 2560, 52, 0}, {-136, 2612, 52, 1}, {-141, 2664, 52, 0}, {-144, 2716, 52, 0}, | |
35 | {-147, 2768, 52, 1}, {-151, 2820, 51, 0}, {-156, 2871, 51, 1}, {-161, 2922, 51, 1}, | |
36 | {-163, 2973, 51, 0}, {-167, 3024, 51, 1}, {-171, 3075, 51, 0}, {-179, 3126, 51, 1}, | |
37 | {-179, 3177, 51, 1}, {-183, 3228, 51, 0}, {-187, 3279, 51, 1}, {-192, 3330, 51, 0}, | |
38 | {-197, 3381, 51, 0}, {-199, 3432, 51, 1}, {-203, 3483, 50, 0}, {-208, 3533, 50, 1}, | |
39 | {-217, 3583, 50, 1}, {-216, 3633, 50, 0}, {-220, 3683, 50, 1}, {-224, 3733, 50, 0}, | |
40 | {-230, 3783, 50, 1}, {-234, 3833, 50, 1}, {-237, 3883, 50, 0}, {-241, 3933, 50, 1}, | |
41 | {-246, 3983, 50, 0}, {-256, 4033, 49, 1}, {-255, 4082, 49, 1}, {-259, 4131, 49, 0}, | |
42 | {-263, 4180, 49, 1}, {-269, 4229, 49, 0}, {-274, 4278, 49, 0}, {-277, 4327, 49, 1}, | |
43 | {-281, 4376, 49, 0}, {-285, 4425, 49, 1}, {-292, 4474, 49, 0}, {-295, 4523, 49, 0}, | |
44 | {-299, 4572, 49, 1}, {-303, 4621, 49, 0}, {-308, 4670, 48, 1}, {-317, 4718, 48, 1}, | |
45 | {-317, 4766, 48, 0}, {-321, 4814, 48, 1}, {-326, 4862, 48, 0}, {-331, 4910, 48, 1}, | |
46 | {-337, 4958, 48, 1}, {-340, 5006, 48, 0}, {-344, 5054, 48, 1}, {-349, 5102, 48, 0}, | |
47 | {-355, 5150, 48, 1}, {-359, 5198, 47, 1}, {-363, 5245, 47, 0}, {-367, 5292, 47, 1}, | |
48 | {-372, 5339, 47, 0}, {-379, 5386, 47, 1}, {-382, 5433, 47, 1}, {-386, 5480, 47, 0}, | |
49 | {-391, 5527, 47, 1}, {-396, 5574, 47, 0}, {-405, 5621, 47, 1}, {-406, 5668, 47, 1}, | |
50 | {-410, 5715, 46, 0}, {-415, 5761, 46, 1}, {-420, 5807, 46, 0}, {-428, 5853, 46, 0}, | |
51 | {-429, 5899, 46, 1}, {-434, 5945, 46, 0}, {-439, 5991, 46, 1}, {-444, 6037, 46, 0}, | |
52 | {-451, 6083, 46, 0}, {-454, 6129, 46, 1}, {-458, 6175, 46, 0}, {-463, 6221, 45, 1}, | |
53 | {-469, 6266, 45, 0}, {-475, 6311, 45, 0}, {-478, 6356, 45, 1}, {-482, 6401, 45, 0}, | |
54 | {-488, 6446, 45, 1}, {-494, 6491, 45, 0}, {-500, 6536, 45, 0}, {-503, 6581, 45, 1}, | |
55 | {-507, 6626, 45, 0}, {-512, 6671, 45, 1}, {-518, 6716, 44, 0}, {-524, 6760, 44, 0}, | |
56 | {-527, 6804, 44, 1}, {-532, 6848, 44, 0}, {-537, 6892, 44, 1}, {-543, 6936, 44, 0}, | |
57 | {-549, 6980, 44, 0}, {-553, 7024, 44, 1}, {-557, 7068, 44, 0}, {-562, 7112, 44, 1}, | |
58 | {-569, 7156, 44, 0}, {-575, 7200, 43, 0}, {-578, 7243, 43, 1}, {-583, 7286, 43, 0}, | |
59 | {-588, 7329, 43, 1}, {-594, 7372, 43, 0}, {-601, 7415, 43, 0}, {-604, 7458, 43, 1}, | |
60 | {-608, 7501, 43, 0}, {-613, 7544, 43, 1}, {-619, 7587, 43, 0}, {-627, 7630, 42, 0}, | |
61 | {-629, 7672, 42, 1}, {-634, 7714, 42, 0}, {-639, 7756, 42, 1}, {-645, 7798, 42, 0}, | |
62 | {-656, 7840, 42, 0}, {-655, 7882, 42, 1}, {-660, 7924, 42, 0}, {-665, 7966, 42, 1}, | |
63 | {-671, 8008, 42, 0}, {-679, 8050, 41, 1}, {-682, 8091, 41, 1}, {-686, 8132, 41, 0}, | |
64 | {-691, 8173, 41, 1}, {-697, 8214, 41, 0}, {-704, 8255, 41, 1}, {-708, 8296, 41, 1}, | |
65 | {-713, 8337, 41, 0}, {-718, 8378, 41, 1}, {-723, 8419, 41, 0}, {-730, 8460, 41, 1}, | |
66 | {-735, 8501, 40, 1}, {-739, 8541, 40, 0}, {-744, 8581, 40, 1}, {-750, 8621, 40, 0}, | |
67 | {-756, 8661, 40, 1}, {-763, 8701, 40, 1}, {-766, 8741, 40, 0}, {-771, 8781, 40, 1}, | |
68 | {-776, 8821, 40, 0}, {-782, 8861, 40, 1}, {-791, 8901, 39, 1}, {-793, 8940, 39, 0}, | |
69 | {-798, 8979, 39, 1}, {-803, 9018, 39, 0}, {-809, 9057, 39, 1}, {-817, 9096, 39, 0}, | |
70 | {-820, 9135, 39, 0}, {-825, 9174, 39, 1}, {-830, 9213, 39, 0}, {-836, 9252, 39, 1}, | |
71 | {-843, 9291, 38, 0}, {-848, 9329, 38, 0}, {-852, 9367, 38, 1}, {-857, 9405, 38, 0}, | |
72 | {-863, 9443, 38, 1}, {-869, 9481, 38, 0}, {-876, 9519, 38, 0}, {-880, 9557, 38, 1}, | |
73 | {-885, 9595, 38, 0}, {-890, 9633, 38, 1}, {-896, 9671, 37, 0}, {-906, 9708, 37, 1}, | |
74 | {-908, 9745, 37, 1}, {-912, 9782, 37, 0}, {-918, 9819, 37, 1}, {-924, 9856, 37, 0}, | |
75 | {-931, 9893, 37, 1}, {-936, 9930, 37, 1}, {-940, 9967, 37, 0}, {-945, 10004, 37, 1}, | |
76 | {-951, 10041, 36, 0}, {-958, 10077, 36, 1}, {-965, 10113, 36, 1}, {-968, 10149, 36, 0}, | |
77 | {-973, 10185, 36, 1}, {-979, 10221, 36, 0}, {-985, 10257, 36, 1}, {-994, 10293, 36, 0}, | |
78 | {-997, 10329, 36, 0}, {-1001, 10365, 35, 1}, {-1007, 10400, 35, 0}, {-1013, 10435, 35, 1}, | |
79 | {-1020, 10470, 35, 0}, {-1025, 10505, 35, 0}, {-1030, 10540, 35, 1}, {-1035, 10575, 35, 0}, | |
80 | {-1041, 10610, 35, 1}, {-1047, 10645, 35, 0}, {-1056, 10680, 34, 0}, {-1058, 10714, 34, 1}, | |
81 | {-1063, 10748, 34, 0}, {-1069, 10782, 34, 1}, {-1075, 10816, 34, 0}, {-1082, 10850, 34, 1}, | |
82 | {-1087, 10884, 34, 1}, {-1092, 10918, 34, 0}, {-1097, 10952, 34, 1}, {-1103, 10986, 34, 0}, | |
83 | {-1110, 11020, 33, 1}, {-1117, 11053, 33, 1}, {-1121, 11086, 33, 0}, {-1126, 11119, 33, 1}, | |
84 | {-1131, 11152, 33, 0}, {-1138, 11185, 33, 1}, {-1145, 11218, 33, 0}, {-1150, 11251, 33, 0}, | |
85 | {-1155, 11284, 33, 1}, {-1160, 11317, 33, 0}, {-1166, 11350, 32, 1}, {-1173, 11382, 32, 0}, | |
86 | {-1180, 11414, 32, 0}, {-1184, 11446, 32, 1}, {-1189, 11478, 32, 0}, {-1195, 11510, 32, 1}, | |
87 | {-1201, 11542, 32, 0}, {-1209, 11574, 32, 1}, {-1213, 11606, 32, 1}, {-1218, 11638, 32, 0}, | |
88 | {-1223, 11670, 31, 1}, {-1230, 11701, 31, 0}, {-1236, 11732, 31, 1}, {-1244, 11763, 31, 1}, | |
89 | {-1247, 11794, 31, 0}, {-1253, 11825, 31, 1}, {-1258, 11856, 31, 0}, {-1265, 11887, 31, 1}, | |
90 | {-1273, 11918, 31, 0}, {-1277, 11949, 30, 0}, {-1282, 11979, 30, 1}, {-1288, 12009, 30, 0}, | |
91 | {-1294, 12039, 30, 1}, {-1300, 12069, 30, 0}, {-1309, 12099, 30, 0}, {-1312, 12129, 30, 1}, | |
92 | {-1317, 12159, 30, 0}, {-1323, 12189, 30, 1}, {-1329, 12219, 29, 0}, {-1337, 12248, 29, 1}, | |
93 | {-1342, 12277, 29, 1}, {-1347, 12306, 29, 0}, {-1352, 12335, 29, 1}, {-1358, 12364, 29, 0}, | |
94 | {-1365, 12393, 29, 1}, {-1378, 12422, 29, 1}, {-1377, 12451, 29, 0}, {-1382, 12480, 29, 1}, | |
95 | {-1388, 12509, 28, 0}, {-1394, 12537, 28, 1}, {-1401, 12565, 28, 0}, {-1407, 12593, 28, 0}, | |
96 | {-1412, 12621, 28, 1}, {-1417, 12649, 28, 0}, {-1423, 12677, 28, 1}, {-1430, 12705, 28, 0}, | |
97 | {-1438, 12733, 27, 1}, {-1442, 12760, 27, 1}, {-1447, 12787, 27, 0}, {-1453, 12814, 27, 1}, | |
98 | {-1459, 12841, 27, 0}, {-1466, 12868, 27, 1}, {-1474, 12895, 27, 1}, {-1477, 12922, 27, 0}, | |
99 | {-1483, 12949, 27, 1}, {-1489, 12976, 27, 0}, {-1495, 13003, 26, 1}, {-1503, 13029, 26, 0}, | |
100 | {-1508, 13055, 26, 0}, {-1513, 13081, 26, 1}, {-1519, 13107, 26, 0}, {-1525, 13133, 26, 1}, | |
101 | {-1531, 13159, 26, 0}, {-1541, 13185, 26, 1}, {-1544, 13211, 26, 1}, {-1549, 13237, 25, 0}, | |
102 | {-1555, 13262, 25, 1}, {-1561, 13287, 25, 0}, {-1568, 13312, 25, 1}, {-1576, 13337, 25, 1}, | |
103 | {-1580, 13362, 25, 0}, {-1585, 13387, 25, 1}, {-1591, 13412, 25, 0}, {-1598, 13437, 25, 1}, | |
104 | {-1605, 13462, 24, 0}, {-1611, 13486, 24, 0}, {-1616, 13510, 24, 1}, {-1621, 13534, 24, 0}, | |
105 | {-1628, 13558, 24, 1}, {-1634, 13582, 24, 0}, {-1643, 13606, 24, 1}, {-1647, 13630, 24, 1}, | |
106 | {-1652, 13654, 24, 0}, {-1658, 13678, 23, 1}, {-1664, 13701, 23, 0}, {-1671, 13724, 23, 1}, | |
107 | {-1680, 13747, 23, 1}, {-1683, 13770, 23, 0}, {-1688, 13793, 23, 1}, {-1694, 13816, 23, 0}, | |
108 | {-1701, 13839, 23, 1}, {-1708, 13862, 23, 0}, {-1715, 13885, 22, 0}, {-1719, 13907, 22, 1}, | |
109 | {-1725, 13929, 22, 0}, {-1731, 13951, 22, 1}, {-1738, 13973, 22, 0}, {-1746, 13995, 22, 1}, | |
110 | {-1751, 14017, 22, 1}, {-1756, 14039, 22, 0}, {-1762, 14061, 22, 1}, {-1768, 14083, 21, 0}, | |
111 | {-1775, 14104, 21, 1}, {-1785, 14125, 21, 0}, {-1788, 14146, 21, 0}, {-1793, 14167, 21, 1}, | |
112 | {-1799, 14188, 21, 0}, {-1805, 14209, 21, 1}, {-1812, 14230, 21, 0}, {-1821, 14251, 21, 0}, | |
113 | {-1824, 14272, 20, 1}, {-1830, 14292, 20, 0}, {-1836, 14312, 20, 1}, {-1843, 14332, 20, 0}, | |
114 | {-1850, 14352, 20, 1}, {-1857, 14372, 20, 1}, {-1861, 14392, 20, 0}, {-1867, 14412, 20, 1}, | |
115 | {-1873, 14432, 20, 0}, {-1880, 14452, 19, 1}, {-1888, 14471, 19, 0}, {-1893, 14490, 19, 0}, | |
116 | {-1898, 14509, 19, 1}, {-1904, 14528, 19, 0}, {-1911, 14547, 19, 1}, {-1918, 14566, 19, 0}, | |
117 | {-1926, 14585, 19, 1}, {-1930, 14604, 19, 1}, {-1936, 14623, 18, 0}, {-1942, 14641, 18, 1}, | |
118 | {-1948, 14659, 18, 0}, {-1955, 14677, 18, 1}, {-1967, 14695, 18, 1}, {-1968, 14713, 18, 0}, | |
119 | {-1973, 14731, 18, 1}, {-1979, 14749, 18, 0}, {-1986, 14767, 18, 1}, {-1993, 14785, 17, 0}, | |
120 | {-2001, 14802, 17, 0}, {-2005, 14819, 17, 1}, {-2011, 14836, 17, 0}, {-2017, 14853, 17, 1}, | |
121 | {-2024, 14870, 17, 0}, {-2031, 14887, 17, 1}, {-2038, 14904, 17, 1}, {-2043, 14921, 16, 0}, | |
122 | {-2048, 14937, 16, 1}, {-2055, 14953, 16, 0}, {-2062, 14969, 16, 1}, {-2069, 14985, 16, 0}, | |
123 | {-2076, 15001, 16, 0}, {-2080, 15017, 16, 1}, {-2086, 15033, 16, 0}, {-2093, 15049, 16, 1}, | |
124 | {-2100, 15065, 15, 0}, {-2108, 15080, 15, 1}, {-2113, 15095, 15, 1}, {-2118, 15110, 15, 0}, | |
125 | {-2124, 15125, 15, 1}, {-2131, 15140, 15, 0}, {-2138, 15155, 15, 1}, {-2147, 15170, 15, 0}, | |
126 | {-2151, 15185, 15, 0}, {-2156, 15200, 14, 1}, {-2162, 15214, 14, 0}, {-2169, 15228, 14, 1}, | |
127 | {-2176, 15242, 14, 0}, {-2186, 15256, 14, 1}, {-2189, 15270, 14, 1}, {-2194, 15284, 14, 0}, | |
128 | {-2201, 15298, 14, 1}, {-2207, 15312, 14, 0}, {-2214, 15326, 13, 1}, {-2225, 15339, 13, 1}, | |
129 | {-2227, 15352, 13, 0}, {-2233, 15365, 13, 1}, {-2239, 15378, 13, 0}, {-2245, 15391, 13, 1}, | |
130 | {-2253, 15404, 13, 0}, {-2262, 15417, 13, 0}, {-2265, 15430, 12, 1}, {-2271, 15442, 12, 0}, | |
131 | {-2277, 15454, 12, 1}, {-2284, 15466, 12, 0}, {-2291, 15478, 12, 1}, {-2300, 15490, 12, 1}, | |
132 | {-2304, 15502, 12, 0}, {-2309, 15514, 12, 1}, {-2316, 15526, 12, 0}, {-2322, 15538, 11, 1}, | |
133 | {-2330, 15549, 11, 0}, {-2338, 15560, 11, 0}, {-2342, 15571, 11, 1}, {-2348, 15582, 11, 0}, | |
134 | {-2354, 15593, 11, 1}, {-2361, 15604, 11, 0}, {-2369, 15615, 11, 1}, {-2376, 15626, 10, 1}, | |
135 | {-2381, 15636, 10, 0}, {-2387, 15646, 10, 1}, {-2393, 15656, 10, 0}, {-2400, 15666, 10, 1}, | |
136 | {-2408, 15676, 10, 0}, {-2415, 15686, 10, 0}, {-2419, 15696, 10, 1}, {-2425, 15706, 10, 0}, | |
137 | {-2432, 15716, 9, 1}, {-2439, 15725, 9, 0}, {-2447, 15734, 9, 1}, {-2453, 15743, 9, 1}, | |
138 | {-2458, 15752, 9, 0}, {-2464, 15761, 9, 1}, {-2471, 15770, 9, 0}, {-2478, 15779, 9, 1}, | |
139 | {-2486, 15788, 8, 0}, {-2492, 15796, 8, 0}, {-2497, 15804, 8, 1}, {-2503, 15812, 8, 0}, | |
140 | {-2510, 15820, 8, 1}, {-2517, 15828, 8, 0}, {-2525, 15836, 8, 1}, {-2531, 15844, 8, 1}, | |
141 | {-2536, 15852, 8, 0}, {-2542, 15860, 7, 1}, {-2549, 15867, 7, 0}, {-2556, 15874, 7, 1}, | |
142 | {-2564, 15881, 7, 0}, {-2570, 15888, 7, 0}, {-2575, 15895, 7, 1}, {-2581, 15902, 7, 0}, | |
143 | {-2588, 15909, 7, 1}, {-2595, 15916, 7, 0}, {-2603, 15923, 6, 1}, {-2609, 15929, 6, 1}, | |
144 | {-2614, 15935, 6, 0}, {-2621, 15941, 6, 1}, {-2627, 15947, 6, 0}, {-2634, 15953, 6, 1}, | |
145 | {-2642, 15959, 6, 0}, {-2649, 15965, 6, 0}, {-2654, 15971, 5, 1}, {-2660, 15976, 5, 0}, | |
146 | {-2667, 15981, 5, 1}, {-2674, 15986, 5, 0}, {-2682, 15991, 5, 1}, {-2688, 15996, 5, 1}, | |
147 | {-2693, 16001, 5, 0}, {-2699, 16006, 5, 1}, {-2706, 16011, 5, 0}, {-2713, 16016, 4, 1}, | |
148 | {-2721, 16020, 4, 0}, {-2728, 16024, 4, 0}, {-2733, 16028, 4, 1}, {-2739, 16032, 4, 0}, | |
149 | {-2745, 16036, 4, 1}, {-2752, 16040, 4, 0}, {-2761, 16044, 4, 1}, {-2767, 16048, 3, 1}, | |
150 | {-2772, 16051, 3, 0}, {-2778, 16054, 3, 1}, {-2785, 16057, 3, 0}, {-2792, 16060, 3, 1}, | |
151 | {-2800, 16063, 3, 0}, {-2807, 16066, 3, 0}, {-2812, 16069, 3, 1}, {-2818, 16072, 3, 0}, | |
152 | {-2825, 16075, 2, 1}, {-2832, 16077, 2, 0}, {-2840, 16079, 2, 1}, {-2847, 16081, 2, 1}, | |
153 | {-2852, 16083, 2, 0}, {-2858, 16085, 2, 1}, {-2865, 16087, 2, 0}, {-2872, 16089, 2, 1}, | |
154 | {-2879, 16091, 1, 0}, {-2887, 16092, 1, 0}, {-2892, 16093, 1, 1}, {-2898, 16094, 1, 0}, | |
155 | {-2904, 16095, 1, 1}, {-2911, 16096, 1, 0}, {-2919, 16097, 1, 1}, {-2927, 16098, 1, 1}, | |
156 | }; | |
157 | ||
158 | const mp_limb_t arb_hypgeom_gamma_tab_limbs[] = { | |
159 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
160 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
161 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
162 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
163 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
164 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
165 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
166 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
167 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
168 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
169 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
170 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
171 | Z8(00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000) | |
172 | Z8(00000000,00000000,00000000,80000000,d44c6937,0c3f5be7,e0421838,31072b10) | |
173 | Z8(e1f3a067,f17903f4,7ec1b6d0,98bb22aa,ba5f3a57,9ad030aa,d8036214,1b32e5e8) | |
174 | Z8(512b3051,81ccae83,a8427633,81b5753e,2bce15a3,542e9f72,5a2b38e6,92bf5222) | |
175 | Z8(439cd03a,81c1a48e,b6612b78,1baf84db,37fb2817,e9cc3d17,5ad1f5c7,818bd307) | |
176 | Z8(fea32a67,4068bbca,c26e5421,b7a661e5,f5389130,7f18b93e,17fcc003,d0d62342) | |
177 | Z8(69ddf172,9f9c7ccc,9215f371,6223b2f0,b05e5b25,e528fdf1,6fe9554e,aea1c4bb) | |
178 | Z8(7031f9c0,af289048,744db679,c5d238d0,4f1b66c2,e11df242,d2238d8c,7c555302) | |
179 | Z8(13edf604,4c4d8c4f,5c40bf30,8e704b7c,65f004cc,2741e538,ee52e018,7db2db49) | |
180 | Z8(448f2a05,32fab2c7,d3ee591c,c083f22a,c9b31959,6fcaabcc,64b83989,03655949) | |
181 | Z8(31ced822,5a7bd469,e741e5d8,7cfde60e,e80567a4,8fc28658,63e6d09f,b54fe70e) | |
182 | Z8(ce3bea5d,961542a3,bd61c746,5e6ac2f0,82797722,3ec7c271,e62ff864,d2a1ea1d) | |
183 | Z8(b6b7b86f,0c09d4c8,7899aaae,8a96d156,154b36cf,dbe7bf38,cc86d733,58deb878) | |
184 | Z8(d74bafea,e43b4673,32135a08,1056ae91,621057d1,d0649ccb,03a9f0ee,8e4b59fa) | |
185 | Z8(709affbd,0c03df34,f65cc019,a1cecc3a,0152cb56,d1be3f81,7db0c7a4,93c467e3) | |
186 | Z8(8f1877ab,5c379a00,f9580af6,76b55cc4,f35f61ce,ef1c2900,294dca79,6885062b) | |
187 | Z8(021a094b,4756ca11,1a11d46e,04920c54,b41a7dfc,f0288d8a,2f09194b,14f2cd2a) | |
188 | Z8(83d8d9cf,690c95ad,8781a84d,cdb6fa0a,2302cf3a,c58aee6e,977add8d,db3059f0) | |
189 | Z8(19f9bd13,806423c3,8fbff045,2cffd33a,4ba3c3ef,1588a81e,182a865c,d4bad52a) | |
190 | Z8(6ff3e41b,59c80c6a,2359b8a7,55df6b32,5cf9734f,1388b48e,81ad3ffe,456e5d05) | |
191 | Z8(3956f4b4,698ca360,ad128bca,12c4585a,f72f5b25,8c2a1b45,5ec1b718,f1e5778b) | |
192 | Z8(af21a29d,a63ad266,e1674d69,1a937aac,7e92b6d0,a3b7721f,96f573ad,03525173) | |
193 | Z8(8002e7d8,6595d953,83a8e1e0,862a96a3,d8b597b8,9a1f90dd,0ade1e9e,09791289) | |
194 | Z8(812e6230,c51d77bb,135f63b9,725da3a8,5f42c8eb,803422ee,31d4b4c0,eb323ed6) | |
195 | Z8(dd941d01,4e335234,3f65391b,fa7cabd2,42fed427,e6f2cd93,08f7e03d,94ef0edb) | |
196 | Z8(d8eedaf9,30bc3e04,ba7acbaf,1af586d0,4a1e52bc,2d89f1e9,8f1a86ec,645ef92e) | |
197 | Z8(9ec407ed,d25818cf,c7473287,86f93595,edf114df,ec1ee8cf,e44ad789,5977a634) | |
198 | Z8(232bf00f,e15a6cbb,96dcd8c5,1e0a48ef,bcff260a,2d816c1d,d08fb45c,8ed05db9) | |
199 | Z8(bd611d64,c24856f3,57d16e75,a7e7a013,565580c5,909e6e1e,365bca4b,b95e7dbc) | |
200 | Z8(309115e1,856dde8e,a83da736,2d6cac75,714edf38,a1f3ff04,593c3b9e,791e06e8) | |
201 | Z8(859911dc,b7579e07,67a6c86d,233427d7,ff625deb,d2b87c32,faf32c0a,a18aec7a) | |
202 | Z8(3e7bcea8,3b920d0d,582e38c2,38594742,a4605c64,a6f5d49f,f60c0df7,1d8b96ba) | |
203 | Z8(532bac68,38bd9b08,94205465,c3478ad6,dae2519e,291e5de3,aff8e561,1b69edae) | |
204 | Z8(f78ca6c9,4786c982,bc0da507,930256fa,97fa264c,9325e453,f8be9c9f,d8913717) | |
205 | Z8(a3a4b94c,d424bb8f,84f82135,c56fc7e4,7b86b03e,8b11fcbe,9702df3c,d03a085a) | |
206 | Z8(22044511,fdbd1f91,1ce99bcb,be7783f9,38bb5e92,3e247510,8a82e06b,9e1f9306) | |
207 | Z8(30f90470,3378bb76,35174f52,00c4393a,4ebf5695,ac34dcbc,ae33cc14,3d794b9c) | |
208 | Z8(988a127b,8cb9a696,af813a36,4322ca0f,b6e6b7b9,e0bb7ea2,8c603663,9bf2daee) | |
209 | Z8(310e33ac,e5c9ce60,a293a76d,7c1e561f,9abff0db,2731a5a6,b829d246,047b6a05) | |
210 | Z8(043eb9c3,2273f947,21208155,b8d50305,f4b4d62a,6cda2bea,0e94d288,b1361145) | |
211 | Z8(69abc0cb,a9824b0e,d0377dba,09547d0d,3f0060e4,f8d3efe8,359777d7,89b4393c) | |
212 | Z8(b5a0bec2,dfc931dc,a9b55a20,1403ab71,9c84b042,a15a643c,13823e47,ac0af47d) | |
213 | Z8(e0642cde,1869cecf,717ccc7a,91b4eb03,fffd9154,834f5d81,36be40ce,9aa37f25) | |
214 | Z8(f86f8a67,51e24cc0,b60a3f15,f720b040,d82353fc,14d339de,e83d8700,51552cdc) | |
215 | Z8(fbe2f86c,e380d534,95cbba62,361a1523,e62be0f9,02053756,ce7a1475,f20dbdc1) | |
216 | Z8(9f32751d,ddfa310c,929b5b2e,1c97d15d,333ab386,b0bc2711,ef122799,5eecdc56) | |
217 | Z8(0b8c42d1,110ca5b6,6cfcda46,ca5f2ce8,862ee895,7cd9ea63,6de4bd45,73cd0446) | |
218 | Z8(0ff62ff2,ceb489b1,5ea0e2ec,0a84dfee,6c130226,5b095b0b,d4d5a198,33c4871b) | |
219 | Z8(4ad6da3d,7068516d,2c180a0a,d7f0a18f,671d0d1e,c68c2d88,3c07662b,69c9fcf8) | |
220 | Z8(0d37c0d9,5b4e086a,6d0b0000,babd4fd4,b0739e11,0b509a61,8d03d499,fe63031c) | |
221 | Z8(a54f47a8,fc60f9da,0a15abc8,de1146eb,6717e210,104e1c9d,321fd882,93acc37a) | |
222 | Z8(94336c18,6e146396,a4f1c553,eb7594cb,4bb48380,9fbc4857,9a8f9528,4171ba3f) | |
223 | Z8(2dab48ff,40854a9b,b1f527b9,dab9a53b,282c86ba,860906ab,f7cac3bd,58b5e567) | |
224 | Z8(7e632403,79e8932e,b8e2545a,85c569c0,5c7e176b,0beb919b,1d1cf655,821fd014) | |
225 | Z8(bb6b0d86,503b89b8,001b7660,b73265f9,bb596b64,acd16f79,08740560,c0b5dd3d) | |
226 | Z8(1ef84da1,d37fb09a,a1fdf2ef,aa891905,feece581,98b763c2,ba5ca445,b3d64aa7) | |
227 | Z8(0fd4e2a5,0972a12f,6aac09d6,98e5ee2a,a3745a94,7ba78b40,bbecd2f6,bc7b7024) | |
228 | Z8(98be1ae1,2911d234,c2569eb3,f57d6799,0327f952,b82ae4c6,270d7a73,dd839ec7) | |
229 | Z8(5c7c94c1,ec6a5b11,e817cf1b,020e7db2,904463b3,3a8fcebf,a3773246,e4d656c0) | |
230 | Z8(e7049c56,0020189c,8a673965,5b9323ab,558e48eb,d72712c7,3dc0f6fd,6cbffcd5) | |
231 | Z8(b079cd5b,6cb536d1,092176be,11092edd,13678662,aacf3c36,a2b1bed6,420070ce) | |
232 | Z8(3754b9ab,cd6a6ef1,b9738d6e,f26d4c47,529b13f4,90e40980,5bb6b5ce,9023077e) | |
233 | Z8(15aef90f,3955943c,e76d045a,ae63c7f2,400c9a60,51a613da,0add4e25,c2b42db0) | |
234 | Z8(6dadaf3e,be977b61,9f5049ba,1ea4af96,789d0620,df9c4243,425a08ac,c110359c) | |
235 | Z8(ad0b16d5,39e5a5c9,4831dbf4,cb823de9,ec66c0cf,d356669c,787e18d7,1769cf66) | |
236 | Z8(e683edc7,de95560a,987e12bd,0aac72ab,063c8c94,85de1f4f,ad06066c,35eef6d5) | |
237 | Z8(bbfcad39,42075aeb,de6827de,8d795ba8,6c1a14ff,ca0c1834,9297ffe5,fec1c959) | |
238 | Z8(3ac35dcc,eb9ec7d8,fd9a3f9f,78f4f977,9310b40b,a5d22363,18040b7f,2968ad39) | |
239 | Z8(5b6a43ee,e04c83b2,10646d87,b1fd891b,8caca42e,1b404838,1a0493df,acd7881e) | |
240 | Z8(3e6f60ed,3bb7330c,e901cb17,d36142cf,0d2ea48b,6ab5ee30,ae785c4f,73b0fcd0) | |
241 | Z8(90ae8a01,c7c0b55f,c28b572f,c1858400,6a0fab0e,2839fbfa,216fdab8,07db2b53) | |
242 | Z8(e5b926e1,6dc36d7f,b9ee08ec,2611dd53,963d2452,6cdb1158,27c7af28,0875bca6) | |
243 | Z8(984ff2af,604dbba7,4a820dd7,d3aa0f13,dd72e299,a9f9f273,bf8d1eca,dcf91bf8) | |
244 | Z8(23b2824e,0e31bd46,d247fb0b,09169797,3b285547,abc74ef1,cdd6da23,58297ccb) | |
245 | Z8(8d5ded39,a688b400,d60bce25,b55eff49,c50060ca,f6771ed6,32c5d186,12db0465) | |
246 | Z8(ccd08fac,7b79d989,5e78c1a6,d2a6d559,6419d6d1,d4e1026f,b0cab006,dc4c7db5) | |
247 | Z8(63f4b360,5e9b3db1,124a4299,bfe4e9a0,98103075,182268bc,0d16c2e5,8bcc2984) | |
248 | Z8(3e8191b3,aaf37c4d,ad12bc60,88079562,cdcfdc07,fd313971,338f9c96,4112a3ed) | |
249 | Z8(bc61a309,61d3c3e8,58d23a00,5807a6f1,9ba8bd61,b3c3d210,b68a49d8,b2185343) | |
250 | Z8(5e2c9a26,62d81332,c96257e3,60b9e78a,5e6d3f05,780df480,a8ba60d6,148d3612) | |
251 | Z8(8f195d8a,994cc75d,03bddb2e,32eda7b9,60b65fd3,bda99c32,fc5f362b,b868103d) | |
252 | Z8(bc7158db,48be4222,042e74d6,a225b4d6,b3af63d8,90e7687f,afb99a05,1f3ac55f) | |
253 | Z8(73539adc,b79e8182,41f10a71,9da57942,8c2e8516,49af9cff,3a6d761f,cf7beb09) | |
254 | Z8(5132eb17,e8f45072,de062054,51a7841f,1370dfc1,bd0ef793,5b837f7d,c508f8ec) | |
255 | Z8(a97d388d,2259ed32,6f1f7776,e0f7232a,2ecc9dec,7e1e9375,9717da37,33b4c61f) | |
256 | Z8(29f483b3,84cf5384,97a76481,17431cd3,533f7e0c,3f577698,fb727c05,60382a7b) | |
257 | Z8(50344115,d7316c03,2d83b31b,2e62fcba,1b8b106b,519d508d,11a47c48,5169ce92) | |
258 | Z8(29382723,260d6507,c20fbdf5,e33a3000,95e4b3c0,5817a304,892c9f22,9fda369d) | |
259 | Z8(1ffcb718,41be5a02,230a86e7,bfe7828e,7af6b3e0,f043722a,4783486e,2a0f82da) | |
260 | Z8(2db4313a,334bc6ee,e57d1f29,861653da,088e4428,bd150f74,1c88bbbc,9467ac30) | |
261 | Z8(d9b5f686,d7eb3477,1e55669e,ac5a7da4,624a73c9,e356003b,9f781f5d,cade496c) | |
262 | Z8(12bfa4af,9492ba7d,4dc1bb27,ebe4445e,2663befe,95e55fec,cae4902a,c7e28bbd) | |
263 | Z8(8b7250c1,00646f4a,77fcc751,5ebb615b,b2c655fe,689bca3f,59ca5dbd,0a3cd2b2) | |
264 | Z8(5e5d4ab0,f31d843f,aff5c48d,77a9699c,19e0eff1,a0f5a34f,3c6938e6,e01f5da7) | |
265 | Z8(88a2107a,034c5609,758c244d,bf277bce,e74ad959,5c0111c2,8f991ede,ac0cd025) | |
266 | Z8(e44cfe84,743ebcef,01f16923,6807e2e3,dc1e1318,d1d69dd3,fb058cad,ec8ce293) | |
267 | Z8(824cff8a,e3f1815f,ef92e17e,9d460c8a,a5441529,de0690f4,a2ea416d,820db6ac) | |
268 | Z8(561901f5,2fbc5992,c291526d,ffe3e781,04b745ec,37a21341,31ce6e2c,5887dd80) | |
269 | Z8(1b923790,1b9ec225,ce794fcf,393e1e10,1bfd4673,f7b73eea,c6b54e79,090de562) | |
270 | Z8(619958da,9fa99c16,a36b3064,758a34f6,2fa22d00,27df471c,1ccca829,f900de36) | |
271 | Z8(0a5dacd0,5a5ed6b7,c86f1ef8,c5e96904,f077ae83,76759f33,3b51736b,c19b532b) | |
272 | Z8(2288f908,2836525c,c96c7f91,c51c84a9,759f02dc,307f8cb3,6a651062,376d5a4f) | |
273 | Z8(69445ee6,b2aca171,77579525,e8fbe8aa,6567136b,457f0c30,9521426f,bf2961c8) | |
274 | Z8(3420b417,9229d3b8,3a0c5db6,783d7d76,74f987d7,7d22bf66,1147ef5f,80d1a5f1) | |
275 | Z8(bd8d2d69,8ed8f88f,132a0ffa,cf82f086,f9d2d4a7,e2c315b7,c27737fe,922d095b) | |
276 | Z8(177d8efa,2ac3ae70,a919ddb7,22a3efdb,601bb55d,95b5a93d,276b2be7,74ab206b) | |
277 | Z8(700db34d,ab76a034,043444a2,78a261df,9c6a0695,010f2cfc,234a2f61,cc5f0a26) | |
278 | Z8(3d2d949a,0063b274,7fc901f4,0b1d8ab6,3464aa67,65ecd4d1,2dd22196,3577bc51) | |
279 | Z8(17911e3c,f81b118e,81ddf8e3,cba8cd28,05b73bde,613a4285,9bfe7718,eac597f7) | |
280 | Z8(88e959c6,6edba835,1d153de9,98b88967,ba98774a,875f1318,9c6bf8b9,8a411b3a) | |
281 | Z8(386c1c19,ee237372,a2804472,0a3bc950,6ae598ca,c07f1177,dff9e1bf,7f5789c8) | |
282 | Z8(8b9989d9,6bea06c9,852aa3ce,14bb28ca,090682cd,f1679b5a,1d0ed549,8297c3e6) | |
283 | Z8(b3035811,1666f2d2,2b44d2ef,5616461e,eecfb86d,0760e0ed,4ca94bba,4913452f) | |
284 | Z8(73ecf00c,8b1e7224,06ccbb31,632b5b81,4f31a7bb,982505ae,381c25dd,9d8de329) | |
285 | Z8(514b33ec,6ea2a87f,010d9244,1f1e8f49,87b44cb8,1f35d5eb,e0362bac,b4786abf) | |
286 | Z8(0c8040b3,e80c449d,d4708327,57de11f9,258652e9,138817ad,b56dea4d,2e1ef1e2) | |
287 | Z8(6ce9b487,05b86ca9,39c2f841,dd5e1d18,fede1321,c9bfdf75,d8418eb7,082cd32b) | |
288 | Z8(6e5060e8,a2306f73,288c9835,4cd9f820,be636232,c19e2458,70661cc3,c904f3c2) | |
289 | Z8(029a9a0e,48cb8fc1,c24e7114,d57fc6a8,93b97c7f,f5570290,5e1c0abf,692ef2c6) | |
290 | Z8(773383e8,8583904c,975c80ef,97806c4f,0ae5e341,ce231541,a03cc804,78cf3b15) | |
291 | Z8(9687782a,51fec398,53bbc32f,5b54b2f8,a65b4201,b4463e2b,d2fd2a7b,ac1fb2ee) | |
292 | Z8(963e8b55,18fac703,3752d7aa,4acf480b,b2f5710d,71387366,3c303f3f,d18da812) | |
293 | Z8(c8ed8f57,bef3be7f,879d0688,6b46c976,8691b6ed,7c04703c,8ab1e74c,e1b27f37) | |
294 | Z8(71904391,ca30d70d,3dec9233,08643fc4,01b9a90f,2fab53f3,707e8941,b50a13de) | |
295 | Z8(aeb7c641,7f9498aa,d4cfb64e,422ef7fb,633ca9a8,cdc4b472,2496b512,8240985b) | |
296 | Z8(e8141cb8,c43fd3e0,ccf64e0c,8a34b11d,a9c12594,9dbb2baf,55c526b6,31348935) | |
297 | Z8(be4b8ecb,80eb7ec4,8b4c1f4c,484e9a70,48a53726,91f27187,fb74b71b,bffa0717) | |
298 | Z8(ae8ba841,adb71820,0ab1be1a,096182ea,67801cf3,1fe10129,b94933da,17cf4a23) | |
299 | Z8(52344e75,e1185265,4170bcfb,5cb3ea32,b274138a,dbdc048b,840b9be0,ca168459) | |
300 | Z8(2e80d8c8,b81f3f00,3b28de86,2ff2b406,887be281,b39d68cc,703e46f2,3b074329) | |
301 | Z8(8fe359ae,210b80ee,649154db,53824836,37fb02b9,4b4da73e,36883c2e,04610819) | |
302 | Z8(ee06b9d8,cdcf9547,a7b240ed,85e48d48,2c9089bc,cafcaf7e,babbc550,853a2b46) | |
303 | Z8(a79a10a7,81161907,3501846b,e0740aba,f47b540a,6ff1ac62,62177184,4f38190c) | |
304 | Z8(e7669481,122c4170,21fe9a28,673e3a30,26f506b4,eb519c43,6d3b6cc0,3703e87e) | |
305 | Z8(9aa57986,50548ae0,9a1b822b,a1046ef8,dac9c8ae,190a1b13,9eeb9e4e,580d16fa) | |
306 | Z8(accbfae6,fd07d290,c1c2fe74,16a22d6c,552dc83b,0814ad95,27b1abb2,a4b18b2b) | |
307 | Z8(cdb927f8,d83432fa,cfce8d3c,86453c66,417db143,c8e968fa,4acc61a2,da2c6db7) | |
308 | Z8(d1acbaaa,f4b569cd,f4276425,4a3dc2d3,58fdcc4d,4b951b14,4798f56d,51ac9e88) | |
309 | Z8(ee452e6b,e563f90e,77f58fb3,0d485708,033201e5,a5422c79,8574fb5a,dbb86fb3) | |
310 | Z8(d90a5716,6a72590c,9e9d9649,e62152b8,8b6a6b0d,ffe7525f,1dc2ae11,93618386) | |
311 | Z8(c3665344,b58aa6c6,53452496,04085f2d,41fb800a,c2399a66,60bd1d29,8513293e) | |
312 | Z8(28bf7140,fb024a7d,8ffcc437,bc8d6296,a2dc0a23,87874e30,2865b7ce,a80a7c8a) | |
313 | Z8(018b5b16,7f742b36,d9174f75,4e392763,8b3a1edd,fb46a158,14dedff6,0d2b8cef) | |
314 | Z8(b8f343cf,dc75df89,1fd2365c,98f25a77,a3653233,ea13eb11,e3689ee5,81cefe21) | |
315 | Z8(402445a8,6a36a885,1a4fd92f,dec1073b,131223b1,7f5353a4,862fe775,5650e6c9) | |
316 | Z8(35b2c2c8,3e598b22,68d71601,0c4f62f9,14944a93,d61a9765,8d10ac4b,2df4519c) | |
317 | Z8(9cf023be,37115c61,51859791,12690855,df8e5902,4add3e25,e0991538,322aba35) | |
318 | Z8(59e4bf5a,f2c4bf07,f7269612,bc633b57,ce3d177a,a31e9613,ba4d4691,2c90c164) | |
319 | Z8(b7ed9d5b,f452f8cf,2f6de019,eb27e870,37f0c3ed,80e8eefa,5c160015,2c1bc14d) | |
320 | Z8(9fb44b73,ddbbda77,8468170a,a78edf4e,34b827da,92173afe,3f55efed,a8e7457a) | |
321 | Z8(d6c7453a,31724824,f6cd81c1,64c046d1,26b99c14,cf3d900f,80bb424a,74472a60) | |
322 | Z8(a0ec0dbf,d932ee71,c34c44c5,a5648343,2d4cde24,a036ddf2,bd64d46d,ad1485c0) | |
323 | Z8(979cfe09,5dbef230,3674f69c,9c04754c,021306de,59e38f14,65a6caef,1fb9ec0e) | |
324 | Z8(99ee65de,96f8c46f,ae4b994b,0053aaeb,17593b83,3cc24c67,fe54e8fe,0ef07c5e) | |
325 | Z8(d85c28ca,7bb4c14f,40b8f013,4adf0cdc,2e1a3420,c8034e32,e193ee3f,95fbda7e) | |
326 | Z8(a2131cae,abfd1059,e645550a,58cec677,80e88d62,d610483c,da790950,08cdba6b) | |
327 | Z8(45a70085,b7c5cdeb,32d258a2,474c4555,c1fb8f03,468cbf8c,92adceb3,1b22809c) | |
328 | Z8(a1cb3de8,567bf625,74d93b0e,79de52d9,2f9c9c45,262cef5a,6197f010,825906e9) | |
329 | Z8(5af9aec1,bcd99b48,97118482,93e09059,4553d04b,b521706f,c174e809,65af81c6) | |
330 | Z8(3946a98e,94675d45,ccb143f8,cc2c969c,553fb20e,f6c19fb6,d633f4f7,402c4653) | |
331 | Z8(acb42b76,9e8ef8c9,10dc994d,a461b151,aaf44049,016c6405,23f8d36a,91d11b0b) | |
332 | Z8(177dddb7,07a086ee,4e90cac0,31d61bbf,a198fe81,db06fb79,7de6ae26,2ccfdec2) | |
333 | Z8(93b48254,a4882e9b,18dc91cc,58912581,06503f14,3caa142f,8c3903ca,87cf94f9) | |
334 | Z8(dc7ccb6c,776ab160,1a7dd901,a7d6a0fe,7b0668e5,883f3dd8,ea1c7b18,6715bf65) | |
335 | Z8(21456aab,3339d49a,70055fa7,32db82bd,9509b69b,65ce2a6f,5b1930ef,e426137f) | |
336 | Z8(67fdedd2,b1e9e4b9,7551caa4,9b33ef04,54267c98,042c6ca5,db5aa9d9,9c38599c) | |
337 | Z8(974b7017,58003677,9ee00b81,c978c57c,4c530300,1f9b560e,df0e4b3f,cff707cd) | |
338 | Z8(0bc2656f,bc23f982,a74f12aa,849aac59,c45287b7,80a580ed,c94b12b1,e843a996) | |
339 | Z8(530a6887,3029bdbc,53fb1e2d,1633a4d8,919f7c6d,bc153c72,9c4adabc,6102e7aa) | |
340 | Z8(35e6dd8b,d459f2b5,e9e8def8,6ac8599e,15bff119,e196b789,a8115e0c,58d26680) | |
341 | Z8(501717f4,f148bf97,f0b2ee7e,d0419128,924abf62,06b98490,c1677e10,dc0b7352) | |
342 | Z8(e818c113,23455571,f62e1479,70ec1c15,de72dede,b82dc5f0,ceecf3a1,e9b26631) | |
343 | Z8(60cbc58d,3afa494b,f85e2f7f,fcb4fd5b,08b62d40,7669dd3f,dd4abdab,0bababcc) | |
344 | Z8(4cefd2f0,ef33c8c6,d7d3be3c,362b4fe7,bc56e6d2,d37c63a3,41cad63e,d66c55b0) | |
345 | Z8(2862ac4f,11982f5a,f20f014d,da7bba60,b2206dbb,1ca8d84b,fe2e2dd1,67776002) | |
346 | Z8(ca270e4f,cec415a9,4636d5bc,385c3f9f,04ab7b60,02e423ee,7675749e,f8cfa777) | |
347 | Z8(38ba5e2d,4fe8b9f0,089cf725,72d97c3e,4e64f0b8,f6ffcb7e,e06f1640,981284ed) | |
348 | Z8(2a545858,e3cfa2aa,4b087f06,5a0510b5,a2dca245,0c9d6ee9,3ffbbd91,ffe2a1b1) | |
349 | Z8(8b3ae0e9,53b7fdfb,86183f63,b14a642d,2a369ab4,0e50b3ec,2415000b,4a20abae) | |
350 | Z8(674a4cb0,1df9e334,ab3d1e52,1b6799ad,09010604,3f271889,59b1ba9c,5fe6bcd2) | |
351 | Z8(a27f64d9,6f10d68f,09a53e53,62a051a5,27d0d7a7,696313e6,fc92fa5c,9073b402) | |
352 | Z8(1661d23c,703b7465,ba6a85bf,9a2ce73b,4f107f69,fe60e39b,6c557d40,aef1e5fc) | |
353 | Z8(84c25fa4,3c47d9ef,c4d2aeee,dad6c61f,a268b689,420f7029,37489a25,4e121ed4) | |
354 | Z8(3b234dde,7044587d,782a3162,2e2fcb01,592ddc10,f3e81a10,41c115f2,5579186b) | |
355 | Z8(e5a8f47b,849fa3ef,855f1fd1,f1bac200,5e343dff,2e2cfcdd,78a07c65,a621484f) | |
356 | Z8(7eb9cdf2,e518f6b1,8997e991,d9400b97,ebfd5f50,9486f827,5c379f79,321aace2) | |
357 | Z8(838f0ede,a81c65ed,79a8db09,ba62c507,04664879,af8b0f1b,850e54ce,37a2f13f) | |
358 | Z8(aa48df62,81295f39,ebae09a8,4e952a58,220a67f5,a0c2c0a0,274ba938,bc88fb06) | |
359 | Z8(8d09c8b4,e2d161af,bc464f11,fbf41bea,e9d636d4,bc9d598d,3966d13e,f101a4f1) | |
360 | Z8(4fa2bf1a,0d5c5a9d,2dec2065,6a9ed9e4,6f4f606f,3a10a560,49bcd39b,9375b64f) | |
361 | Z8(e809707c,9722ef2c,6112e8e8,dccc3333,b8ad8128,5562275e,e38df4ec,4c01473f) | |
362 | Z8(071045f3,3554d086,b574e03d,3dcb7c41,a2e64dac,94add171,68ff330e,bd020296) | |
363 | Z8(96d876bb,15a8f054,63a89867,9407cd41,b2b9003c,14042357,8f229ffd,97669e30) | |
364 | Z8(d4198f64,16f3982a,86d73878,f22f00e4,d039682a,9226c81d,01237758,82732822) | |
365 | Z8(3e469d18,a83fe6b8,bfb68386,1146d412,3a03a104,17f69581,5c1d7f2f,acc6a152) | |
366 | Z8(c047dc32,16e9ae91,e87a7325,66547d69,1b75e157,8e2e9934,43e3d3ec,1ed389f3) | |
367 | Z8(d5247431,4329ba83,04716c3f,192f2d4c,69eef066,a9b45d84,3d480095,573e9ee0) | |
368 | Z8(2e166f31,370e6f8d,3135f416,eca10709,aa412112,9ab920c9,71cfc7d5,2ac723eb) | |
369 | Z8(29fe827f,3a867440,3b8c4d76,d3fbcaf9,ee930bb1,3c6a2051,eeeae4d1,3df76f22) | |
370 | Z8(724e00fc,00a9d8de,2dbe8921,ebe5189e,0957e03b,6c4f34ce,0f3b7e37,28a7d4c7) | |
371 | Z8(6ec9a92e,d28fee8e,9ed145ea,c52d8614,7718c012,74104ed1,f5670614,0fbafea6) | |
372 | Z8(f23a8236,d6d715d1,36777389,c1b2d26d,c851fe2c,db9c753c,b947c9f1,b5b1fcdc) | |
373 | Z8(d3cbec78,a1742a3d,e097c05b,9f61f15e,0c9d32f9,746877b8,8172fec4,d5503879) | |
374 | Z8(7d5b2cb5,aeec3bd6,65b6e9e9,21c575eb,3419dc08,21cc6fd9,16b14565,d225bdd1) | |
375 | Z8(5245ef31,be9aa946,d2238972,34d44cbe,2caaac5d,8ab539bc,d85a0026,9e25b566) | |
376 | Z8(7a778618,39446cbd,9da3b989,bac0350c,79897b42,a0a08142,afbfcfdc,6af2b036) | |
377 | Z8(5c6fffcd,2a62f9ad,bcfe2140,0b2546d7,ef60b780,6511329e,d52a28ed,edb0e71f) | |
378 | Z8(07293273,d040016e,36cdb0e1,6e9155cd,979ed26b,7c887fd6,73f34935,cddda157) | |
379 | Z8(72aa1cb7,2614012b,47048167,5eee09cb,576a8376,30a008e1,7fc74a1e,fce74637) | |
380 | Z8(7e803728,63bf97e0,528bc7cf,72fdbba3,3100286f,313c56a3,e749f324,fec4fca3) | |
381 | Z8(0523aa81,6aba7a62,19d8698b,341f98c8,651cb191,aafef9a1,935aad11,2931c44d) | |
382 | Z8(761a8d46,e572fe69,f9d7aaaf,12bbe393,ec255b65,ee571552,8e61e2bb,14d76b21) | |
383 | Z8(52c396c6,09cc2dca,7c3486ed,e1c3fb0a,aa79c85f,202d0adf,6573e03e,d2748ad5) | |
384 | Z8(98f5609c,86cb914f,590ba3ee,a1ecdc59,84bd1dbb,6a01d520,8df603d7,8f433e3c) | |
385 | Z8(997a6d8b,6b887aac,cd9ce1df,68f56761,74fa1fda,bf11b00e,fab51efe,3bd457a7) | |
386 | Z8(85cb8f08,8a0a84a5,4f120fa9,94053818,7e8f9e25,31ecdf9a,ba526855,a1c8b028) | |
387 | Z8(3bbf2854,9e425486,ccf010f9,a5d3fd83,0f8da642,6d6d05c4,48359ff5,4447e34f) | |
388 | Z8(6e76d1e0,eafbbf41,c2199fd9,abde1fe1,d9e03b78,59db812d,5fc7d1e8,32da60a3) | |
389 | Z8(9b8443ae,a9bd8478,6d4fefa5,4323da20,3328f276,bed8394f,a3aa20a5,cc86ee7b) | |
390 | Z8(7806d88e,4e7c527a,ff879a04,fabc36d6,c22a64e3,f40196be,a410aa71,a74d44b3) | |
391 | Z8(3d337cac,472d1a34,b86b74dd,dd559082,b62f2138,ae33ae97,d0fe7495,8b7e43cf) | |
392 | Z8(b560a3ec,db9c77c4,aa93b59b,a2b2b853,86c1d87c,0825997c,1ff09480,0e225e25) | |
393 | Z8(bf98dfbb,0cd3c494,39fda330,c47735b4,68b3e92b,677c8e94,fc363ba2,87304eae) | |
394 | Z8(a5c93f82,5f08e819,05b85120,cc6ddff7,422d6d85,2ae06a4d,3dcdda1a,dae20c69) | |
395 | Z8(0473eb14,11489cc4,c6255040,2eff173d,81b45c4d,cec02831,9ed865de,8cb817ff) | |
396 | Z8(4105feec,4a879c90,cb9d46a2,6b16ca71,4ca330d7,c6b5c1d3,4719ee8d,4398c456) | |
397 | Z8(319d33ee,ef465d0e,72db532e,935d0b76,ef428db0,5dcb4f67,67a75077,45a9b1a8) | |
398 | Z8(0f74b1bf,2aff0faf,d6aa7d70,c7a52b42,d9daac7e,058efa80,e814c224,33038a03) | |
399 | Z8(cdc08abf,7bec9c36,c35059cc,b2e577b6,bdf5fe89,c5089a06,ee56dfd2,fa65579e) | |
400 | Z8(11bdca8e,b3471cb3,34112a78,7b5463b3,8e9f87c0,3f000f04,b124e76f,b4c0188f) | |
401 | Z8(ba5338e7,81b1f949,362e5a55,6aeb2772,3897ffde,89819c39,51c47be3,a25a676e) | |
402 | Z8(add51fff,1f3802e7,9a59711b,35287ebd,9ca20b8f,6a55bd83,b7edbb2d,c36191fa) | |
403 | Z8(2ac38a26,ce8bd81d,b955639e,80c23e1a,f59538fc,0df32298,e566300e,9470fca0) | |
404 | Z8(50c77d4a,ab9237a6,dd5b2d90,8042171e,e4d9d54e,127192b9,9afee7b2,1f881e78) | |
405 | Z8(dc1aad62,0f8dea33,9947d8c7,d84cbdbd,fc82fad1,1e9a850e,e1c08b30,7efbc0b3) | |
406 | Z8(83fac85d,0cfe9492,5a60afb3,5e917e15,c7e2c0a6,b43a3fc9,6e9992a6,26a40dcc) | |
407 | Z8(c0b6cd7c,dc29d874,490a9691,d1b2fbcb,70822fcf,ebdbb8df,0f0de925,b446cd5c) | |
408 | Z8(0ba7b0d9,15f53fec,11ac20d6,ea6ee286,c642e10e,458d7ad4,fc9513d6,4d24a8b3) | |
409 | Z8(afc14710,a256fe37,ab59aa8d,9dc7de22,f90a86bd,71456d41,59b02d27,9b6a0762) | |
410 | Z8(c3b77fad,f18820f7,b60ea211,e4c2d9b4,4c34997b,30d84003,ec1313f5,3e284292) | |
411 | Z8(e164928f,ed7217e7,50f9b146,060e3735,1ae6671c,4c2b80ab,ce6c5cf7,6154f916) | |
412 | Z8(cb174b1d,e8a2c804,9e8c3d39,1daa1f0f,fdf88c8c,ed06d60d,b8beb9ec,403d3acd) | |
413 | Z8(1452b436,82281f9e,c7264052,47c41f11,e06fbeca,af85e71b,794a9d2a,3dccc2c3) | |
414 | Z8(c0d12673,6992dcf3,f3f5a85d,fe4c77ec,8a3e243c,819b63a1,6ca458b4,5f316fb5) | |
415 | Z8(9563b603,bf7d3839,0c30362f,e573b3ae,9e9a2d10,e5a4ec10,4b36da3d,cec745a6) | |
416 | Z8(8c156914,ed81e976,d54665e5,2fe201aa,b07dcc44,e395b974,5457ea19,4412a7f4) | |
417 | Z8(dc99c22a,063a2695,c8ecf1fa,ddea54a8,69164be2,19f9c4fe,78efcf3a,248e6dde) | |
418 | Z8(babb2635,725a218d,83ad02f8,be9a51e4,37f40376,354ce094,fe653d9d,333ac2f2) | |
419 | Z8(d6fc9c3f,7ad92d4e,56af163f,7b65a8e4,0251999f,6142d49e,78c910f2,b269591b) | |
420 | Z8(6530bf38,334e2f52,7920014a,0371ba95,915e2b0f,f6da9411,f437ceef,c3242664) | |
421 | Z8(13120af5,45cdfe4a,34df4804,4fa5caef,031edb3a,c3a764d3,535f37a2,037ce182) | |
422 | Z8(7a774777,077149d2,6c8b0f61,c613e457,446a5195,3fb56ddf,4285f9bb,38119391) | |
423 | Z8(593266a7,0f4e9fe3,2e9865e0,fd99933f,aba19d5b,dd6484e7,8e09073d,826986cc) | |
424 | Z8(bd556e67,85ea82da,95d0c141,b27d0147,b60f0103,3e2e5fe4,5536b7ac,e7b5ee82) | |
425 | Z8(8d1f2e1c,c8c72d66,35c578a4,b940d44a,09c7a3f6,dba58117,6453dd1d,56947615) | |
426 | Z8(bb5e0d83,57d0934b,2c565994,53960d0d,a7225f5c,242e456b,5374557c,6e0a75ac) | |
427 | Z8(61990bc4,75908e5d,8ee49443,245cdcfc,b6bacb97,ecfa87b7,1abda1fa,6fa185df) | |
428 | Z8(a0f4e7ff,b6b7b3d1,def531ce,c0b0146e,7e71c665,6b19f0b7,d7833a2d,88e832df) | |
429 | Z8(bf364bdb,255cf0ad,a6dc43b1,9f4957a7,8068ba08,62043a04,3ec023b9,6cc8e699) | |
430 | Z8(f29d9fef,be8e422b,03b78383,01d7d7d4,319da696,e1bac4d7,644d9a9b,524064a6) | |
431 | Z8(51bcc378,d3ccd8e7,91a18352,56f88cae,6b67ff9f,9ccfe66c,54079417,03d802f9) | |
432 | Z8(0fb6ec2d,64c8ac2a,0e3a81ec,38183b05,67c509c5,268ab93b,e1422f36,5859d7f7) | |
433 | Z8(0333e55f,2b332493,cfc57410,9c00803a,4490b329,a69506a8,3c7c8005,2cc472d7) | |
434 | Z8(610a2a54,9e03eaca,ee446427,63469aee,8d9eb2cc,4815db52,dfb2a4b3,5da5234a) | |
435 | Z8(2fa81c4f,5b93a4f7,4981205e,25fa87be,655790e5,74250d4d,290d062f,ca17eaf1) | |
436 | Z8(ad76a0cf,753feb13,86b3fa5a,60cd9e6e,a1784e20,58ad488c,1e777ea7,f19e5afb) | |
437 | Z8(5f44e128,7a6c1d69,282c8c0e,85ef3b4f,3d8e10b9,2978a42c,7d520e68,3a22ac5c) | |
438 | Z8(16787a6e,a913fc9a,8b2b0900,e6942d2d,0485c40b,20c94470,efa45bfd,2fbe9e68) | |
439 | Z8(e0c16af2,0abbf073,f5d6bf94,6cfc6395,60b6b19a,65d1bf29,7812e263,81724f15) | |
440 | Z8(d6dd4be4,acc8e4e1,040bf9ca,6aa87c48,752b13c9,6e207697,64f97aa7,49bad747) | |
441 | Z8(e318856a,362bb7f6,55fb34e1,257f1def,828fe68b,fef81f03,f1a795cb,60f9c568) | |
442 | Z8(89fa0414,333c5e6f,651fd552,8211dd64,e4120a56,6d264133,74c9a54b,80bb2305) | |
443 | Z8(5b11cb97,59c9165d,1f65011c,0e2b72e3,9d167ab0,db9b4729,b1eeecd2,6af5bf0c) | |
444 | Z8(2f9605e5,a80fbea1,81ad2f63,5bcfaaa5,4c7f5af0,dabb0f5a,c88b926c,0a4289cb) | |
445 | Z8(1edc041d,8196331b,887a104d,4ad5ff75,e840ed15,972576ef,08ddae5a,c1d5ae3a) | |
446 | Z8(924f1d81,35628452,ade4432f,edaa4083,34c0eabb,d04ea2e7,e4f06e04,a73c9800) | |
447 | Z8(7de7648f,6fabc0da,6c9f0187,11cdcc1d,a44032e9,4edd46a2,eefda105,0d6f2b04) | |
448 | Z8(09348209,3a8e2c0f,f04e3e80,61016297,6af1ebb0,69753a6b,6113e8a7,86869ec1) | |
449 | Z8(02c322ee,fc64bb48,c24a72d0,4ce86d0e,4bf84854,65d6915d,95441441,b545c9b0) | |
450 | Z8(e1c0d8d9,11ca9b5a,dcc771a8,952181ea,d8be314b,680754e2,5fe634ef,42fd8083) | |
451 | Z8(b6c21561,8a33a328,a2fc4672,7caace45,f7de5cbf,c2b5d4f0,16e52e07,cb4dd2f6) | |
452 | Z8(0a3d726b,44150391,dba4f2c1,c1c375e5,79b5f27e,38f707f6,46f10dd6,99bc3b62) | |
453 | Z8(928e3376,279e47a7,84004249,5cc33ddc,2a387cf6,eb470539,c186d2c4,a3bc8f5a) | |
454 | Z8(fd9f40d5,21219b40,39f70763,813cddb0,d598fe1e,d7cd052c,ce05866e,4d1c71e9) | |
455 | Z8(3ffeb8b3,ce3bdcd2,aa26d3cc,38b667c6,ddba9233,f6862a8b,91e681c8,8f900a89) | |
456 | Z8(819ad4a5,a31e663c,027b8001,4cf5014b,18ec47b1,898a2c81,60f7420d,b22f1f01) | |
457 | Z8(64081ef5,c5677ffc,cccaa2b9,49506dbf,c83ab954,aa305a3d,7d5f2ac9,6fa5ee04) | |
458 | Z8(bd00a01f,a38d9852,485d1cfd,63893e13,3260eb86,2624de1f,970c74b2,3bc14e6f) | |
459 | Z8(26d4fe5c,162c495a,335bc7fa,085f62c7,ffa94d1b,2884be51,8affe4ef,2b9e4a10) | |
460 | Z8(8ce98941,005461ea,8a2c516e,183127c3,0b011936,35c18ee6,e40abee9,6df3bb64) | |
461 | Z8(0931b7eb,47a92fa0,9b449153,6de1b799,612dd296,a05f104f,30d0997d,509835f4) | |
462 | Z8(83d064b1,ba3062d8,b3fbbe80,0284e29c,2fee0176,d4d00d0f,3d204abf,e2db2124) | |
463 | Z8(517c73b4,0a0ba981,f3aae28c,cb73f073,aaf5d0da,b87390ff,d4f55752,a06f9130) | |
464 | Z8(71a1cab5,46645a6d,055c8cde,cc8cd986,70807b57,05c938f9,a6f907c7,18351486) | |
465 | Z8(d28e2d06,17a03091,b46824d3,04826338,f080559a,83a48684,29a9caa5,8fe94a8f) | |
466 | Z8(1f64c387,549534ad,0cacf352,1a7960a9,84c40816,35ef8038,e198faf2,8cd4749a) | |
467 | Z8(3fc35705,b4456a74,3aaf0be5,cdd96a83,d31ae6e2,0b4b1e1b,8f7bfb45,fa65c53f) | |
468 | Z8(506babf1,72b176c7,8b6d5eae,da74bb88,4854ccd2,da0aab69,1087d023,88272d7e) | |
469 | Z8(7f9f6a64,2a90da41,2d7373bd,b965c475,89970ec2,35b4d313,a2cda40b,22f36ed8) | |
470 | Z8(00fd6841,a0782276,09fe0f88,9196df7a,9ab4a758,9c94f271,e3be5439,e9f0f7a2) | |
471 | Z8(14096571,ca3d9b10,465bae56,d2354d09,1e78a2df,f734761f,5df73a94,653a45fd) | |
472 | Z8(d2e791f9,da42c901,9d33e512,7c1bec6d,c0ab7a20,ab4bb5b2,0556410c,2da2d912) | |
473 | Z8(3979d55a,91e94bee,bcc920dd,f24dc6f9,9c304167,51d7181d,5cd731d3,1bb9a5e6) | |
474 | Z8(fdee6b54,3976d6ef,afefab93,838935d0,3ad4f90a,ca36e333,af9cfd75,cd42d74c) | |
475 | Z8(873dbc02,ba0416de,0c600969,2ecf15f8,2faf275b,58475376,05efcae9,66475a02) | |
476 | Z8(ef11c4e3,a5ecbf7e,b213e4cb,9d059fd5,a2d47c4f,49b21ac2,a2fa1a21,0be897e1) | |
477 | Z8(0f9645ef,37448d50,c20f40c7,ec4f1c85,749840c6,12fe38a5,c7fa0911,41f83871) | |
478 | Z8(96cdfe6a,75daa9ae,37cde45b,315e71f3,fd3f4efe,df9ae38b,1700fc0a,2b388b92) | |
479 | Z8(de2590b1,1f431ec2,4d18a81c,7a6cc118,a5133d26,4b874563,b96306d1,31da3bd9) | |
480 | Z8(1c2e86e9,5a92bf4e,f2799c5c,885aba65,ef3f077f,a80f855b,6c742aaa,25558053) | |
481 | Z8(ff1c76b6,ca92ab77,9a0a592e,93a4a4da,9f2370af,9d2eab5c,2fa2b955,65da0ca9) | |
482 | Z8(e719dfb4,03fac65d,83c634fd,7ce1e57f,047d37d7,cb318673,2f8b79a4,c0afb950) | |
483 | Z8(012a81b3,a8f4d3e3,9218f1e4,1a70e020,6ac524ed,52aa6254,d6a37ce8,a998641d) | |
484 | Z8(f9cebbef,5d4f7698,f4f48a41,a02b7a38,51f224c9,5f732f35,7fdf432a,e5504fbe) | |
485 | Z8(a88e2f05,4e295ce9,3de5ab56,5670395f,80c02609,ee2423b1,9fec35c0,b902bd10) | |
486 | Z8(a5a02878,76e1979f,662f12ce,9b265cd7,fc96deeb,1d5ccc02,0f681d63,5eb6b6b0) | |
487 | Z8(f5ad88e4,b3005299,43cdd351,2fc844d3,9038ae8e,1da5fce8,3a35f93d,3e1f9879) | |
488 | Z8(93500a30,3f3481f9,ca0f3d1e,d1228c81,a29b994d,e7b1c973,08b8b290,435148d5) | |
489 | Z8(b64aca15,b59e62f0,376dcaf2,dcf4db8a,9a9ddeac,6ce2de8c,d376426e,c58f9ca1) | |
490 | Z8(b2bfe777,ec0be667,e6e13388,ba8c4aaa,b4dbbc32,e3433e7c,38ca798f,620ec5c3) | |
491 | Z8(8c774ab7,82c56d95,bdbd9e49,355c3303,f2e90307,a88738f7,2b8d332b,754837c4) | |
492 | Z8(0ae0310f,f5e79f78,51dc847c,49b75621,24992230,7a0b37e0,6c5bf081,2bdf3081) | |
493 | Z8(96489218,3b0003a5,6b8677d4,046b0ad6,d92d0a0f,f437810b,07c3d7f5,c8bb8fc4) | |
494 | Z8(8975d8c0,73525641,c562e3ff,fed2caef,7f0f391c,a06e76fc,b3bb1a79,b3167291) | |
495 | Z8(d678a207,18508254,8d03c20a,2a4bfbdb,956021cc,15ed9dbb,d953d941,455fc5ba) | |
496 | Z8(19748662,32c889d7,41de65f1,b0cc248d,70ed1b51,c05de5cd,a4bb95ee,4a885848) | |
497 | Z8(22670cf5,6f742c2a,799b494e,63447a5a,f3d456c5,7b3dd99b,71a4ad6c,8c93b4bd) | |
498 | Z8(41a521e0,d1b398ab,6cebfdd5,8e137ee4,7d6d144b,2faf9270,7c493d43,b02d70c3) | |
499 | Z8(96d12cdd,790210cb,4fa711fb,4bbe550c,4cc1c4e3,670d8e62,798ac5c5,97269f22) | |
500 | Z8(6a31ae8f,bc09e0b6,674c7561,45c135b3,a5eebcb4,dcc4ad8d,cf160a2b,1de4610f) | |
501 | Z8(dc43c0b3,fb1b3a76,36451a2f,33bf867a,fab8a543,c442c303,0246b72e,02235eb0) | |
502 | Z8(5a39bf41,7fb8e4ca,a7c4d286,cf81208d,62d1c65f,4812a716,ee93ca35,b6354d4b) | |
503 | Z8(920c0177,32c6cc16,299c14cd,bd7f15ef,346f5ac8,2d13f323,c32a48a3,30ea3925) | |
504 | Z8(aa4c169c,bacec4ce,160e11de,df96e25c,8988dce4,01a986f2,eb42ab5b,a12092e6) | |
505 | Z8(8e290691,f78f45cf,e6682a09,60ee289a,0bbe0d1b,049c0d2e,fd979819,74784a16) | |
506 | Z8(f7ff5380,72323d62,ce2f5757,38083a10,bddced5c,ff96efb5,2249f807,980e8f30) | |
507 | Z8(5620cd87,a4b2b116,01753cc7,a2fd0e89,94df8174,cd067049,424205a2,71dca628) | |
508 | Z8(15359599,84b5117a,eef608b7,4d503fa6,21cf3dc8,9613e554,0b79f89b,590c9c94) | |
509 | Z8(157f2143,900736d9,86820761,75ae6e02,2bd445ea,88309eef,6c2c3f12,103fd3d5) | |
510 | Z8(48a83352,f293f8a5,5083c400,2c4a1d55,2739f9be,8f3001a1,ac6b5f95,48e0ecb1) | |
511 | Z8(2ee3eeca,9e70375a,09c50d49,7578d538,33f85be4,7916ee55,06907ae6,a1a26fcf) | |
512 | Z8(2e24c445,cf80c99f,88c68402,19027320,82102ba2,3feb41b3,4e97d9b0,f8ce8ed9) | |
513 | Z8(0b7149f5,1b9ed568,b1df1c60,527eff8e,0899a18e,eafb8c50,a06b411b,51bdb36b) | |
514 | Z8(9c7200b3,57a49e61,630e1aac,8e455ebb,af793770,b2131ca7,923c900c,e9417816) | |
515 | Z8(5d72dd51,aa3a3d14,766837d8,656f919e,793b4b2a,a64306e9,aa1a9642,00bfa5e2) | |
516 | Z8(16c222b7,a8837cfa,63065529,977f2d0b,5184c500,e567e35d,6cf5ddf3,cea84345) | |
517 | Z8(9a656110,ac3ba59e,86651415,88f39a78,93b7de7c,9ad5210e,214621ec,adb1af3a) | |
518 | Z8(a50ce5c4,4a39b873,04618c27,98f3d112,f2ea6877,1121d963,791864ae,85f3476c) | |
519 | Z8(2b9e53b3,a257fce7,76943f0d,eb940e3c,b97f9163,0b65f0c6,3444e927,a2723ed3) | |
520 | Z8(e995a3a9,bc72abe0,c03185bf,b98be86d,e4a040c6,c0854bbb,3aa7585c,9cf286e0) | |
521 | Z8(dc974f9a,e842258e,40c98f11,ebc60262,37681905,38eee755,c9d9a699,44b24ca0) | |
522 | Z8(a26f3314,9fde180e,91dd5fda,b78d2500,567cf4c2,fbadaaf6,ef074e40,af1ff740) | |
523 | Z8(9d7efcdd,b7634c33,fa542641,6d197262,44d351cd,fe8f0136,324bec11,6d2176ce) | |
524 | Z8(6fa6fb31,0d171391,2b5c713e,09484346,0c7c7c34,ceb4d9d8,2c7cfa85,a15a7667) | |
525 | Z8(773fac44,09d29096,7e1af9e0,e36a6a54,0f611fff,47ecbf65,e8b88ad1,782b678b) | |
526 | Z8(42e0de73,c87bd2b6,2b3a440b,1a2883d1,104f9cdf,552048a8,8a30336c,32359f20) | |
527 | Z8(b8b6da84,986c328b,ec28c8dc,6d6cbd12,732a3b88,014e3795,e3d2a945,10cd66c6) | |
528 | Z8(34eb9a54,44642866,baa78aaa,b4fbe210,29c4f58e,23a9f811,a6a209a2,4e3f939d) | |
529 | Z8(2da8fbef,fe779e58,78fc754a,dc0ad026,7407466c,a2d947ae,c9145112,97474282) | |
530 | Z8(87f6c5a0,7804c5a9,f2d8466c,c435c9fd,5a10e825,b31c0738,71fe322a,093c2c22) | |
531 | Z8(dc03ee40,ed26d33d,a9b25d26,2e5e9836,9c0adbe4,d2b0c42a,9b7fc4f8,14337368) | |
532 | Z8(032fc35a,e9d550b3,8a482575,6a738d55,87567bd0,26ca0775,3788b71a,db3b666a) | |
533 | Z8(054e4e69,edab20c2,a3397ae8,cf2bf34a,b0012618,942ac74e,f05fe227,39c08c40) | |
534 | Z8(78fde40f,8a31056d,0887cd49,9d864f27,320ae003,bf4b8e10,d2630cb6,0e0b49fa) | |
535 | Z8(888d8c40,7ffa5c66,4b154cda,5833dc33,db77ce73,16623764,3c3b6f75,47e432d8) | |
536 | Z8(dc524cda,d06e3b87,db9615ab,a67e3e4d,f6fa153a,ab1ae872,f421d738,2ec9c2f8) | |
537 | Z8(66750ac4,4356d8b2,d364877b,470d310e,4d8dac3c,9a41057a,5a872b33,9c75712d) | |
538 | Z8(5634fda6,90f3a8bb,6909c9a8,e1f34c38,e042ec17,ccfd6b40,5ffb3cf0,3fda7a6d) | |
539 | Z8(a9f08b22,b79b50ed,873caf4f,f9a2b5bf,704e2b81,43943ffa,a5ab6aa1,3133b641) | |
540 | Z8(fc0945a5,c568f3f5,dcd58989,d8c8f252,0dc04c3b,ef9b85f9,2c55f416,581eb7c9) | |
541 | Z8(acc0c38b,40216de4,52df8bfa,627f6dea,a109da7f,d52722c5,f5a2fd6a,0cd2f0e8) | |
542 | Z8(a5aa9488,596f9884,1104dea9,c8535ea0,97985f47,150f959f,63f5bfd6,e960465d) | |
543 | Z8(e047dde7,6a8f3e1c,ad1355c4,04695165,4a7efe51,837903ea,36a9393b,3598f8b1) | |
544 | Z8(06e6f4f2,7ec41821,50e8b0b3,8841c284,ccc44173,1228f51f,d8df8842,63d89b82) | |
545 | Z8(8a48cf46,06167261,55af6088,f61fedcb,3a5ef9ef,f7f76ca3,93c42407,60b78669) | |
546 | Z8(d6b9947d,1de40880,78c6feaa,0e260616,0bf9eedb,45ef0a68,92b37630,479f6b14) | |
547 | Z8(3dda20eb,450c32a2,26ba2ba0,b38f211c,b5916ef5,1f428920,474c5790,86db5931) | |
548 | Z8(3e1f65b4,4b149f6d,fc6258c3,19074999,9b8497b2,07717189,2ad87f46,77d920ca) | |
549 | Z8(15c0cecd,46f23223,514f4fc7,87b1a9a2,7d60c675,85314f1d,8437fcf0,4af76589) | |
550 | Z8(c28c2417,680b5bbc,6fb24f10,9aca6a10,1d1cbc73,47595c9c,96397988,42e91099) | |
551 | Z8(31f7f77c,c664b323,66f66721,6041fece,b172444c,e58892c9,39bd245a,8372c4fe) | |
552 | Z8(e543fab6,58d81014,09c18e6e,f0e8e588,7f1955ca,266095d9,8c3072bd,c6598bea) | |
553 | Z8(03dabc5e,62a152b6,c24fd364,2aa7cb2f,47bc2cbb,80fc28d5,e203d1a0,65a93d99) | |
554 | Z8(907c3ec3,539b277a,df9b4c96,24c6cc17,c4e1f20f,43bb6911,ee61f093,2800d0f5) | |
555 | Z8(a61addfe,40d06325,fee43fef,1efc2691,fea11954,4f409032,dc598665,87c38e0a) | |
556 | Z8(0b5d0200,dc82a4b1,272cef4c,dcd90ddc,bed33f6f,4c95a282,c3d463e2,3cb3519c) | |
557 | Z8(664a5b84,337f4690,425f387f,0775ea3d,430e2ee5,2879f5c7,3818551f,15e9a53a) | |
558 | Z8(952a8c45,05ded2e5,53f3f0f6,6b0011b2,58fd4979,b8e33cf7,ba0c4e81,09e247b5) | |
559 | Z8(ee36adab,b56cb17d,83894ecc,91b9f7fc,8841d510,3c112afc,1f6bbd1b,d460ba5a) | |
560 | Z8(11f3d8ff,b896b844,ecfedef6,c07902ab,8564ae15,a2f9d9e1,43547967,4630504c) | |
561 | Z8(f8ad197c,ba91e7a5,8b461c47,08fcd404,9b098c76,cede1256,1b9af659,7df0a648) | |
562 | Z8(f2015b5e,09a4ef35,35e39803,9930ea5f,c8674023,a1ebcd25,32108959,02b7b5f8) | |
563 | Z8(7bc30d40,62c4315d,28c51420,20b12869,57361b18,ee6a3312,ecdcb1c7,e9b5ff60) | |
564 | Z8(e0262563,9c277f3d,adf2205a,277d101b,095f234c,b9a57105,ddecba8e,589f3a27) | |
565 | Z8(f23ac397,2f9c584e,2cc376f0,ba86e66b,c2b54ef2,71dc7add,5e10b017,522bdd66) | |
566 | Z8(0c513a4f,83886884,c2ebe392,fc97e263,aa5098b4,6d8f413d,fc499e94,5f467b48) | |
567 | Z8(35a27276,0087091a,c8162cb2,88a436b8,96cc26f7,f7c20c92,dd3b6407,c3204908) | |
568 | Z8(3bfa564a,234f93ac,e9e5f435,398e36ef,7b4245eb,7e7c7645,45f5f978,e955d3cf) | |
569 | Z8(6a364ce9,bfaa4dd4,93cd7b93,62d29670,e3e026ed,dc8fe1ca,eaa1c8a4,c8a3dca8) | |
570 | Z8(9f045891,0c9ad13e,bc29a613,d6fa50c3,224acf7b,04847f6d,0d92af70,62103175) | |
571 | Z8(61763c0a,7121042c,d50c9aae,9f1965df,ac92dd8f,0c6a4e74,99b4b1d4,a237a8ec) | |
572 | Z8(26815795,1d7e24cc,8e2330c5,d9377421,3fa6d4b9,daef41db,45f872dd,324c8c66) | |
573 | Z8(f87ef469,6bb9562a,4bddf664,6a63eace,f7aff23f,1dc82c8c,514ed7a4,aab89149) | |
574 | Z8(302ba5ee,bdb7df42,b6bf2968,2206e32d,d2bca852,5b27dea8,88fd4952,62305775) | |
575 | Z8(9076b5ac,7c856ac3,70b83fe7,1c611742,dc3d48fa,45ec41d7,33da10e6,a1ad0806) | |
576 | Z8(6cc3bb53,fe05e2d5,e451bfbd,1b5a8406,a098a341,ad72bf01,d911c27d,aca47a2f) | |
577 | Z8(ab733cca,486522f4,eef289e1,77fc2bde,8eb59787,3ee7f5c4,08457078,371429a5) | |
578 | Z8(7ff20dd9,14bfab5b,5aca1111,cc105d8d,64c6b0b1,8e9c5e59,797587cc,842ed74b) | |
579 | Z8(57f3ed4f,e4538437,b9dff58e,516393dd,b01e34ad,9a8e7d43,09853e16,0b1d6ef3) | |
580 | Z8(aa9074b0,b958ce3d,22f1d65e,d96d66e6,bb8ae192,93f51eba,7ad073af,f5e72971) | |
581 | Z8(39709c24,1df19224,bccf70d1,256afbfd,f859c6ae,81657f41,0cf90abe,d49c0cfe) | |
582 | Z8(1504b22a,a850c024,79229abe,fb279cc2,6b02971d,e8338ce9,4ad08065,a8fbf930) | |
583 | Z8(401f1e7d,2977f5d1,b2bd651a,c51c5657,2275b035,07d21737,9341f412,8d2121e9) | |
584 | Z8(71a3900c,6b19c103,0e56b370,ebd1dfb0,25ae6ea9,22d60633,229b8d18,9b3a92df) | |
585 | Z8(48cdbc4a,e50686b8,e94d020a,018c3093,d2d0ee61,a5b8af9a,0413abd8,64d1c02d) | |
586 | Z8(f332d6ba,1d0bf071,b579674e,e13af63b,8ec9d2e6,cc1f8772,10ce7e44,93661cb3) | |
587 | Z8(11a3518f,1fc5278e,13c5b070,e09cdf2e,9c098df1,6c2eb2f4,2b13f45d,cde8f30f) | |
588 | Z8(ef6f4963,66b954d8,e4f38a08,395c8b05,181581c9,92c76845,d385ff98,ee622174) | |
589 | Z8(d97e5ebe,f85772f7,8c642474,f39a8076,869e814e,0da01871,62f3e547,985cb394) | |
590 | Z8(06755492,c2db51d3,f965aad0,bda43815,84615baf,c899395e,76653a95,11b0e4e0) | |
591 | Z8(aa06bab5,495cc2d8,fb375309,8834a8e6,d98b5726,38d484e0,600bed68,ea8c6004) | |
592 | Z8(afc20a15,493143ba,916c0490,bcf22ff0,51d7602e,9a307a5a,f858c7ae,51b3fbec) | |
593 | Z8(84daf57a,14fbe122,7fd87549,d97dcc9b,1c674161,cd85ce86,ef167391,4ec83d36) | |
594 | Z8(b78c5f48,ec5fb40c,4e336dd4,9bc0b6cf,6f5eef05,3331202e,5f6b5690,68f4e690) | |
595 | Z8(cafc54cd,8431df00,9a4cd177,576beee0,f5afc3b0,96d1fe51,4bbdf8cf,e7d8aca2) | |
596 | Z8(c744c8b3,1076aedf,0d517aae,76525d26,b1b432c9,3970ea56,7e5eba36,9e264ec1) | |
597 | Z8(a5d171bf,24d90d96,e2fcffb1,011bf68f,00713a09,ecf69073,cc80b90a,60385e93) | |
598 | Z8(c7c9dc19,e175e995,7524defd,22ccb565,8dbb1885,24bde171,380f8acf,bb2a89d9) | |
599 | Z8(12ce9801,813d7e01,56b00700,bc0d34ec,06b4938c,b93ad22f,a8e769c8,8fcff3e1) | |
600 | Z8(7164a8bf,f5ae384c,52896d12,e661ed45,633d559a,8df8ac78,04b7e20d,1995aff2) | |
601 | Z8(f2895967,b16b535d,7c79f2de,c7978c06,0f81390c,70af22cf,c97a26b1,4b656a73) | |
602 | Z8(e974def6,7594e4f4,59c4b41b,844e6955,f30ea252,3ba2ad86,56e6bb84,e9fb75eb) | |
603 | Z8(3dab3a6a,d07e950c,cc3dd9ea,c76ef1a0,11e44ca3,28b96adb,85e8b436,cd92fd3b) | |
604 | Z8(aad4923e,28be47ea,2acc6205,d7f74de8,fcfbaddb,79d1b07b,87d598ca,5a95af25) | |
605 | Z8(979b04d7,4836c21f,83d8c3e8,34c3473d,362bbbab,83c8d7bb,8c09aa82,e0247d2b) | |
606 | Z8(6e964600,fceba3cd,2a115632,8c4943fb,45675ec1,8f35f457,4cbd2bc5,8fa2ffed) | |
607 | Z8(aedb478e,c0b0db8d,21fe9ee5,ff4cb772,b8db5fb2,73f6c64b,3ad183f8,f7be6065) | |
608 | Z8(ee7c65c9,4a7e0e9e,4c6bcbfb,3c2e3909,3b099536,2bccc9d3,cae91107,edb358c7) | |
609 | Z8(c0a791a9,9b2c52e7,30ae06f2,86164755,612cc1ad,5413c82f,17d6ede9,b446b534) | |
610 | Z8(6c58be20,3d91b4cc,5ba33888,53d755e1,6cc8d237,ade7bb8f,a4e4fbee,3144ef5e) | |
611 | Z8(6c358d76,c8348fbf,d30ae2cf,3da73773,e4aec310,0667efc4,e3fd37f5,43a00221) | |
612 | Z8(8a552c28,109d3ff3,49bc6f35,6dd88076,86d3ec85,d199de5a,56945b1b,e028d1a9) | |
613 | Z8(f22e1218,5cc58e22,d2bb5963,8a956e19,14930f07,acb66b91,42a731c8,fa32e874) | |
614 | Z8(99c4a7fb,28666c29,e0ccbf26,0ba46327,f59ee1bd,cd1f9e1b,adcc80e6,c0d36853) | |
615 | Z8(12eb7628,2923276f,e1199c4a,efdaeb2c,fdadd3d1,8608dac0,ca39ca20,a7019ede) | |
616 | Z8(2936aadc,6ee60c79,425e4440,fa2f5df8,998aef93,48741035,76afa27b,0e70170a) | |
617 | Z8(5bf2cdc6,005b9b14,1d919d74,545b7577,d13c67ad,01d0d222,856ca329,8d74bacc) | |
618 | Z8(72062ab8,22b0fe46,cd4a6cd4,10f2878d,d7715e15,ff7346f9,b330f0c7,e020efd9) | |
619 | Z8(d54773d4,2ecd8206,92b8304e,3f6e3665,4b972c9f,9df28d7e,845e8174,d4a150e9) | |
620 | Z8(20e149ad,cc0e5f12,af1f09dc,043f14c2,00b50ade,31886ec3,a343b364,488b7c00) | |
621 | Z8(ee30e398,39038916,21e33e10,2578889e,6637a911,d919c6ab,e57cf1c4,4621b73f) | |
622 | Z8(02a032a4,1ce6d4c8,1db9865c,a50cdc5d,c9bac550,b9719778,06653be3,4e8f7167) | |
623 | Z8(0847fc7d,316154b3,66035dbc,0fab2949,91658bf0,d5aaad87,90f35d7a,ec2a9a1e) | |
624 | Z8(217d764b,b0c9bdad,b5287f24,5b1d3a90,ec94a44b,5f976ddb,962a48cd,319f2fbf) | |
625 | Z8(e6a8c301,636f3a5b,b3fb63a0,905c6d03,2137d4df,c758fc04,b765b662,d2484e0c) | |
626 | Z8(829b303d,b3a48b66,31f9badf,098b2f28,bf315328,362ad68e,ddca5f4a,9315e3b4) | |
627 | Z8(e4f00bec,97ba6fbc,122fc48f,b3d3811f,7b4ee276,c7584b8f,29e8fbb6,7c21a4c4) | |
628 | Z8(e0b6bb59,f0b08d1c,ea6589f5,5cb9e60c,5bd008e2,539d9fb3,6f049383,e9c8cd6e) | |
629 | Z8(07edaac4,b8aeb6a1,2939940a,5d9ea6f3,cb2e1f02,6d049ef5,5d8da069,9eea5ede) | |
630 | Z8(406ca77a,9f724f3b,83a3e939,e1b27f9f,7c547041,b532267f,5331ad21,91b86857) | |
631 | Z8(67ff16c8,13d4179c,fd1b02de,673f0c50,460dbd36,473980d8,ab87611f,b6b290d7) | |
632 | Z8(5e705203,b7c85154,8229dec0,42133979,d463b65d,85a3737c,2c8f85b5,e430c302) | |
633 | Z8(5b3d46fc,f3ed3812,a678bc86,43e42c3a,26174347,929b59a0,9e49e59b,3567c9c6) | |
634 | Z8(74d3caf9,019dd823,7d7c46c8,6411e72d,e22bfdbc,945c5f3a,5e978e82,729a2a1f) | |
635 | Z8(a71421cc,78f5f7c5,c198c253,a1559b8c,0ecca69d,155f6547,36569ebe,0e7a61f1) | |
636 | Z8(e1191ff5,2bba553c,da22daf2,e47291bb,f553bb2f,0ade31ae,65b82954,85a759c5) | |
637 | Z8(b1a5524a,4eb8221c,5525e540,66e433e9,cea1387d,651d9b48,bc4ae3b1,4c3a037f) | |
638 | Z8(402c3990,bdf27b08,b1d23d82,4cd93856,ab2edaed,adbb2b1f,1d273e30,872574d9) | |
639 | Z8(d7fc34a5,e2a0c4a6,9dce5d39,1e77bbca,ed219ce4,5ded478e,16dec3e3,58780e49) | |
640 | Z8(c5e7f0e9,0ae16ba2,375d6e19,5ba080c9,075887ed,5bfbe4e4,5bb8baa2,deb6451a) | |
641 | Z8(342c1bc8,8f41dcd9,b1523c1b,5fb51d5e,a52ce86d,696adf3b,6d1f0696,305c94ff) | |
642 | Z8(3d6b6272,b8b2ef56,c5736ad9,6dd04673,a788a2dc,b92acfec,4001a471,6b86c695) | |
643 | Z8(7c7b0606,29bbdbc5,7bced649,f59e1cc5,931fbf9a,4214e0e4,633ce226,d98daac9) | |
644 | Z8(4208d152,9033fe17,f64f3541,9f5cc28f,c0b8ef8d,f0f77fce,4e0b6ded,ea8d8ec2) | |
645 | Z8(3a368607,bd1c15a5,5f2735eb,83fae826,c11b61a3,3d6ea890,2b00bafe,04e38275) | |
646 | Z8(a5f7abbf,a1c27f75,7df495d5,45708d42,19b051d8,a83c6256,debe718b,645ba8f3) | |
647 | Z8(88a8ed29,a11e2c89,90ceed96,05af61e5,ddc96626,6f87d260,1359b63a,4b0f6681) | |
648 | Z8(32da7d01,7a953318,144b6fa9,68dc2068,edc4ba95,775d69cb,5c047408,b0efa623) | |
649 | Z8(5f78d889,f87f5869,76ff1b2f,1f840d24,b31ba5bd,a5e72b53,47a04f10,0729cce6) | |
650 | Z8(89be9628,b209eb36,db812b0c,9fe3a8d8,1cec1aba,29fea239,769ce66f,fa4d2378) | |
651 | Z8(ca67401b,aea7b89b,28a7fdc7,45f8a728,cccdb83f,6fe5f7ed,88f5d1ca,bef87b40) | |
652 | Z8(f6d8a8d2,8fc76060,ba5b3933,37a1d510,a3d623cb,763c895e,1d44efbe,78728e2c) | |
653 | Z8(d3ee9459,8d11c07c,2b6933ed,deda871d,70dbd17a,be137ad6,579b73b7,3e90481e) | |
654 | Z8(dad0a3d8,73c61008,9034f434,b6a55e6d,b1b5e13f,f61e23d5,43f150f3,9cd52de9) | |
655 | Z8(6c57926e,3cfecbef,0633967b,afbc52f1,e58ea230,36466e8a,fe7ff80c,43869d1b) | |
656 | Z8(8b47e18b,f337208a,a1431164,cfe94dc5,5b1c428c,fb509344,95fc5689,0f4ae06b) | |
657 | Z8(e286063b,38ae3230,6e9c71ea,8409483e,8ebf1258,f1534409,173c68fa,4fec18bf) | |
658 | Z8(87f7f809,17ccb67d,771bb279,4d7b761a,382fbab6,bce838e4,f551c1b0,f8e00900) | |
659 | Z8(ba059f72,8d3b3de1,8a133c94,05781da3,a840c21c,8a78b14d,c7d32270,e029c1b4) | |
660 | Z8(da7a85f8,46c7a9a1,0e417c08,149e1893,8917ebf2,52031172,7bd66dec,6e97f076) | |
661 | Z8(fac8cd48,923f5120,226a5bc1,b9a0cf64,de128515,9bf14a39,be0e8475,deefe8b1) | |
662 | Z8(e98e4f76,eedb1d3d,a263b129,de30bc5a,47a3d9d7,5b426966,62a45aee,930d7749) | |
663 | Z8(e57e32b2,514be446,a94b8be8,3dc97181,0cf39765,4c7a11dc,48db1385,8143be8f) | |
664 | Z8(afecc86d,e85872fa,a4674253,6bd49108,df62e534,9c1d4b49,a832d845,aec55fe6) | |
665 | Z8(715b762c,738885bc,c5b04f1b,6a22967b,9e1253f5,ed49d668,8d98e350,aab7067a) | |
666 | Z8(c47e18c7,0e0ce093,902b3c2f,96ed0678,2006e282,89c81f69,1ce0c437,8ae66600) | |
667 | Z8(cae9fa6e,26338d5f,ad4f1047,d87ec9db,8de0f3a2,0b814935,9a9382a9,14451b93) | |
668 | Z8(78a0ec32,c53e2385,d9e77b76,37eb9454,a4369ed0,a4836ed5,7d97495f,b12843bc) | |
669 | Z8(ced9ca9c,04eb27e3,bad5b6ea,ff4020ff,f35a00a5,22701f7a,71725988,2617eb1a) | |
670 | Z8(ce6c94d7,fcb7e576,38d9fb31,a0973b5f,a6b643a9,0a8fad22,8ce60f57,41e0f9f5) | |
671 | Z8(08e7e4ef,4de85f7e,037e69ed,2443f8df,3f68496b,26d893b4,8afb0cb4,e51b182b) | |
672 | Z8(d6868f17,f413ab7f,9a465144,e5e268db,9896a976,8c45fcb7,4d2f1a6f,75135af1) | |
673 | Z8(2e1eab5b,7178bd61,dd20c588,4fcef5ba,e210c351,ee8c76cb,15793d0c,ec23299b) | |
674 | Z8(146d91cb,2bf15a03,cb74ca34,27dbc5bf,8bfb991e,dc222529,91e65de6,cf13a59e) | |
675 | Z8(f4dafa29,bcbeecb0,7eeed60d,2745ef1c,a0325d23,6e3e16ba,f2a6c9df,ea72b0cd) | |
676 | Z8(e551aed6,db88d709,b01ff673,b7b2724f,b493371c,90e45a8a,2a87d6c0,911a5951) | |
677 | Z8(6c3b5453,b7fd2ccb,8efaf860,d88c832c,d506bf79,8b131c97,8e56c8a0,befe194a) | |
678 | Z8(6e628ad3,e59020aa,8fd62e08,2cea55d5,928831b4,9c6134d5,b3d7a107,89e381ab) | |
679 | Z8(610b35b0,552af8ad,2b57aacd,cdbb911b,6b6101bd,86972773,031aa1c3,c0038604) | |
680 | Z8(671e46ad,628b811f,c9e0bc66,09d56cdc,7362cf83,af2451c8,1d888668,08347285) | |
681 | Z8(5fad1279,f8168863,a6455464,99551309,9a4f1ce2,11cbf2aa,31884fcf,bf94411b) | |
682 | Z8(f9407695,328e877d,254cf631,7cfae701,3c119069,9dba7202,7196b8d2,d90885dd) | |
683 | Z8(27e3043c,c79bc297,a06f0f62,254b80cd,1f8a7202,11e16a63,6e178fda,0eb344df) | |
684 | Z8(cf093f01,a0bb2192,c1a15531,569f406a,8693e780,b6aa28f5,ed279834,d4d89405) | |
685 | Z8(5e23da36,e797ccea,ef3410cd,74683042,5a8d64f7,dbc693b8,887adce0,4b9d9384) | |
686 | Z8(37444bb0,c1861c99,f0acc618,d277a212,c0529d15,e816fd98,2083af71,d2fce3ba) | |
687 | Z8(044e7e7c,a3b027fc,8bfd1670,ccbc2ee4,6c77ce45,19890f16,9c3766a0,d57747e2) | |
688 | Z8(b8e49b25,76247f82,cdcff962,28088802,c0fa5aa5,13e42a03,a250e54a,a4d59b5d) | |
689 | Z8(b1d38d77,26d2a612,40a48ec3,933e162b,4ad0bea9,67676e00,4c462745,03006c98) | |
690 | Z8(84f3663d,f784222e,a92f2431,7a369efb,cbc0636d,1996a4c7,d9a47887,a517cf18) | |
691 | Z8(4c7af17f,808c7f64,aa5fa14c,d7d01850,ceebfcf4,58e3717a,f34f00ca,11270d43) | |
692 | Z8(c226f4ce,74bc96e5,ab20d76b,0d278922,e4ca0879,6a112cd3,fcbab1d5,79976359) | |
693 | Z8(36d255ef,ab39b1ce,c75daccb,f230436a,d6d36831,43722ddb,453e3fe1,e3c90d84) | |
694 | Z8(cd29b207,e805dc7d,83a0bf69,202b2fac,ceca1988,feb0bc08,64dda8eb,b6796801) | |
695 | Z8(b171ef24,459a01a4,b2f922ad,4c7ad50f,8fbcd4a6,777212b6,5cae0f2e,69bb9cd5) | |
696 | Z8(67c8a88d,198fc0f4,36570e78,6f171f64,d71c0a30,4d2c8515,cc60ab38,fd2f9877) | |
697 | Z8(cc10fec3,13eecb4a,af8ed210,382a32de,2748a46d,1a87bab9,b341f987,d9954d0b) | |
698 | Z8(8bb0c828,c5f12fe8,d3c67bb4,e57e7395,ae786d8e,76f5a99d,52a10f04,16d96149) | |
699 | Z8(08a061ac,47d44b83,1a51b785,d964298e,0504be82,2cc2cb2e,17a9eab0,22a482fe) | |
700 | Z8(b0fa8008,898c527e,4324ecbe,908291cc,3a89d5c3,fff21a21,fdc057f9,79ff6720) | |
701 | Z8(1e5b25e8,87602c68,955c6cc1,58733cd8,0769ad3f,e7e920de,4f83dd49,f717cd3c) | |
702 | Z8(f0902d79,4ffcbd3f,09c6a089,12dc12ed,c3c1063b,4c8aad29,c09fbad3,7ad4fde6) | |
703 | Z8(c91023ea,aa285feb,d7dd6467,201a06e9,2a06fd24,889802e6,d30166ee,dee6048a) | |
704 | Z8(01f89035,a7daa758,0b371211,474bb586,e6f987dd,3b9a914d,1721e96f,6627a798) | |
705 | Z8(fbc3812c,f29d1319,cb6d16c7,6d3272b6,15c7d715,78fa0a4f,6707aa46,1a0fd266) | |
706 | Z8(7ed2c204,6a8d44ff,083f8563,82fb46d6,8f2cab99,077b706b,6248714c,8e6d80c7) | |
707 | Z8(262a1d9d,2db98b0a,1c79b792,c451a151,b3195ca0,76467ef3,66eecbd9,a5c66f27) | |
708 | Z8(a34398df,61fac6d5,4dff5419,d622c939,c3db45fe,b9b3f051,80356c2f,223fec13) | |
709 | Z8(aa411163,d57d7db2,78367aff,520d96b8,ac123857,8df6ad66,69996ecf,ebb227ca) | |
710 | Z8(47158733,7d1473d0,8dcf4c31,1178fc31,d30105d9,966c7a59,31cab3d6,2808484d) | |
711 | Z8(94dadfc3,ca03caec,4f0d9899,f262032c,66a80bec,e93ec759,be1d08a6,2f686d09) | |
712 | Z8(930a25c1,efc6cc9c,133c1d01,adba45f5,7ae22e37,49773382,b7037632,abb16f03) | |
713 | Z8(1b09d5fe,9fd54b43,30739d64,ed61ab55,8aa8635c,e3efaf02,fa6ca516,53f465d2) | |
714 | Z8(a1ebd856,ab5439ff,487db5ba,6d69c679,ad9495ee,d0141459,e924758e,c9c7232d) | |
715 | Z8(ab987f7e,ed751648,4825452d,5c728756,f81e7dc0,7c89b1ed,99f9987c,54f35104) | |
716 | Z8(c13e6740,eacccdba,ce3533f7,16894321,4ca26ccb,2a3c868e,98d3406d,e3eecda1) | |
717 | Z8(d3e61919,daa99a22,e15f3178,7adbc2ee,5df8715b,f82aa212,21e57fef,515fbde6) | |
718 | Z8(51d61bd2,6581a14a,23520a97,88566024,6e625b1f,b090b33d,36490dcb,17fbab08) | |
719 | Z8(b9e38bf5,0a22026c,626148e4,5b45a394,17d30867,e77f932c,50d5d277,eec20a4e) | |
720 | Z8(f56cd72d,6290c332,28f02100,602ea9c1,c98d9a12,e7f816f4,f3dfa6f0,9983b1fe) | |
721 | Z8(397e20a9,a9face81,35bf6508,301a9f0c,30da21ee,97ee751a,c2255a92,302ce07c) | |
722 | Z8(574ba65b,1712b487,61404a2f,1cce5007,aa1bb6da,a8243ef7,aac8e8b9,88734b40) | |
723 | Z8(720d721e,8cd086df,32486ada,d0faba63,17cdfae0,7864457d,5386bb98,64d8ad73) | |
724 | Z8(effe2d44,a70a4e04,c180ea9f,0786ff3b,ed29af0b,20c7d9e6,1f226342,c69b21f6) | |
725 | Z8(7c5cd7ad,2c0641da,0f9961c6,bab8c081,f9a21ea2,dffeda26,f6379310,26d0f1af) | |
726 | Z8(6fbef26c,892aace0,230a56d8,8da528dd,47798c73,154f7754,f2ee88e7,ba98a9c2) | |
727 | Z8(aa7ea837,da919a86,3b87aa85,c82579fe,38b91fab,94e3e43c,f42b5924,045b26bd) | |
728 | Z8(5a8ddffd,7b076f46,8624b69e,bb1688ca,bb84aad1,826ba890,0dff15f1,e81fc192) | |
729 | Z8(c164ea12,f34fb3a8,6e81ff06,defec575,3ac4a1f8,4cde6f82,8fa9e5ce,01ec1b11) | |
730 | Z8(cf9bf99e,213ced49,c4118115,cd8f3dbb,d90fba0c,7dda0911,d0812a38,52ac24da) | |
731 | Z8(811c3e04,095eab7c,f12199ef,3399ca34,7a0daaf0,75987d8b,0ab43839,900aa6d6) | |
732 | Z8(e18cea66,8329cc91,dfbef02f,e59aa0db,942e7554,332eda9a,0b6dd799,be01e806) | |
733 | Z8(07e082b9,7cc0550b,58dafab0,7ba69b5d,ea0cb108,f4496de7,3ab80504,f155ae39) | |
734 | Z8(0c2625cf,d11d0e01,d804b39b,4abbc7fe,c7e2952c,bbca70fa,9f6e7272,d6143d83) | |
735 | Z8(fa76936e,00bacf3c,6be2faae,039d9e82,5fcf40f6,fe4fa437,45c280c8,21175726) | |
736 | Z8(e6139128,f7c27583,681d1d98,f89ec99e,560b7a7b,f86faff5,f4636074,352b40a6) | |
737 | Z8(6d24e2f3,791d0baf,2312bae4,d8fe656d,089bad10,1be68196,717eaa22,755622ed) | |
738 | Z8(a1e29ce9,19fa4ef7,f07cdb49,120e937b,e1cf5767,e0b85703,bf66ea3d,e567d89c) | |
739 | Z8(c746c4f5,468cec20,c37fe1af,248dd683,3e61f62c,edfd78c5,41b2a815,68d5e5db) | |
740 | Z8(e75cb285,2cffeabc,7218455b,29a3b105,7f82a34f,148e4c17,3a58143f,548151ee) | |
741 | Z8(a5013826,1cd47535,8a83486b,8d3691c4,4f284c8b,ed60aae7,4627fdc3,dc7a3256) | |
742 | Z8(ec8c4f95,e4dd454d,17fa7f70,683800eb,6008d264,622d3105,ac4ee246,52297f66) | |
743 | Z8(ff977801,9c19e5ae,96f69800,03e84d66,43fde5b8,da324265,6798a2bf,5e96f93c) | |
744 | Z8(5f1b54b1,e6e36a69,17d30baa,23db82f3,0847720f,fa088cba,6280fcf9,213632fe) | |
745 | Z8(22af392e,98bb85ea,096a9ebe,d7444bed,d025dd23,01bd11d8,337c0e88,dfc1125f) | |
746 | Z8(fda70f6d,2bc4fca6,b8d0bf84,c7296894,43d17eb9,c4949220,e0895063,f6a8a0ee) | |
747 | Z8(483582e2,7e544a8b,15a232db,c36e3cda,98a6a38c,5991dfef,eb5b5743,fc68e012) | |
748 | Z8(7c908853,222142a6,18bf0a20,a04118b4,51611479,f3178440,0be348a1,0c9251fc) | |
749 | Z8(5ff1ee18,69dcaa6c,a8b11991,d5c6b9af,5cee51c8,10bcb274,09a6fd50,8824a730) | |
750 | Z8(fd24e89b,b11d3f5f,0f7e22ac,ae4fdf8e,6c7f812f,4c26a8e7,b2c73fe5,b0c57e36) | |
751 | Z8(dee53acc,0bc68250,2baaa8cc,0208f2bc,add666bd,d19b99f3,8480fa2e,462bf5c5) | |
752 | Z8(cc4ba397,2cd30f71,0ebcde52,fb3c816c,c4aec712,6550484c,7afed51a,2dc76549) | |
753 | Z8(f0a69683,6a4937df,bba6afa1,52498901,5c359819,82da8b95,395780e7,529ee403) | |
754 | Z8(9b8ac2ff,6ae9b114,5db249bc,e1079b43,12914f36,c07d10eb,2b727a8b,ec0f21d0) | |
755 | Z8(cbc6806f,bb8ca632,652fc8e0,fc5b4419,9d9894b8,5f09621b,83dbb96c,ecc88148) | |
756 | Z8(0a42e62a,5ca4e88a,59f61e67,c7dfd92a,2a0c4dbd,c1102ef3,5a894430,d132f24d) | |
757 | Z8(e3d2282e,627b99ac,d5ec687a,167807f2,177ada19,a5ae9429,32b0a9ba,27cb42cc) | |
758 | Z8(df2512fc,1d0068fb,71d8fa44,58abd59e,ccf8b086,5b066a5d,d946e01f,36c12df7) | |
759 | Z8(38ce18d1,ddd3e72e,ad0c64eb,65a46a7d,42e75cd0,68fa3913,1e96bac4,e373577c) | |
760 | Z8(fb6d60fe,0d3617cc,73446759,9ba5464d,bdd2121c,8906a162,d2bb2ffa,e3158284) | |
761 | Z8(16b2e4d4,53e11093,986d9999,c39f8c3c,f8fe1051,b37a3216,b73c960c,5a162266) | |
762 | Z8(560b4dc5,2c67d626,de9f1fc4,1b47f91d,64662bd2,45d9126d,cce5d5a6,d20262ec) | |
763 | Z8(218546a6,d3441175,3e7ecb2c,c16aea72,842d981e,9d6df2dd,f3609795,b046fb53) | |
764 | Z8(63d7de6f,21656038,8ce6790f,faef4ec3,0ec6c005,4f927376,8275e1b4,84b69493) | |
765 | Z8(0e4599c8,3100712f,36b72595,2ae07542,a28d4175,bb60cc7c,99d54908,f581db18) | |
766 | Z8(74184a4e,5e0860e5,0d4c7359,886b6310,1722075d,bf3c761c,4c60b61a,e6817706) | |
767 | Z8(8d22327a,72c102c1,3c2e1eba,92308a59,15fc88e6,be1e4359,3a7793eb,652f9081) | |
768 | Z8(a78438c3,3b3fd53d,b339755e,e8972046,b112f4b9,45741d97,9884f109,8842c4e7) | |
769 | Z8(993bd03a,ad701555,fb2c2202,e43f8385,c4941d2c,2b40e53e,f0f3bb4b,29875053) | |
770 | Z8(7c9d429d,b16b5916,9a6e4405,55aebe93,9d5f9d1f,c65a8327,7739173a,029e1a56) | |
771 | Z8(2fdf6144,9d66a736,8bd6f7de,c51e4b9e,f25770d5,5e798c7b,9be37040,915771f8) | |
772 | Z8(f482f33a,9ea1dd8f,db061a3a,7bd85d80,39d158db,12cbf015,265afbd6,da532bf0) | |
773 | Z8(54c454d2,97b92d81,e0c2ed3c,a105c8ce,00d1e82b,8723064e,10ec5bec,7a1b1e81) | |
774 | Z8(77c9dc89,e8a1ffa0,f6209708,012ad82b,af1ccb05,c9e051cf,2fc59a3b,cc8fcb02) | |
775 | Z8(c34779d7,d944e91e,4933f1b9,e0111c6c,0cdd1f96,d29758f7,9c2d893e,6f7b69bb) | |
776 | Z8(f1ee0c03,7e52e2bd,4dd397b8,731d977a,d58f1b3f,1c6fda4f,0e80a4b7,13eef8d8) | |
777 | Z8(6df4bcee,9ac41d15,d0f0ae16,4684c484,2baf731d,a11b1052,e0766414,dd180b1c) | |
778 | Z8(fe596ac7,077e0cc2,c789b6c7,aeeeddc4,3ea2686a,7a4585f6,92901bc4,038c1ca5) | |
779 | Z8(f321f50b,617d2442,3dc4b55a,3bec6279,41261935,24b3ccd2,1784f71d,3fe55064) | |
780 | Z8(6cf2fe99,9bf10249,b0173236,a7d623f1,4e27bf7b,3423bbe7,3621c63a,2ee4510c) | |
781 | Z8(ab573c0a,9c7b4f14,818c3028,32783458,fe54540b,9b9021d7,99705f44,c41ad29c) | |
782 | Z8(8a1f7c63,12a46625,2f4232d0,d389de5e,1f20fe7d,77dd21fc,bdcde05b,3a314ad1) | |
783 | Z8(f3f530a1,b9d08324,f7792abd,321bbd00,6c33f585,614c9885,291ca1b3,4b417ec1) | |
784 | Z8(d20a52ee,fe5f89fe,bcd96a7f,2b4a68b5,0a4dae89,eaf3c271,0cd608a1,ab767b50) | |
785 | Z8(f6d60f25,ce5a9f5b,c2642828,fda286d9,834fd0bd,4ee61392,a1b562b9,c1a4a877) | |
786 | Z8(f3797a18,27594946,1d260118,e5530ffb,c3eaa4e7,0e9a464f,22d3faa4,0a027085) | |
787 | Z8(0dbff58c,6b33725a,0801785a,4375683f,3dab76f5,8030259a,f4962146,57daf2c8) | |
788 | Z8(0ce15496,d76c5170,eff02254,e71e9747,c63c4ea5,9945c480,a457c807,5e0d3acd) | |
789 | Z8(e91e0b09,21ff1152,11fefaa9,a0e4dac5,88dc59e9,16d6ff7e,7b0f6d11,973c0441) | |
790 | Z8(50b11b9d,3e786ba8,94f407d6,5970f160,dc09f55f,3a437dac,b65cf062,2ded035f) | |
791 | Z8(e7bdbe63,d04a051a,81a1fc7a,03b42683,a08c6123,fca18bcd,0e1162f3,9d2810a9) | |
792 | Z8(08401a08,2c7a466b,fd1ca7bf,c7ca31ac,7f78b496,6b52e539,e69f5066,3e09fa01) | |
793 | Z8(d9da9945,5a26e38d,3685db3e,345731f4,2236f2c9,a5adace8,8de7858b,e6adef08) | |
794 | Z8(df5bcae0,28826dd5,290f1e6a,8ab7e8f5,1844d775,4931b4b6,98375d01,6589338e) | |
795 | Z8(29701874,b7dc826e,d094b2f2,969539f4,732f031a,4a066680,ab67eeb6,19a9fe8c) | |
796 | Z8(9a146fdd,1c73c423,022e62c1,5f076cef,a5cad330,fbcaaac4,a0c25b1b,135a6266) | |
797 | Z8(674094f0,4674a4ee,72a9ec3b,de017f93,74acf836,882ded2b,5302ed27,6ef0824c) | |
798 | Z8(69e744d1,e5a15552,3787e4d1,f87c480e,dcda61fb,f84cf908,585d1cac,e4705674) | |
799 | Z8(d520a977,047d7758,3e2adfb9,051ef955,e3bb7119,5a1ee996,8650a21e,9c9f9947) | |
800 | Z8(61c3df9d,b039a942,dfe25505,4b671736,344cefbe,7c15621e,b9f61ac3,5797fad8) | |
801 | Z8(217fcd3e,8177b05a,1abc7629,ef34f8f6,ac1346d3,61e5487b,41e8293c,ba79b96d) | |
802 | Z8(1fc33113,515dcfdd,c7789198,c090c0d9,b0ffeb04,2fed368b,389e3c64,263a4561) | |
803 | Z8(a79d7e98,85177e23,b7319177,111d9420,f41f9c30,d810f002,6d473ee9,63287910) | |
804 | Z8(f6cad06e,b31b80fc,3be4a06b,a2d7c20a,891acab2,b1087c04,00c9f584,bfbd79c2) | |
805 | Z8(f08a7089,aaa07c19,9a8ba0ed,0a6bf0fa,61b5378d,27e0ee18,64139abc,fbcdf9af) | |
806 | Z8(ed1ef64d,a138da4d,53ea0ea6,9514e5ac,6462d7b0,16bb4f18,aa6cf379,6001f094) | |
807 | Z8(6f869913,54eb1b15,1ce290a1,4892a4d8,0829d362,196a5744,245f8b16,7c4f1cc0) | |
808 | Z8(bda5c16d,ede58784,71321c47,a48e4ae7,f9af92f6,f245fe07,f6f53064,5086eb7b) | |
809 | Z8(84331ea7,c6e4e1b2,a08713a7,71157e2e,1519ce0a,e7776cee,3daed979,e08f65f8) | |
810 | Z8(46058801,04d305d3,307ffefd,707333a6,f776a651,4f9a3027,f36184a8,a5be4582) | |
811 | Z8(97b3c6d2,71e10ca6,49452f20,7039c248,2e188eef,a96e953b,5ec706cb,e5901d22) | |
812 | Z8(2e79104d,7e15588e,66843d03,9e306e89,11ab5412,69e967b4,8c815a09,fc1abed2) | |
813 | Z8(eb80c88d,10c2e53d,d5ef1431,c37d1da4,d24cb669,079a0a54,18839075,a9588308) | |
814 | Z8(26263fda,fd633a0f,7fe321cf,b0081acc,9da0c3dc,f9478964,fbdb5c59,d670daf9) | |
815 | Z8(76a3419b,04caa3ed,3bcae8b1,e6246c16,e118bcf9,bb836d61,b3d23fa3,bd544f41) | |
816 | Z8(f97f7c0d,a8aa7634,70c572ad,53472c5d,1655f293,1c2d8384,710025d5,802fb335) | |
817 | Z8(8533131c,73f7be7b,3f193ecb,a94830a2,d548173f,4bcf735b,6e9d0433,79f1f8e0) | |
818 | Z8(c1e7293d,68b8fefb,d83b39cd,ce0b4087,5be6cce1,a66866a7,b44ab155,af10a21d) | |
819 | Z8(a8018e18,ba3b13e1,163967cf,9b920be0,887efb09,a341faf8,cc0a789e,72a6fa36) | |
820 | Z8(543382a7,e72da19e,9ff9db2d,8d8dbb06,4fe6b95e,ba57a10b,e1ada9e8,10d3f8a4) | |
821 | Z8(0f00847c,477cdf38,c997a160,6492c252,aab46b5e,5cd89aa3,17234a4c,1592149e) | |
822 | Z8(e41d5b2f,8d0ec53e,f07c80bf,d336ffe1,56825f91,77bcd105,99380bdc,83ac8460) | |
823 | Z8(691c22d5,1a165108,8dbe1121,267549f7,8e1e0813,b5ca7548,8f2192b3,f2a81992) | |
824 | Z8(3117dbea,4f78dc66,bb85c626,2577b781,a4020ef5,80d64655,a716d23b,eb8c4132) | |
825 | Z8(d1884877,0ebf0393,4268d350,c657878d,212fe5ba,a08cb6d3,ffdb08cb,d00046f9) | |
826 | Z8(50a14b65,d4e685af,1ed971ef,e88ba4bc,8d904ae0,dd4ccb6d,b6c917d0,e37db276) | |
827 | Z8(ed2dd9fb,97e72c1e,77073528,3ccb77e5,1113f809,cf461cb7,17780b54,984766b3) | |
828 | Z8(bd202b25,ab09031d,e00b82e6,39f78913,16afb9f1,b2b2f38c,d955c760,47b9b920) | |
829 | Z8(3b63ea4f,435a5850,aa48a450,570766a7,3079fd9c,56c6e691,c43a3449,fd8dcd5e) | |
830 | Z8(caf4f624,6352b492,415625f7,12652840,0a399b9d,3b313445,748cda99,4c22b501) | |
831 | Z8(fc165947,e0ac4c2a,0a814318,6cb071d8,b4eab9bb,59508e75,2706cf8b,29235d81) | |
832 | Z8(6ae48585,814c0eb8,8644091d,49a7ffde,e1e83260,910b25b9,8cd18eca,34a6fd1f) | |
833 | Z8(3e2acbde,d12f448c,5a1045e9,46e85107,c9e74687,79ce1f20,a4027ef3,4ae94ac6) | |
834 | Z8(7521ace2,811c9269,a43553cc,25e5f94a,9aab05ac,6127a4be,d91c3712,d846ad50) | |
835 | Z8(de27e1d3,50b75b56,95cd8f8e,a1455a3e,85dc59d1,1b9f400a,d9071038,233d2233) | |
836 | Z8(cd6935d6,26545305,cb505560,05628416,b77da63c,110603bb,bbddfc9f,6a90502c) | |
837 | Z8(bb2e13a2,2c6dbff5,35c2bb1d,f0a94c51,3fffbe4a,21abe592,c0cd0a10,bf23dc2c) | |
838 | Z8(f55fbfcc,6318d89c,b8a98eb5,c667969a,c70b40f8,87118cc4,9ce0b142,c161bcd9) | |
839 | Z8(38ef5847,4448f8e9,255ddd22,c557e548,39a42e74,6f11874b,d7e3cef9,4d430132) | |
840 | Z8(afb426c9,34a0efbe,70fbf983,716b2a7c,3bd3ca15,56463faa,bc285e11,191e739a) | |
841 | Z8(76f4506d,7c1ec286,f356151f,82a85854,40536370,f2a0c0c1,4aba38b7,6980e9e8) | |
842 | Z8(117cc462,7be89bf0,edafb40c,aa2ac99a,5530a649,6d751302,9fec52c3,b5fe6ec8) | |
843 | Z8(37c8f4c6,42f074fd,e489d229,8e1944ae,a0a8fe86,12c9b6c1,717d0afc,539941ba) | |
844 | Z8(020043dc,49b30b5a,6ce30c9b,7c130719,85a92717,4d49d6c2,27093567,e5161ffe) | |
845 | Z8(2a88d168,be7e4e5e,127166f9,c43fc883,5ee37d6d,b9023d51,a8e5c36c,94d4bc6d) | |
846 | Z8(72d07160,95c03676,b933260e,89a5d419,5d51836c,167f2ba9,d7f8fc05,5324cf2a) | |
847 | Z8(0fa8ba41,12a91d21,14130044,8f28b23d,6a9089cb,e5b16f5c,71d83c31,4ae0a2bc) | |
848 | Z8(fe4a5bc1,f82d16f3,bf15911d,05bf7242,88eaef29,f0add78a,e5e9b9a3,1bcd9fae) | |
849 | Z8(4f20e3f8,31b011f2,8af87a6e,e2b7edd7,b1327726,2e6c320a,1279d8f9,e1594656) | |
850 | Z8(da293ac3,4609c318,d38d3625,def60e69,8181429e,35abd232,549afecb,8a6d41b4) | |
851 | Z8(a74149f2,bdfce6b8,8ee699b7,d784853b,6abbb060,1208d521,332d9907,b68870ec) | |
852 | Z8(e1482016,0dcde3d7,abfd968c,57979e11,dab5f990,895419fd,7f65df8a,a136c1a5) | |
853 | Z8(fe018a6e,aa687dee,76ff4d37,761cf1d2,76306ae6,e214f89c,84108f78,6aa0cbbd) | |
854 | Z8(a5706346,b28f9d14,2e5cf9a4,525f8902,ee8f57d4,bec873ad,30384b78,c93ae472) | |
855 | Z8(5d51f2a9,cce8ce56,8673894a,c98b2f98,e1bbbffd,8529ab1b,87de7613,e0ed4987) | |
856 | Z8(44d9ea90,1d1a7c25,67c52cdd,3911138d,1d003f3b,22cf6bb9,be499a67,a9a7ba99) | |
857 | Z8(3407f126,9e73cdf1,13177818,4c76b2cd,28315356,149e907a,b8aedeb7,0d4076f2) | |
858 | Z8(df61066d,7b06a5bf,87723a80,edee59a4,e2fb6e5e,eba0c445,c7bb6c7e,a9a667eb) | |
859 | Z8(e4244ea0,02f24910,a0f6036b,866dfac7,b10d8c96,88ccc137,b435b3cb,da1ba43a) | |
860 | Z8(141ddcfb,1b624a65,6222fe58,c0344625,6eddf2aa,743aa936,9dcc56b1,db0f47e7) | |
861 | Z8(b32655b0,fa3862cf,7b011e4f,2e261666,6eb85a17,43a4ce4a,be5421c9,4d85effc) | |
862 | Z8(a15ff84a,822bd87a,fdbdecd9,7162b044,02baf45f,a4884e7a,a04669ce,6c434d94) | |
863 | Z8(de6e1cf0,51de6191,4e1c72da,9cdb9887,f1ca58a6,e448a57c,3d620663,aaa83be1) | |
864 | Z8(43cc2fe1,40d0ea99,013fd238,069de9cc,f2e83a89,535907e0,586f6fa9,b5f90198) | |
865 | Z8(53b8beb0,2552e103,acfff366,ef717787,80462b8e,47416b22,40c8675f,46614808) | |
866 | Z8(7e3c98bf,6773b560,399020dd,e5056b9d,35d1dcff,2fa62ab8,53298854,99134ac3) | |
867 | Z8(ee668421,089fa296,17be0e30,41395bf1,56e98e53,2a8b9a4e,08680c16,230245ca) | |
868 | Z8(caec42af,57a5955a,4a317925,e42f898a,3cbfae47,4a4fae2a,a90a4269,9ba3b67d) | |
869 | Z8(791d58f0,7f59e538,c2789d6a,4070c77c,aa948ffb,256df53c,795c5133,e6c22248) | |
870 | Z8(53fb3ad8,016b8189,b08bd9bd,907e9d7b,f5d5a370,4b50af36,d35b6627,f16389b4) | |
871 | Z8(5aa4383d,af379425,404cd677,80a5b242,57e8988b,5a721895,37de7292,79eb6760) | |
872 | Z8(ad2f1196,1ba7de7a,a9cf354f,2594a260,6dd73dd1,b6da7d55,61b6933e,f67dc569) | |
873 | Z8(7744c7fb,ea3e93dc,7c2e9c88,5fa34eba,22b543f2,72458ccf,aee57ff4,6e8f75ea) | |
874 | Z8(41b46150,e8ae1768,69ea7467,6a49aebe,0828f2c9,3c658566,d76f9feb,22ca586a) | |
875 | Z8(266d2a22,73e51576,554ff29e,0690d264,5b0dfe81,b14ce557,a0f49051,b7e2fc91) | |
876 | Z8(ed5c8b43,71a618b9,fa4d7ed3,b418dd16,8faffb60,c010ce4a,20244474,c7f84e60) | |
877 | Z8(e7742d52,f605217a,ad1b67ac,e0c23c5f,6be426e8,b2e240c2,636fad7a,6158c8a0) | |
878 | Z8(c4fefdf0,57c30c5e,be4d08d4,3bbe2cb8,6cfb75ca,2cfc0cac,926add00,3805f10e) | |
879 | Z8(813ee7c9,0b3fac5d,6518a8a5,260daed8,c495f840,59bad400,6f76ebf3,fd29d22a) | |
880 | Z8(1187585f,2b28904f,0a376f26,2ebfacda,295b5c3a,63440b9b,c233ff69,5c8fac0c) | |
881 | Z8(375fee3c,cc6e8b8b,0c2ba223,f88b39c5,08647914,c9042699,258eef1c,90ae2414) | |
882 | Z8(7a2a9a6e,77030f2d,641d3748,a3dd9d9a,a0170b2f,6df1ff4b,64e440bc,12cb1997) | |
883 | Z8(6ed0b258,ec2d524f,5439cf9f,f0c99fb8,e2dd2ec2,39c1ea25,9ee8b0f0,680b0c0d) | |
884 | Z8(c660f792,943b0688,6f312529,80f1c8b0,db7f52f0,d1c832e6,d79fadee,469f6aed) | |
885 | Z8(5cbbd14d,f5565ee4,82fdece3,de65a828,6ff706f1,f68042be,2ecdc6e4,eeb79f0b) | |
886 | Z8(ea202155,5a50ff0d,e76f79bb,e04ee07e,b38c35c1,03d0d0d9,97edb2c4,c9ef5324) | |
887 | Z8(2a558477,bb4797d6,c22e28b1,b4f2d8cf,91acfe48,e18dcf87,e7d8648c,29243f5c) | |
888 | Z8(7682bb54,6328e8bd,010d685d,4285b74a,46b66797,788e4186,7781ea84,bcc6c1ac) | |
889 | Z8(96f7b431,c815cca8,482d2e98,d96dc540,5321cf31,792dd00a,aa0ff60b,ee90a2de) | |
890 | Z8(d0f32a40,08c297a8,48ca550c,48e323b2,6a89ee91,67e5aa12,4861bf8f,cff7513f) | |
891 | Z8(048a7fcb,770399c5,e7b522d2,427b7cec,a964e634,d888c265,551d1ecf,440fcf9d) | |
892 | Z8(ca731c92,822d639a,73433643,fa274f2a,0be7a07c,57d64d65,01d4c745,813ee404) | |
893 | Z8(fae17aff,e07d01e7,47f4318c,b1b90983,10410001,54401330,1cd1de52,45800d25) | |
894 | Z8(04d85feb,baf4db47,524e45a2,ad7bca98,e2d8a7ef,09a30e01,b206702a,503ee857) | |
895 | Z8(1c64036a,00977a93,ba0e0c30,59a86628,c926fe7e,001569bc,6c61dd0d,b440da7b) | |
896 | Z8(68c3c3bd,8bdab9c4,70a75e65,7c395874,9c05d288,4754fb10,9a4982ce,7c80862c) | |
897 | Z8(4a0770f9,f55bb59d,d3cad0d9,a8b8b4ef,f548fcd5,042f675f,2ccdba65,538c35c1) | |
898 | Z8(f3831e55,9a437fb9,fb25cc63,2985459f,6c5d9414,9a9e8192,d6fd77a7,1b1fd16b) | |
899 | Z8(abcdfb7a,831c8ff0,b5426fdc,ce4e9d02,cf859981,ea3697c2,2021c351,3bb716eb) | |
900 | Z8(4ef697a2,d20fa3cc,f3c94bf6,0952122b,40cc689c,16191c78,74cd3fda,fe001609) | |
901 | Z8(7935bb6f,b77fb5d9,07d502e5,8cd5cb42,2de9c18d,2c4c0d88,39346711,7db21376) | |
902 | Z8(427e80b1,ae328467,8fbdadd7,13deda93,4386788c,0250ac36,08ce7557,e005cc58) | |
903 | Z8(33006ba1,9ba11893,b22a6bf3,b6364aec,c311fa6f,f3414520,781912d1,d61a0b75) | |
904 | Z8(a98ed7a4,333b9a36,f2cea1fa,1379eed1,e3d465a1,afb25e64,2fa3b1bd,823355ae) | |
905 | Z8(748e7e82,cedd2e4f,155b5014,caffa6af,cce078ef,b2ad4cf7,33a7ef35,ba4aae7f) | |
906 | Z8(41c7ccf7,10a5973e,869828d6,78fd3370,e216dfd9,d7443783,7f3635e8,82044fea) | |
907 | Z8(422739b8,b0c0b7d3,c16ffa27,f6854e77,48d72a89,8c1a54ac,149816da,2b98d2ff) | |
908 | Z8(ad95b90b,41e945f1,5c33d277,d1b48aa1,b0862a95,04de73fd,563bb610,7fcc6044) | |
909 | Z8(96d5f0f8,84667dd3,847dbb8a,1e81c942,db76233b,f6bd319f,18ad1c64,f7d30fb3) | |
910 | Z8(b870766c,009d08dc,690e04b2,d3ba0eac,f648cab8,7836c8c5,2be2cbf6,a7c60b65) | |
911 | Z8(8d65ac02,01da00e3,d7c66c15,1f121d20,a89a5937,19bfaa9a,0866514f,b8c6cc7b) | |
912 | Z8(22b45632,6cb6f256,1736a34b,167c0776,2ad8c7c9,599acf06,e7238ce2,877aca0d) | |
913 | Z8(c415de32,198d6cc5,2d7263c3,b040144a,6f18606a,730560cc,19170952,4bda528f) | |
914 | Z8(5cceb92b,1761ea50,b55fa777,8ae6aaff,341bc125,5ef0a593,20921a9e,b8aa9504) | |
915 | Z8(c0531781,4d0896a0,df9fbc8f,7fb070f5,2e3bb085,6ad7bb36,2796a186,8047e1bd) | |
916 | Z8(92d66aab,10a8d0bc,aa091b18,28ef8002,496befaf,37ef27c4,35c27f3a,ac506873) | |
917 | Z8(c11b6772,c9b7d0f7,e84b9418,7e07493c,83887c4f,38826985,42842463,aedb2047) | |
918 | Z8(2bda874d,d59c8933,9acd3af4,bb3393a4,97fa4fb9,61415c31,c011d296,0e58d04d) | |
919 | Z8(43b9699b,f54459bb,ce7e9dd9,066e9faa,0a7d2429,f7d428b8,11d04f43,6daad4a4) | |
920 | Z8(598cdae7,11dc349b,d4a79046,69f9216d,bd29a456,b00044e5,9fc46399,507b5545) | |
921 | Z8(731dd1d1,38982526,2f6d297f,682a2642,1f00a584,405a5457,822312c5,c7acd1d5) | |
922 | Z8(d5b01ce3,39d38fa3,223250a5,f0ca7fbd,48dafecc,8376f1c6,a791c344,200e7152) | |
923 | Z8(f3c3ac58,a8cdaa10,03abef50,0afa4378,34a30f4e,5c8324e3,18dfcfe5,89714ca9) | |
924 | Z8(dee7fcbe,09817e5b,8dd236c8,69c99f3b,790ef06b,d87de194,8fc1d483,91396a68) | |
925 | Z8(66fae68a,5c83f529,7bfb3cf5,59a07c27,58e589bb,aa3ff8aa,969c4c2f,00fa0238) | |
926 | Z8(e00b3d1c,e17dfa88,77520d83,249cbc4e,ec9e44c1,369dcf16,47a18c76,c1697864) | |
927 | Z8(2d3ba74e,9ec0604c,dbae22e5,2b36bcb5,de34d65a,ec04ba63,b6ff9b88,851c4df1) | |
928 | Z8(f77c3c5e,96f0b55e,2ea90eaf,b0888ade,c46ec328,9b87ce73,23c489a6,0b0daf28) | |
929 | Z8(90b762ed,b93b9333,10a9bd0e,0dc08a91,6bfbcab2,a1064e97,ec9f4aec,0f1af0ff) | |
930 | Z8(a0c546b2,fb89448e,a6991627,44fd03a3,e2a538fb,a51b4f90,ac77c521,18d2ac72) | |
931 | Z8(2df88bb8,af617ed0,f9874556,f4314eac,00374f52,f25a1100,3ddcf5c7,75c90330) | |
932 | Z8(7cd9f8fb,86758dc4,116db27e,2975a373,5ae164e5,84bfa9fd,f6f7d242,0b71aa0a) | |
933 | Z8(45b52047,df8dd472,fcbe1260,6639f9c9,5067e0d5,ea0d5ec0,3fceb47c,cc52b7bd) | |
934 | Z8(9db9298a,583fbcfb,2fa80754,66f574f5,f4743d4b,0ac85039,a54bf5e1,721fd6ee) | |
935 | Z8(808893c6,2f767a2f,99af253e,7c50025e,0b28e49c,fcdccffe,48a97769,7bbf6268) | |
936 | Z8(cd8a3751,5e6346dd,6358793d,88a7e60d,ed180863,572ba2a9,00baa7e2,6db82c66) | |
937 | Z8(b8cb9749,d9a4bc49,d4906ef3,b04672aa,f9275db2,9ea72170,e83eb5e6,895554b6) | |
938 | Z8(a8befffd,22501925,370f945f,1846358e,ebc4e382,03b5aa8c,e0106774,2bc539fd) | |
939 | Z8(630d3888,4fd63433,fc615ce6,6e9361bd,dd8d0583,759be3b9,26f734c6,a65e0092) | |
940 | Z8(b26afcba,68417945,a7e70110,a74fab83,9e731d7f,0b72f549,f4d43bfa,cda64ddc) | |
941 | Z8(7c90bd24,c8cb940e,bba180dd,6295c497,660663dd,a8356887,87f86b73,17cba26b) | |
942 | Z8(041fc681,6e7acff0,ac773e7d,bb9fa0af,a60657a5,a6b75b61,a64ccc6f,b40bc174) | |
943 | Z8(2d6db811,c65cece4,33031f42,ccd68348,e01ccf07,e94f3ff6,b10bb018,5d57dc6f) | |
944 | Z8(23fe1134,ec55176c,9b8e1ab8,3d695069,726b7d3d,7f42b509,f4d35e4b,2376676b) | |
945 | Z8(411ddaed,f3fd1099,d8d01652,024f9894,c93be0fa,80f7bc4b,aab3efcb,42c47d3e) | |
946 | Z8(bd23daf2,8291b463,251309f4,987fb636,f710a9f7,78cd954c,d861f553,bddccad9) | |
947 | Z8(0dce5e35,a6d8430c,46385ee2,2540555d,456f1545,829a3080,5c30b85c,2348036b) | |
948 | Z8(a338eeb9,7fc1ddb9,0b1a258e,ccf57673,748c4cc8,83245191,1b682ac8,c720d96e) | |
949 | Z8(7e3c9463,bee86e8f,d6e10fff,63dbb030,895af1e9,96935c99,ed1cbcba,b1f648d4) | |
950 | Z8(8bfacf0f,60841f72,3b5f012c,2a50c0da,02166cca,0dff2d4a,f0e05f74,761c0f35) | |
951 | Z8(bef1d8bd,3f0319e3,479e1ee9,589a9862,ae09a958,1ef8126d,3f179d75,4eb6c16a) | |
952 | Z8(f0ae9759,0812515e,016bf128,1e866a4a,3c22d920,8947a031,58ba9c23,77e0d92a) | |
953 | Z8(b390f6f5,ef105868,74925c84,81ce322b,95eb1f52,d78f0be4,10eab1f9,0d9a50ab) | |
954 | Z8(34a12c9f,c2af4637,e9ac5cba,f9370af2,cd745f43,31479640,f434914e,3b66e8a9) | |
955 | Z8(37dc6feb,6c62efbc,2cab26cc,b9fe2898,10acbfb6,cff85243,897a29fd,cadd1e67) | |
956 | Z8(5a370222,03adb8c2,875b515d,43a7152d,1245ad0f,b6f65339,34698d3d,7aef7ec7) | |
957 | Z8(4f27104f,1d6eac70,d426bbbf,004de056,e33233aa,50ff3d0a,2291a7da,bf05dde6) | |
958 | Z8(76b5c563,a10315dd,acc1535c,7e31895f,058b44ca,cdcf5ed9,509c4d44,6098137d) | |
959 | Z8(d5617c40,92edfd1a,af205b38,27b0c179,28ef28f5,b76bcdb7,4acd6984,e04296a8) | |
960 | Z8(973088e0,5fc56642,7ab2c2d5,fc3b2904,52af82e9,a2c83474,5c71e660,e9a7db39) | |
961 | Z8(34cdb37b,78f97dba,e2289c66,63461839,5d053fc5,8be0725b,91f59f6c,7f86a1e1) | |
962 | Z8(c14fe5ca,b3c65369,22518361,95738621,c10f0499,a448652b,a8afc11d,d16961d7) | |
963 | Z8(b66a5f70,19080a0a,405df19d,f46700d7,5146913d,0c2407dc,07e84ae2,71cad6d6) | |
964 | Z8(2c834886,b17ff548,b9e9010c,75236b77,f09ea8fd,d7232e6c,91ebcf54,67f37225) | |
965 | Z8(065ea348,b571fb2b,99f8bf98,187c3c31,f2ba231b,6f13f53a,c80de4dc,8b9bda5e) | |
966 | Z8(2945dd4f,30ae13c6,47489ce6,12e4dacd,f053af50,dd10d007,0a69be6d,ccc6d63d) | |
967 | Z8(0ec5ec45,be9f65b2,02884af0,dac83f4e,1ac17135,8e33693d,f3c440ea,978f89bd) | |
968 | Z8(234aca2f,88bbb2e4,81aa4b01,eb07404e,da18e223,9a325569,262a9101,c5e2c794) | |
969 | Z8(28dbe1e5,242ed9d5,3e78c92b,3a21937f,4b0d6090,5416843b,7b88cc6e,13b37e69) | |
970 | Z8(1dffad53,95d46a3b,7da51012,2c229f71,619570b6,68c31645,6fa2ca94,c4780abc) | |
971 | Z8(8a048ef0,a6b61f71,571de6c9,d4be5aa1,5121a905,51e0122a,7a5006c9,f2e0d180) | |
972 | Z8(69448794,2da0b277,33b4bba5,133663ff,c8363ad4,af156697,6d1f45bd,3dfd994e) | |
973 | Z8(37fc71f5,948c2718,8060eef3,d6659632,7dc1266d,68877117,788c3af6,d81cfe7d) | |
974 | Z8(fccad251,1e791950,a9f5813a,0e484841,68571e42,404bb3b1,dee73fed,fd98a747) | |
975 | Z8(82a8329e,8c0ddb66,a92b8504,9a4501a8,0fe33f3f,c4b8168e,d9cf0fa6,69f4147a) | |
976 | Z8(377638d8,7b843369,9e8b4144,d4aadf65,be713533,e7fe2251,30d27ceb,885fbdc3) | |
977 | Z8(da2e944d,bc8570e0,1a6308cb,e446f6b9,f3c9705a,dd20b0a7,92bd4926,c1b45017) | |
978 | Z8(6d0d3961,315d24d5,b23f6fd5,4ef220de,50819509,d9341b33,e75204f9,bcbd1db2) | |
979 | Z8(a8265d03,92dd04a2,2e8c9d10,5f5c32db,ed5dd915,8c76a00d,3fd3958b,995c3034) | |
980 | Z8(273c7f50,51e9d844,e230f662,c9012cb7,19a7dce4,9ed40b7e,77b3d98c,7125dff1) | |
981 | Z8(49294e74,99d65720,81bd80a8,b6edf984,cf463229,738e650c,40357374,097468b0) | |
982 | Z8(5479b2c9,f50494d4,a9a337f8,b51ef439,43f820ba,a1e16fdd,dcf08419,bc987732) | |
983 | Z8(0ba6e370,52f3816f,bd0c2c76,9a2a5c41,8bd6411f,fabe790e,036126db,41f0b956) | |
984 | Z8(1862feab,b5ed48bb,cb4ae90f,60488345,8c7f29a7,e67be464,03094180,9c04cae8) | |
985 | Z8(c42627c6,8881662b,6c093098,d9dce969,9b8b8ea9,9840ee21,1e1ff856,79c8f543) | |
986 | Z8(e3c86592,3ddd1f12,6b99b854,f75e0403,750201b5,19549f7e,f0410f38,7a35a470) | |
987 | Z8(3fd2fe72,4f73ed16,7141754a,c28c15fc,0cc77608,df87b86d,071c068c,74264606) | |
988 | Z8(be8611d3,baf9df4f,6ee1b303,21d41194,d2c44836,6465b9f7,56fc23db,b6dcea6d) | |
989 | Z8(7b69c199,113bd6c7,12908219,e03b8e45,4552fef9,4e4bbb34,2081f51a,391a560c) | |
990 | Z8(e54aa52a,a6b6f679,f8e987f3,e58bc627,22c7e802,1ed7f111,7578b583,4e752531) | |
991 | Z8(8c448583,d13a8e71,3fa7e488,b89e7882,77227ec5,f25b17f7,b53e706c,8d2b38a7) | |
992 | Z8(1ac98f2d,e42443c0,91948924,c7d5c80d,1ef679db,0e09df7f,927cac5f,3baead6d) | |
993 | Z8(e082fe89,bcd2e3ba,c6cde42b,6e2fdd38,d39f1442,c195b375,d032990f,3163a79d) | |
994 | Z8(6f53b9e7,582e3015,cdfc029a,d76990df,96fb9107,839b9b8f,cfd31c0b,728fa373) | |
995 | Z8(352e12c0,b6de4201,8e2976e7,05c8f3c5,a92be1fb,946ede29,4a699659,55264d98) | |
996 | Z8(c5f7cc3a,4a61751a,fe0aa645,bce3c912,7af61dc8,f10638e3,dce0f4f4,5bc0dd9f) | |
997 | Z8(78bf2635,dcc0a319,044ed4c6,fc9ce7ff,13a62404,6f27fd24,ed2e33da,5ee6b90f) | |
998 | Z8(3b3ff878,8e7ce9b4,e3ce55cf,0d8644d3,2d9afb5d,58894603,d33a20f8,dbe1a874) | |
999 | Z8(f251fa9f,c030ef9c,71e213a0,3127c3d7,6ae61724,275afe54,4c06355f,ab35a276) | |
1000 | Z8(8e7b83ee,85960e6d,6dc01534,850c2493,a84856eb,2de3ee88,74222cfc,4d4edfe8) | |
1001 | Z8(86e7fed4,4834c6ba,eb3dc5c5,f743aa7e,52936042,f0b36adb,df6732fe,2ac64fd1) | |
1002 | Z8(3ea35646,637c0206,d7de53b7,531c06dc,4a0eed7f,469c41a5,fd93bf63,da7ec99d) | |
1003 | Z8(3bdbcaa9,85844f90,034c53e5,d192d7aa,1330e758,d55946fe,2a5b60aa,5502fb21) | |
1004 | Z8(07194796,899a8acd,dd83543a,a3606728,06bd48a1,53dec2df,2c30d21e,84501cc1) | |
1005 | Z8(f407cf9e,3e910bc4,905d3666,29b175be,c2c045be,997489e1,ae8ac909,5f982299) | |
1006 | Z8(e52cb294,bd3b8108,455349ae,a0d62fc1,b888e0a9,00644d13,9e7c232c,411b3356) | |
1007 | Z8(b80fd13f,eb91c402,cb145ada,815d071a,983de4d1,fcd7cc93,cf2be3f2,db71f795) | |
1008 | Z8(600770e6,415b6fbf,6a3bf86b,85286400,cea9cc75,1702b8ce,2c6c2469,19a84711) | |
1009 | Z8(c5e16f23,73e4a959,144fb276,29b1a74d,ff6014c2,fd494170,4a2bfeef,4754fc76) | |
1010 | Z8(6b573143,56c0a817,6603f909,ae3c9fed,e71c58c9,c2c9eb2a,6b1fd591,468f019d) | |
1011 | Z8(fb1fec5e,7aece16b,d66844d9,313708c5,dbc3a947,0420c8a6,38be94ea,5306637e) | |
1012 | Z8(038a477d,e9956b1f,3aa5e583,06b8526f,ef23a74c,7bcdb679,29fd1fe4,37c2c0bf) | |
1013 | Z8(f14d9e9f,22c27e70,a58cbb4b,2cc1e67e,25092a73,034c38c9,2703e03a,1fb21990) | |
1014 | Z8(037571bd,822b5239,9a9743b5,8aad128b,52af2db9,1570b175,0d47c1fc,9d29d02d) | |
1015 | Z8(969ab65b,46f441bd,43065b43,fd71e95b,2bc24468,e0436af9,923423c5,c637a033) | |
1016 | Z8(97c6906f,fe9102b4,d3b27116,b2e17dde,ac7330a5,dd5006f5,c5f79e8d,ff35b601) | |
1017 | Z8(9d0690ca,bc076cc1,d9901715,c85d2c01,b886afd2,0ee85e7e,83ba61bc,cc613661) | |
1018 | Z8(f9d25229,8a185094,3fda3021,bc6d24d5,f3836fc0,74e426ec,6ead71e5,d76d2256) | |
1019 | Z8(59a4229c,53ff1d78,c8a6dce7,f9d230cd,c4c96b3e,86610a65,0c04b8d4,9a6bf568) | |
1020 | Z8(594cba1d,d887d560,d7add407,dcffb2f1,1db11c0b,f9c3ec7d,85dfa887,b6235a58) | |
1021 | Z8(4eff3a9b,b1bc432a,7fc72814,41734688,c3f23d0d,d6108548,43071f8e,7fdd1661) | |
1022 | Z8(1363f282,a20520e3,d3eaf7d7,bb46f7d4,8bd8940c,70029354,dbf4be1d,573e0723) | |
1023 | Z8(746723a5,ca1b726f,53d887ae,7d812d35,34b3b81d,a7847d39,3616a7d8,d6cca136) | |
1024 | Z8(2a335402,449cae80,6d4fc678,409606b9,464f6f96,d1852648,f99303e9,669e8a24) | |
1025 | Z8(38dea4d5,01baa201,c2e4e63c,827c1fe7,411bdc1d,4f5a8b24,8ff877de,25cf642e) | |
1026 | Z8(8ca87ca2,d288aa81,b4b7a793,d755b21f,217bb733,4b32066b,0167d08e,0c94a06f) | |
1027 | Z8(33e31cf7,6c267976,6cda4a20,48e54861,a3faea87,cfa78099,1a1e7c40,92873c28) | |
1028 | Z8(1378a966,31028e02,b57600ba,7b0a20fd,22def5f0,d6a3c561,416aa555,183acc26) | |
1029 | Z8(bf3833a7,5ff2c51a,8c0d943d,a5794670,0fd405fa,9327c203,d48973ba,b1488393) | |
1030 | Z8(9f5f2aec,e42de389,c7458d46,17ed2458,6941085b,0a4c2fa6,b65b0dd5,5cf646b0) | |
1031 | Z8(e5ed7119,d26f88ed,1c90f13d,d59807fe,bc757228,17cd5774,a0b3038c,a30d3896) | |
1032 | Z8(abcc4bef,21b14b72,f7f058c6,d318bf0d,59cc641a,5d2c7f54,7160e11a,a190338a) | |
1033 | Z8(3fcd901b,11755aaa,fa64df7d,94aeaa9a,4203b81f,8e9d5942,978f6d9b,db35d11a) | |
1034 | Z8(200481a7,e6fcc863,b6b74f94,ed177ce4,e9ace9d8,1dfc3c38,2a909fbb,1ef5d676) | |
1035 | Z8(5d0644c8,643e78e0,dc9a3723,b428bba2,6d366f75,f0875b84,29d0125a,7b4561e0) | |
1036 | Z8(42c15d07,c5154037,7242f4c4,b2e9877e,f3c4587a,510e7474,3b232715,15dbe128) | |
1037 | Z8(53c0f731,006208fc,6a989bfd,1973b2c2,cadf0cf5,1b8ebba9,50aa441f,7463d86f) | |
1038 | Z8(e8117b1e,c820723b,ea1ad5db,079b9214,04f2289d,a70d2433,dea322bd,daa698c4) | |
1039 | Z8(25391552,baf5842d,10dc442b,eb20005f,9873732c,78886507,62a2cf7b,eb03da48) | |
1040 | Z8(dfd0b5c3,ed4b5ed3,aeac8027,eda58084,cf4db008,f3c6ae9e,14a26c7a,2b8f8e9b) | |
1041 | Z8(851a5b82,8d2f69c6,66305968,a19dc640,40d78303,881b9605,c28becb4,f5b273f3) | |
1042 | Z8(faebf7a2,95cc3adb,6c36cd2c,f59964fb,05c1540a,aab636ad,6e8b9795,1d615fe6) | |
1043 | Z8(409bb91e,aeede91f,bbed24cf,c743f6f3,77bab28a,08edb7f0,aec5da49,9683cecc) | |
1044 | Z8(f85a2dfe,3c493b37,1c978134,47e829f3,b43c7620,b04d0e26,8983d70f,d37bcac2) | |
1045 | Z8(9c68408d,9a423224,7247aa44,2dd13d29,7bfd70e4,106576da,5e909d05,70863195) | |
1046 | Z8(097afb89,fc9c562a,dfcee028,a2aae63d,ecbbc134,9fc3e1c0,6c869625,09369180) | |
1047 | Z8(d2521351,24583718,5ccc11a7,338e5c85,167bd3b8,12b60587,4a81cd2f,c62a65b2) | |
1048 | Z8(9947768f,a1f85aa7,978c79e4,c9c7a3c1,15caf99d,4e17e23c,bf1701b8,6e17a9a6) | |
1049 | Z8(97fdc967,343c07c5,c6fe559c,199ce32d,30ea04fb,6a851072,903052af,917857d0) | |
1050 | Z8(a697e51c,3420da56,c110c00e,5e6e6ca6,62cdb86e,82f7acd4,b0c9387b,71b98c75) | |
1051 | Z8(eddd15a6,7f526f4c,8937883a,dc39e74c,b73b07bb,998894d6,b5f2e738,c295159d) | |
1052 | Z8(9fce1950,03d51b16,a1252325,fc928a75,e596298c,151c2660,bd3dfebc,650b938b) | |
1053 | Z8(64f22a1b,2db39c58,71f3b3c7,2d33959e,fabd76f5,4d0e7ded,820bec96,6edd83d7) | |
1054 | Z8(b0329c05,d63274ec,948215db,3721580a,3e9a128d,aa6ff57e,c1ed4fad,44b69183) | |
1055 | Z8(8d67d02e,af6429fd,99e56677,ca5c1d2e,61d84f32,40ed9273,1e32d672,21aa643d) | |
1056 | Z8(e21c2a8b,e9fed43f,dfcaa41e,e44a3c92,8e9adaa2,7ccaafec,720bb770,c50dd48e) | |
1057 | Z8(a296afd9,2b4df343,ddf8aadb,fa177547,8f461442,bed699b6,51e77ed2,ad0440ee) | |
1058 | Z8(b7915de5,c91aff8c,af71d87b,7240dc7e,0e1a86b3,e26e3290,1beae849,71cbfce0) | |
1059 | Z8(c784df6c,65272cb1,a727c0e6,16ed3101,d06ae845,595adcdc,1b3e9d32,93dbd00a) | |
1060 | Z8(08547516,4071b030,b86f985f,c0916505,2e3c99c8,df146fcd,166b4b94,475b995b) | |
1061 | Z8(dd1c2e7b,682e73a5,b4c5048a,7be03d0a,67695a6b,4bf20871,16422f27,088afee6) | |
1062 | Z8(f07ec64d,3f1c9b93,f759c525,b80b0faa,26c1ad98,c24036b7,036644bd,45b497d1) | |
1063 | Z8(eff48d24,432baee5,13df1e26,6aca3a03,b79b229f,4c3ca48f,dbcdc748,a328cb23) | |
1064 | Z8(226b8b56,b81572f8,cb7fd0f1,e52edaa0,3d40b3da,7d5c398a,d146c0ed,fa1a1b1a) | |
1065 | Z8(46d71949,02bdbe54,55570161,5a07d6bb,0b0f0326,696a0e5d,0b314a86,5b5651a1) | |
1066 | Z8(e17d4073,8fef5c4c,efaf1de7,36a4fff7,e3e5ba78,8a9de13a,8cd68d43,06854a80) | |
1067 | Z8(9c227bb2,cdde55a2,0c7088b0,e77ad698,bef5915a,fd297e4f,615cec36,9a7d3608) | |
1068 | Z8(0e932ce2,03965240,21dee819,b469dd02,afc106d9,0fa98ade,c7bc424d,27cf27ac) | |
1069 | Z8(e71602c9,39cb4800,9be30796,93e588da,851fb1fa,843d8ff5,a4166d67,798249c5) | |
1070 | Z8(659eaa0a,6d3cc401,3e89ffb2,e489be58,e2bae238,95ae99fc,68bc4c89,0cd48280) | |
1071 | Z8(70d4e962,d610bfa5,5e81bcef,f7d70f40,b6d468d1,10ed0bbd,6ff4fa82,06bb98b9) | |
1072 | Z8(5ce28b99,a8b6cbb1,6047b0e8,2a6d1226,23e43a43,c5c334da,b25b547e,081a8a54) | |
1073 | Z8(7f0f45b6,85196964,918a8e43,a7865a5a,0396324f,a1a19866,95234dab,0257dd43) | |
1074 | Z8(f102b4cc,cdb51882,8a0d6719,560e376e,1aca28b1,71860ada,70f1c98a,32168f87) | |
1075 | Z8(d98527d8,13d1e00d,9e2ca477,5536002e,173021d3,d13267cb,5486b0c9,64782f4e) | |
1076 | Z8(4b8cd341,74213c29,13aae1b8,6e7af832,aef0a20b,27885e0d,b00309aa,dddb790f) | |
1077 | Z8(f9282e08,af91cf97,aa23a82a,a06ed6f6,c262673c,0c5fb6f4,7f09aa6a,fa648466) | |
1078 | Z8(609455f6,cb1e2ee7,570a95fb,cca80795,27bbff0c,96c50c45,08745d4b,d6d7cba6) | |
1079 | Z8(bca1727b,ca128b94,c39f576a,05fd8a12,7b9044c4,8bc9eaa2,ed67cfdb,35fbc1d2) | |
1080 | Z8(42463a6a,34d59a1b,66cc711e,ed22b460,75162bbc,fc77d87e,fb26a033,09d05255) | |
1081 | Z8(9b035d08,1665b5a3,69950ade,1a4c556d,bff16be4,a9fd0f4f,b23df377,bcbdcf0e) | |
1082 | Z8(9a63bae9,64857e63,628319fd,0ceffdca,b481c25d,424a9b50,2935571c,58349d5b) | |
1083 | Z8(3de9123a,62c6a0f9,fe008384,9a8a5273,287633b8,b6ccfa2e,d4c46cde,5c16b842) | |
1084 | Z8(dd360c3d,aafbded1,6c16afba,530fb1cb,ee9ee3d1,494fbb02,12d836e4,325433ce) | |
1085 | Z8(4bc0c24b,9163842d,6509ecdf,8c83e30f,23b138a4,2e8a30f2,2676a5f5,e6be4d96) | |
1086 | Z8(7f08fb28,44fc781a,b27c5cc1,b0d92839,11278928,86db8e3c,93cddb58,570d23f6) | |
1087 | Z8(3789c881,fff73036,ddd28685,5d193d3f,247ebda2,838fbe01,1f3ee707,258f62e9) | |
1088 | Z8(d2dea49b,b195f39a,a78a72e3,e99c1353,dda894ef,c9375eed,f5722ade,5b127aad) | |
1089 | Z8(1ccb7ffd,2e311775,edb307d8,e28cbabf,85723772,3cd8aef3,8f875112,71699dbc) | |
1090 | Z8(17134dda,7f4b58c2,e8f91e60,e4714f94,32aa4fbf,36dd2933,21a791a4,d080dd0d) | |
1091 | Z8(35b32f29,a94cdb28,51b37960,406267c3,c63f3a8a,8f4636f7,d4d80fc2,ff8c8a1f) | |
1092 | Z8(fc6b098c,b3c0d580,085d14a5,b94a91ad,fb48a262,9f5d2d2a,f1b35da2,9a469623) | |
1093 | Z8(457860ec,aa3a9767,8dfa267b,9323a879,9cc8b0ae,494255a6,a774b15f,09d7681d) | |
1094 | Z8(4d6b5876,889ee15b,6f8516f8,16ed5194,5060ed45,a259cb94,e4d9f15f,906c75fa) | |
1095 | Z8(c74a296e,02f248bb,ef45f840,e6a73cac,b352c85c,158c0a81,8d48683f,41691803) | |
1096 | Z8(0655838b,1a545ee6,3c877d32,42347994,1c1e4692,910cf953,02846c81,fc3c8ba6) | |
1097 | Z8(8179a55f,a883a996,d0b38871,765d2d74,0f859d20,7b85903a,bd2baac0,09e45481) | |
1098 | Z8(17acb4a2,298652b3,578a4684,0bac8bc6,142a72be,cb1699bd,a04f9266,60ade071) | |
1099 | Z8(ea6873f4,b1a0aad3,873e131c,94de6524,268d334b,9032513d,fb129fc7,e65881c3) | |
1100 | Z8(f62f1c71,2e0718a8,874a06f7,ca98e056,6a366499,1f06733a,bfdc725f,088c23e6) | |
1101 | Z8(bb8aa694,8209632d,58b3d28f,3b29f32a,bff4cd3b,d7af88d2,555f8230,3c88ae1f) | |
1102 | Z8(3d6ec30e,e2595c56,a5a90145,8bbeaca0,cd4aa45e,899be9a4,eb2876ba,b6067b95) | |
1103 | Z8(523f4d95,cbc1d9f9,6799fdfc,7c1d879e,106ad7ee,4f7807ab,1d27b7e9,3adb995e) | |
1104 | Z8(2fbfdfd2,b63db525,c25c717d,3f46b735,3662dcdd,8441ed05,154997e3,5cc9259b) | |
1105 | Z8(c5c363cd,210f448f,5affc41d,19a8bbb2,fbb10a6f,7c11ff84,0686b7ba,97b39208) | |
1106 | Z8(183f8de6,c7b8ac27,a9b577e3,0ec91dda,e8aa64ea,b6519c39,f40cdf0f,3620d70b) | |
1107 | Z8(3d5e76b6,c6ce4df3,063d7ffb,aafa4dfc,9108ac91,a994e6f6,536672c4,6dee9547) | |
1108 | Z8(80a6a047,3021444d,a74fa06a,83bf50e9,39f43a20,7109a95b,1c3b0382,20242b2e) | |
1109 | Z8(afeb3d7c,116e134e,3474fe93,f3cbae10,7b3d4444,f90e5056,ca8c974d,e51c00c4) | |
1110 | Z8(75cf5c7b,afe40656,f41d4674,3c094201,2afe61bd,a97b85f9,3091073b,2f502792) | |
1111 | Z8(870685b9,36e03878,d2d27968,b7e1f389,9df3033f,1fb23834,ff943d6f,71c7e4cf) | |
1112 | Z8(d4a76e82,4431ce1f,2d2e9cf4,47a80314,de994e26,a9e41245,653387fa,21bae49a) | |
1113 | Z8(f893d9b7,6ce4c917,4dc2e153,76241b62,ddc91be7,e59ef086,266b28ff,da936d5b) | |
1114 | Z8(efe83c35,62b8c3f1,cfd0a097,490f5f93,a7cf1b12,54cd9c40,b0f6239f,df24dcf4) | |
1115 | Z8(a27495e0,77ea6629,b702a2ae,96cd05b2,d131ef8b,5fd0881f,d83350a6,2fcd5d09) | |
1116 | Z8(4efd6f88,41c6cfad,52d2ab4d,bd3b4077,b34ae921,56bb3b75,b1181e7f,a2fb4a37) | |
1117 | Z8(c3df6255,a83eada7,e9f45fc7,f32993b7,53bb1ced,c06b98a4,b4e7dde4,01cd762b) | |
1118 | Z8(10cbc766,3a3fa42e,6a83c709,4d170f45,8bec2394,f71c8fa5,17dd29db,f806542d) | |
1119 | Z8(5b46049e,dd2e0de7,23933a96,80df7778,1e412239,b2919465,d711538f,1057e2a9) | |
1120 | Z8(9d1bbe4a,82b19b48,77b38f12,8773ed26,1580787c,64a9fae4,95c9ad0e,98e06332) | |
1121 | Z8(0cca196b,30258abe,927b986d,63847ebd,ec1aba78,8f2f2d1f,68680eae,06d37c0f) | |
1122 | Z8(36283fbc,f3e619ca,1b662364,dbd0bbc2,43ece335,536602ab,6c7db599,795eb3d8) | |
1123 | Z8(06bdbf7c,acf32bb2,a4d07a76,f85b1f44,829e0922,0080f5dc,58d2b4bf,7daccde0) | |
1124 | Z8(cedf93d4,fd436441,cb6c99c8,0bf04fa4,f35abe28,a6e8615c,50d95d9b,19738d89) | |
1125 | Z8(add2ed8d,f1edbb85,64fcf0d0,cd394ef4,11e7fc02,74d55892,2c3c63bd,4bc8db33) | |
1126 | Z8(714ff7ac,e4ceb5bf,34d868e8,1fb4e049,da4bfe3d,446d0142,11361852,857e1bb0) | |
1127 | Z8(0af67d36,01586305,af4cf067,1259b26d,15a4d609,8bf7cdae,e3d98955,a937c3a0) | |
1128 | Z8(29926dbc,e0456ba7,a22369bb,4a56e822,f32be0b2,a5b50ccc,65451b7c,d780995b) | |
1129 | Z8(19511fbc,880e1eae,1bd39297,fb6ba5ee,f25a1179,9bef1245,10144e2b,0efd6fe5) | |
1130 | Z8(833b325e,87c9a5ff,2da23382,a49e5d86,012f4b11,6f285c21,a9dc33f7,09d64f89) | |
1131 | Z8(21f8c3d5,a8f8879c,97065c50,15c2ac62,985b81cf,f91a22a2,0f90c0b1,0fc2c0ee) | |
1132 | Z8(5327ad8e,184313c4,39b0bfea,05ac2020,f034ae2c,0500c809,b4723f45,0c2869d3) | |
1133 | Z8(a40c4f1f,044a434d,de3ff27d,3c434098,73cb45b4,ed40fec3,ec6c2085,42d44786) | |
1134 | Z8(eec9c6ec,ed9420d1,67838913,f2417baa,8f75a300,c60d07d7,47464a95,6bafd81c) | |
1135 | Z8(cc04a724,31c9adfb,c2e90837,7f2dc70c,4fbb31d2,8b5a844f,483ac05d,1f289c21) | |
1136 | Z8(54a1d59c,e8017c14,895de30c,e3c8a540,6292462d,7caf60a5,93c583bc,6495347f) | |
1137 | Z8(a00b99c5,58438d0b,68a47a9b,dc8fcbdb,816adae6,ac4e2e37,2b3976e1,0de1b5a3) | |
1138 | Z8(14f0a5a4,e9f002f4,8afb6d3e,ce9f24db,e2216fc0,3c22d43c,e2218797,847b081b) | |
1139 | Z8(e406d4ed,a44250ca,406fdef9,ff7a52a1,4ad5d690,ba096ded,2d9ea549,aefc100c) | |
1140 | Z8(f85c6271,c985aa1d,ba5b1057,15553e55,00a4bfca,06b41a92,5ee1df49,dbdb4c0a) | |
1141 | Z8(5d285860,be654eba,ab9be541,58013a3b,e64ed514,6e033c73,071f38a1,cb4d5d4f) | |
1142 | Z8(4ae864c1,9cbd4dc6,0ae326ae,e82123c5,f543e1b5,bafc3915,f7cfb396,a2a507c2) | |
1143 | Z8(8fa5757d,07a8f4e8,dd8f91b2,36a4445c,5d6169ac,0bbbd75b,7b09c68e,b315a94e) | |
1144 | Z8(cbd71bed,e739ab7f,2056dead,e7abeac0,593eaeb6,99f5e674,474bb1c0,1e154bd6) | |
1145 | Z8(30ccb976,3e59222f,546c6bf4,6a2ca1e0,b0e803b3,be483c6a,b14d130b,76ef2f06) | |
1146 | Z8(0491509e,7fdc8bbd,666c09b5,53ae470f,0cfa9c44,291b6684,5b8ebb1c,7abe4a32) | |
1147 | Z8(022978d7,cbbd4dcd,3424faf0,9533af8e,6f3fdd54,e49c12cd,3f7645df,45555bdb) | |
1148 | Z8(f8ff5c01,790c88a3,0fcbda5b,da978b72,9a362fb0,27b6aa33,7d8f9085,f06eb674) | |
1149 | Z8(73e1b94f,666bbb3a,7224e99e,eb3fbb3a,782453f9,fa99d81b,48ff82fa,31724d5d) | |
1150 | Z8(55420e5b,10be7814,0b05931a,0ee57d89,d9a8fc8f,27ea620d,725f81c4,689412c7) | |
1151 | Z8(f3e0d55e,ec0ceb4e,43d19b5a,78712960,e55d7475,9101031f,a0295bf1,15a3cc47) | |
1152 | Z8(6771de93,e85048ec,36315d55,29c48686,e316eb02,556df11c,75262f14,510e7ff2) | |
1153 | Z8(5e497da1,7d54dd89,09768bee,47507c2c,b127c090,571e8279,5d297f96,3081ad86) | |
1154 | Z8(4cd9de95,ecda9711,43a2cfc2,ff3c57f7,9d7060a8,90a0e465,0fcf9f79,64e25539) | |
1155 | Z8(b322825e,352b3b0a,3bf45ec8,c9bc8448,8a3653b1,67bdc5f2,7eb67b25,d6cf372d) | |
1156 | Z8(8ad8dd10,2692051e,1506e3f9,ade2d90e,5073c07f,b8a22a29,6f51dc55,61450660) | |
1157 | Z8(4039951c,4d30b5b4,b0b6019f,e077d3c3,586d3872,886a1c76,4d58a51b,c9a36cb8) | |
1158 | Z8(ea5e6e61,5aa1bd7c,6b5ad8bf,b4de893c,d5c64edd,352f7d23,d1f02741,a0b99983) | |
1159 | Z8(3af7d32e,94a44876,ab086d42,32c4ae97,abd4fb4b,7c8d7736,7a2dcf1e,306c23ad) | |
1160 | Z8(39053155,d13eb794,35792abf,29681628,6325dfa0,59e393d6,071b4981,c61b9d9d) | |
1161 | Z8(a9bd42be,73cfeb6d,0bd84d6a,9f6255cb,42b187da,00a88c75,879c5988,9802d536) | |
1162 | Z8(e172f101,b41b1d3f,6f9aa4bf,837c5dee,d8223918,991c4caf,90b88399,fc43be5f) | |
1163 | Z8(4114826f,e40e978e,a0ecf3ec,3eade0cf,97ad5ec7,b5f0856c,e6ad357c,c595841a) | |
1164 | Z8(94f42170,f95260a2,3967b320,9a2dc0af,35057e54,20849449,5f95c718,71c4f319) | |
1165 | Z8(c3a6bd6f,a3efa109,23a07f0b,a8910025,786235ca,a696fdce,f9b4d91a,5699115b) | |
1166 | Z8(9e2beaf1,4ecc1871,8365975e,7afe32d0,632359a3,bc32fc44,4a127650,9f1b1f0f) | |
1167 | Z8(887c5bd3,99fee53b,f6751a08,7dcb26b9,13d13dff,1e62793e,a166fff6,1ab02ac3) | |
1168 | Z8(473db31a,65cbf1e6,b403a01b,a9d1230a,0efd35bc,1463c090,a4edf762,7bf8e15c) | |
1169 | Z8(0ec24d96,463758a9,2f11b148,780ad4a3,c1c21673,7067b6c7,e377c849,817daa29) | |
1170 | Z8(eddeb113,f5c0fc54,fe8cac65,75041442,eb40fb4c,03b40842,0a0ddfd2,b9469bbb) | |
1171 | Z8(1a786af8,53dc0fe1,ea8be441,59e23291,88d14d32,8fd2fb6b,be89288f,c29d9054) | |
1172 | Z8(f3fcda10,34b572d4,2a8e3df0,4f1bd03b,18f89da6,b006b029,ac4c11cb,90dcdb0e) | |
1173 | Z8(1454bc44,5e691670,3ebf3c1f,467bce1c,a2e0545b,34ca69c1,e6455722,4c966885) | |
1174 | Z8(43132697,983c2f66,d4721a73,eacefcd3,afb16394,25256f02,f09882c5,f17a55b4) | |
1175 | Z8(8c3b47ed,12ed5fe8,32305940,eda40c49,55f62f77,823a07a2,4684878c,62ac5afe) | |
1176 | Z8(1e20490d,5acbd26d,d5c09ec2,3f2f2057,ad00b7fb,038841d7,c04a356d,c212d7c3) | |
1177 | Z8(e7b1fe0b,3aaa1cbd,7c66ff13,26fd10f7,0068444f,8844fb98,b00b1f5a,978023b0) | |
1178 | Z8(e10b718d,8a67ac25,68ee937a,4b6e20e1,63afff40,6811bc50,cf1b67a6,9cc42d0d) | |
1179 | Z8(63651dd7,ceac0cb5,eeb2f6a6,eead14c1,cb5fb6c3,bf04e41c,b31acdb9,3d9d44af) | |
1180 | Z8(7f0e4be5,208ebb48,48d1bafe,3d2064d2,21899d61,515ff9f0,36bb2544,3e6886e6) | |
1181 | Z8(51cd006b,fa42e770,4be9d286,04887843,dda9e5ac,057f4d62,194f70c7,1836812e) | |
1182 | Z8(d539648b,02344fa5,f459136c,d0968987,7ee79cc5,75d3327d,70c95959,852d05c4) | |
1183 | Z8(682c21bd,01e44d67,0cedcb6a,19c2db78,68021beb,f843afdf,a943cd81,bb092949) | |
1184 | Z8(ee7281f8,f04980f7,6efaa7c0,2184b9d4,855442e8,21163fff,b5e20a1c,9b5ac6e0) | |
1185 | Z8(b9d17a61,fed2ad0e,60e33d63,d8717f7e,137c1660,0a4f017a,1ba7dc50,190d48e7) | |
1186 | Z8(7ec05bbc,579179db,51164d66,754d4dce,280a73f8,3e6ab416,51888b53,98709578) | |
1187 | Z8(a80611ee,e7313678,d47b314b,57c4dff9,4a7b6119,e7c4831a,37da31ed,b857631c) | |
1188 | Z8(8b774a44,5d3982a3,a89380cf,99c79f51,470f5e5e,7c86872f,2d502ea2,caf7a7a2) | |
1189 | Z8(43ce8827,600f8280,f5948658,eee77e6a,9265fedc,d28517d8,78f73f60,d7827e5c) | |
1190 | Z8(9922a2ab,d7ee9a73,8008fad0,20ffdefa,425f51df,1a45afe8,aca9c4e8,88b44aa6) | |
1191 | Z8(2483f318,d2137ddc,3c40abaa,a1807b70,4f2ab79f,b90a1efb,06fbb84b,1111d43a) | |
1192 | Z8(9777ca11,82e6e9a1,e7874ff4,a1760cff,1e9db818,7868d3f5,fc5813da,d08f0b59) | |
1193 | Z8(ac8207e1,95a6d918,29a0fe54,c8ad0eaa,54d2607b,30717cf2,ce40d167,4ed7a144) | |
1194 | Z8(565b8223,0d9c5feb,3fa7dedb,9a948f29,dba50bc5,befcc145,65b2de36,1ff19bc9) | |
1195 | Z8(f459d989,755fb0f5,b5ae55d4,8672fc6a,595e607a,13a95faf,51304f18,cbaf5aa1) | |
1196 | Z8(e7f5a113,74c87b23,c7c801a4,b6a802c9,f9a21979,ace184c8,f84933b1,da54cd45) | |
1197 | Z8(99a6e139,998062f2,7d517a6e,67d50696,a065d5d6,7208edd1,6be0783e,fffd1ffc) | |
1198 | Z8(15ffa111,cd5ad73e,c2d38cf1,0c984a87,df3fb69b,0581f8ec,612efcd4,f90e191b) | |
1199 | Z8(75cc8ad8,d4b13fca,81b23591,94491c38,8e42a03e,110ced88,a4a1af57,8a8d3acf) | |
1200 | Z8(edadf2b7,625f0b76,6f5e3ad7,61e6b6c2,74b43370,7de92545,56898f7a,1340cc47) | |
1201 | Z8(a3fb976f,4f18359a,80a0f3a9,b06328fb,1ba5a3b6,e56d5138,216e9cb8,104763d1) | |
1202 | Z8(75c51dd3,4690a8c0,65ab06de,d7cd7058,be6e0a71,83a2d6d9,69d9e80f,9fb6a4ba) | |
1203 | Z8(ddce7487,23c00d0c,f48d7a6f,21249081,849cf9f9,5b2c4c68,16b1737c,e4ae4246) | |
1204 | Z8(daebff05,6b6b2059,8bec06b3,dc582992,8a993f14,facea004,b727a3d0,7ed11df1) | |
1205 | Z8(42c08e50,d75f3b24,657ac1d2,b709864c,eaa24286,ea7048dd,f5981974,d9360fb4) | |
1206 | Z8(1f5f09fc,66cd94e0,c00dc021,c9febf13,a546bbf3,40eb3682,9f1ce2b5,aee96554) | |
1207 | Z8(37709216,e260c583,df1dc93e,eb28757f,94a2f5dd,48f24d27,b521cd57,ff964711) | |
1208 | Z8(84fe3992,632ab8c0,485dea16,91bc3f93,2b2a3302,91ca86a1,12899699,11698ff8) | |
1209 | Z8(db1ab4d5,7abac182,085e216f,3193740b,ccee9bc2,a080f447,56cddb6b,8d1999b2) | |
1210 | Z8(61695627,6cca0d9c,26946db9,b9109846,4439bf13,3f4ee2b9,c0dd103c,a1aafef3) | |
1211 | Z8(7d48fed7,0be4ff06,fee86825,816649ba,e837dfcf,0a8ae742,4f46adb6,d22df86b) | |
1212 | Z8(4900160a,c07b974c,b3eeb184,897c32d8,695b80fa,26363171,048ccb1d,8a50f92b) | |
1213 | Z8(d525f728,c4fe4211,e77c8cd2,932fb704,c3ac7a92,9aada34b,cf9e34d2,51ccb430) | |
1214 | Z8(1df291e3,4085466f,90ceddc0,dd613ffd,341b40bd,72bdd279,f036b2d3,546f8a30) | |
1215 | Z8(6742f95e,a6d713fb,f5e090c3,4ea7ef8b,e4754b7a,2fe223a6,0d55fd0d,f5333090) | |
1216 | Z8(6d433a27,a2804aee,3e2e193c,efd269ad,70b1081f,78d7df03,8f302143,a69d5ba9) | |
1217 | Z8(71d6bf30,7f8e78f0,f90ab530,f8d3e7bf,15b06396,3cea57bf,9ea2a66e,ed77f854) | |
1218 | Z8(f8f9ccd3,eeb62fe1,482cccfe,63afa43d,7146be0f,fd64d0b6,d8b4ff1d,67a476ee) | |
1219 | Z8(eaf19d53,91c7457b,a4b144b9,62246b05,12a20092,d1d1910f,9325793b,50c396db) | |
1220 | Z8(bd9c39e9,41c68662,766a7954,ce27ce99,ab5b2533,db5d10ff,f375c85d,bbd618a1) | |
1221 | Z8(d95c4f71,f732cca2,5f849e74,1d94bed1,155b952c,accb093c,54b46750,0004f1fe) | |
1222 | Z8(707c7c76,bfc8a7ec,9623e0cb,85dad892,b1ee574e,0487f2b0,43a8e139,d0a8d879) | |
1223 | Z8(f18a1d32,35292a02,6ad2d4f3,9b1e59fd,4a2bf337,a015b197,f3ae330d,55394851) | |
1224 | Z8(d8865bbb,fa6c4019,a5b3aac3,4b23c1ec,6bf91d24,9b96be97,e5e99477,795f34e0) | |
1225 | Z8(20e99d3c,d574bcaa,a7a8353f,1e681d5c,fd2dd2a9,023ff03e,c31e940d,be9e65b1) | |
1226 | Z8(2f5eded2,b393c45d,b08b0cec,52604c56,8f2bfbbc,2783f8de,49bd7206,321efbb8) | |
1227 | Z8(1f70fe19,2230c0eb,87dbe674,29003f53,61cfef78,655e6c8e,329fc38e,cfb9d4d3) | |
1228 | Z8(863ef892,7b73cd2d,d9e0a595,e6e74e85,e48ec654,4ed0f47b,ff248243,6a430c0b) | |
1229 | Z8(3fd2ea1e,e6982c93,75a07c23,a59b5293,8548b069,633cecfd,925ff51f,8adedacc) | |
1230 | Z8(8cb6dc8e,27665aa8,fb1dd34b,1066f12a,7be8843a,eb4564f0,f2feb11c,4e9c0620) | |
1231 | Z8(f0a53da1,65918ec1,9cea9a28,ea0a9f92,d19bd358,1b528451,57968b4b,7a4175b8) | |
1232 | Z8(d9271135,4cd480ec,24c0a42f,07f4095f,b49a3afd,81206daf,eb30dd7a,37eed4ae) | |
1233 | Z8(e6649320,6e6e316c,d3ee4178,01fbd5cd,0a6c1bc0,f4487894,c2bf66d8,29bd14b2) | |
1234 | Z8(81b94ae4,702e3775,7b10dbbc,1adfa17f,8f39cfa9,45d4adbd,7e2aa2f2,dbbcf13e) | |
1235 | Z8(11708b3d,d4a5dc58,5a6ac2e4,a4d4c255,5856e203,589cec29,c6cbb52a,63b2fd7b) | |
1236 | Z8(56d96df5,a64e734e,1c1e5c0d,7b9e95a0,61ed13ea,984064c1,947d3c06,619a6be6) | |
1237 | Z8(e92cc32d,0ee321ef,0abbe35e,91233634,b24a5bca,7e25ac90,bc3789c8,3df21ef7) | |
1238 | Z8(4978bf3c,c7be7c43,a6d66904,28ca1ff4,2ac602a8,f2bc8d1c,5c7e388a,5cf9ccd1) | |
1239 | Z8(8315854a,16300c2d,c2bc7405,3b88051f,fe5c74d6,7befd1c0,6c0a639f,e0fa28f8) | |
1240 | Z8(0d110806,7d0e3c4e,953808d1,21a59a3d,f8c6ca37,d2d44977,6708bed5,710992af) | |
1241 | Z8(6f65eee2,187ecb19,aef96e1a,e166f1d1,eec34c3b,e40a1b41,3e0d8c2f,d10e6cc2) | |
1242 | Z8(78719c90,60078865,08c49261,4d0f32ef,df1c765d,ba8cb146,35ce5992,6c9d6703) | |
1243 | Z8(d8cf3599,3587b144,bbd26ebe,cea29740,ac8e94fe,aa21afe0,bf042ed7,7774bced) | |
1244 | Z8(b813b580,1e20201b,72c4fc5e,75f00619,d55ae56b,2f3d3318,1364701c,4b1f42bc) | |
1245 | Z8(accea3bf,1cea5897,4e0381e4,84ea2d73,37efb700,ae520f69,4f82d598,dbbb72d6) | |
1246 | Z8(7ec19c68,ad64745b,a17515f3,92e45e0a,0f2ce7da,3b843dae,ac4f1a5e,cbf960dd) | |
1247 | Z8(1ed5bcb7,1a8aa82d,10fe1cb4,1458991c,80cc1713,2e21d15f,0e557163,36ad5f9d) | |
1248 | Z8(281ed812,972cb8d5,4c3c4887,69429482,372b0461,06da6830,6cbffb94,c5c9b8b4) | |
1249 | Z8(f1c1b34d,63f8b7f7,783a5100,fefabfd4,67b8edfb,86015b4a,0ca212a3,38be2f32) | |
1250 | Z8(9518f10b,93ed7534,b3b4e499,0abc36df,dfbc5cac,df8a9fcc,16cd5b3d,5b9628bb) | |
1251 | Z8(8cd4acf8,d6698335,1da137d5,91870a8e,4497598c,a67c1423,349c0a0c,80399fee) | |
1252 | Z8(591d2d24,0f9ab945,851207b1,a5ad4144,a17e9723,25a81a91,d723b9c7,feaf1f83) | |
1253 | Z8(1e482207,d8f94106,2bbcf6cf,95bda6cb,18eb481b,893a5867,e0974425,443006b0) | |
1254 | Z8(97f7d527,e8041309,3c93cf8b,1374ed0f,d56f0fc4,d9e9c259,ff5a7346,933711d2) | |
1255 | Z8(3eb12e05,cffc104c,33fd5576,1ae6f855,d9f6344f,addce3c1,f3e8e5ff,8fcf5b5e) | |
1256 | Z8(319c7a72,de69d9d7,283e1d0c,fd9bb0bf,18a0ba57,b4dc1b0f,a08ed831,81e56986) | |
1257 | Z8(29597619,a316fa62,6dccb52b,c94d5b71,959043cd,64639412,88880a3f,a24b4f07) | |
1258 | Z8(b09cb99f,02667d6b,927d4b63,2e5f12fc,490c397a,157ba9ca,3451f25d,9f74864f) | |
1259 | Z8(dad2ef0d,1ecb3701,c9862554,65c1dd61,af2dabe3,1f784d18,700c40a8,c539187c) | |
1260 | Z8(7cdff604,9146d965,5559ca84,5d96a815,8899e85b,4fc9723a,8239b5cd,4184a1f4) | |
1261 | Z8(fb179d49,8d1511d6,e2198d02,44100e48,69fccdf2,9c93adc8,e3a7f956,970a41a1) | |
1262 | Z8(81ece8cc,f80ae81d,bb02901c,967b4f4c,18d69cac,1ab85b1a,d7910c7b,9832588c) | |
1263 | Z8(46a30f68,2df03633,57621bca,94595a0c,3538559f,11551d80,80d6443b,8a90b44f) | |
1264 | Z8(e685b19a,8b133050,219eb233,f3ba8b38,b6401b3f,5130fdf5,3a0a8f71,ecdc4f5a) | |
1265 | Z8(75e22f67,ec28a16f,dd7ec3d4,8884d3df,c6021582,79205bd7,8c29a887,20022b8e) | |
1266 | Z8(bb79bf2d,61618f97,efff8f75,c175ed29,81fabc2f,90a293f9,1f28f5bd,3093824d) | |
1267 | Z8(65453358,4b12c895,f49cd15c,b4000661,0bfa83ee,51811312,f7e0a2ee,4bcf2e00) | |
1268 | Z8(b7ad4f40,bdab0323,6c6cd756,bad454b5,f1a7f1cd,86352a2b,1f898da5,ecc02c3a) | |
1269 | Z8(ea6e82a7,ac9ce282,cf8e88a5,0d8acfeb,7f301c7a,88d383bd,ca6435eb,f623c5f2) | |
1270 | Z8(19a975fd,3a76cdce,786b94a8,6c965661,23b558a7,140c741b,debd643f,b11687d6) | |
1271 | Z8(d1e764f1,620d1e31,d51a940c,8dea0fac,5cf770b1,508e70e0,7be1d8f7,5dfdd635) | |
1272 | Z8(6e259b7f,11f128f3,e92e6487,fd8f7800,058f5841,31570e54,72295731,f983aa5b) | |
1273 | Z8(e469432d,960ff56f,fb32e061,0c5bb07c,3b465346,e28c1082,32de6edb,1805cb5c) | |
1274 | Z8(f1202545,ab555219,d7fb931f,640110c0,c54a617c,1eee7ee7,72c1bf7a,5e33c49b) | |
1275 | Z8(84c3a776,8df9cec2,ef38d18a,69c4cdb5,8ffa4896,1ece70b0,4c5eba54,f31cc291) | |
1276 | Z8(ba7d2af3,f725f0d1,c90d5dfb,d3892912,1a862895,7e588770,a08d15ce,2eb668c0) | |
1277 | Z8(34efaa96,fd7768ba,811d73d1,83b974cb,e4e6dcca,e34f2f05,43071c43,cc3832d1) | |
1278 | Z8(098da0c1,a14a448d,cbd7e3dc,aeacd0c4,2af53153,489aaa7d,a75b1ea5,b7ef4f34) | |
1279 | Z8(71dca9ab,a8abe881,321947ca,dc544137,98fec1fc,d56ae93b,7cff14e8,a57d7c06) | |
1280 | Z8(555ed278,8ded75b7,6147f63c,0a9ee22f,6eeb50d9,4a95f587,34b0ef94,45829bc6) | |
1281 | Z8(2c121812,1d9781a9,555fd93b,73361733,3b191dd1,a2cb6cde,bc9a14d1,fdcef086) | |
1282 | Z8(5cfc4d59,632cf194,a05db085,7806a933,fe954323,e82e5283,2e8b78a3,e6fc100d) | |
1283 | Z8(7f6ace3f,11f20fb3,23c6cc78,94da158c,fbdecfb5,77ea44ed,02535bf3,476d6a1e) | |
1284 | Z8(64d10835,d32b30ec,6ddefdc9,2fea6435,7471d352,03af6be8,d538cdba,0821b04b) | |
1285 | Z8(29638181,24db0337,c17014aa,41cd5233,55f6d445,d5172102,ccb4bcbd,5e9ebca2) | |
1286 | Z8(5952262c,66793e53,e835834d,02942edd,29bfbe95,2d65003d,b09f21d1,18339c3d) | |
1287 | Z8(d22119eb,1d46239a,c9c7233d,b252e08c,bf011931,6e5dabef,3da98563,9e93ad70) | |
1288 | Z8(8269f958,44ccea74,2a273de6,e1a6c79e,207bc70d,d3a40ead,e4931058,fe0eef84) | |
1289 | Z8(d9117ac2,6b1ea815,1e377818,e0c38c01,586c47a4,b8cf5ecc,58c87681,c00ba529) | |
1290 | Z8(28962720,f335a2c4,f050e591,9767d6e6,e064f209,21618579,80b234d4,89203fee) | |
1291 | Z8(8b280839,b0436afa,be0f5b75,cd0e59df,a243017a,926f1b9f,c5df795c,69b64ea8) | |
1292 | Z8(a4d87d65,e1291e33,927f6c9b,fa7280f4,baf39933,afea4730,61eae7d8,031a06d1) | |
1293 | Z8(d46db5a2,1a2b14c3,156ab644,afcf0d0c,99f5bb03,da253042,7ad67e5f,94abcd6d) | |
1294 | Z8(96879937,9954ada1,96154976,c95a100c,04d2c143,f493c5c3,4d3c49bc,44fe6d04) | |
1295 | Z8(aba3311f,9cc421fc,c79bb796,277cb528,e491c927,e6c1ccde,1a3aad0f,beda8a51) | |
1296 | Z8(50b5267f,4655c363,b4b66a27,6ce65a3a,68351f0e,538f0387,921a889e,21fd0747) | |
1297 | Z8(6bae497c,3b8a980e,b025695a,118e2176,eb71f628,949bdd8e,ddcc51fb,b78dd828) | |
1298 | Z8(52887880,42a03db3,05db6953,a17b8d0c,b6fb8890,268bdaf7,6b820913,e82e67ca) | |
1299 | Z8(78fe90bb,76417375,aca15b76,c722313b,732c1a0f,6b039d3c,eb518c97,b38123db) | |
1300 | Z8(51b10704,6d3ed8aa,55358ef9,6c214bba,1fd7f870,95b39ea3,a9bb8546,e02f42f7) | |
1301 | Z8(27ee5cab,bbbe1dc3,1677ec4e,603900d5,7ce117e7,e91fe18d,b95c36a9,ad7bab25) | |
1302 | Z8(5578785e,b8eaaf35,76ec223c,bf9949ac,f75979c5,7a1efa9e,60d15dce,91fecc60) | |
1303 | Z8(758754b2,6238cba5,b762dd73,364d677f,37eca352,f02d2374,aecb653f,7d55ff31) | |
1304 | Z8(10614994,2383ed5e,57a9e026,0ad27019,e56d072e,f378a2c6,5e35bdd9,f3e39db0) | |
1305 | Z8(5ce2e454,ceb69ebc,eda4dd20,87011ad8,60266fe0,f1f8e077,47bdec4e,271dfc84) | |
1306 | Z8(8cf4d650,b12b9ad8,0fc9da07,a3e50fa8,f21f3476,67e05630,2aadcdc9,2d32b661) | |
1307 | Z8(c147ca79,6e777b8c,dcf961de,623b38cb,1a455c06,ac235445,4da824d2,102e07e0) | |
1308 | Z8(15e4ed0f,99cdf865,99c4eeb9,bed8b4d4,4509190c,3738f82f,eec99626,b71cb75d) | |
1309 | Z8(b3b85229,64e3f040,2203152f,9d45360b,3a0f086b,cff82e38,c6f0cbec,77430549) | |
1310 | Z8(67413bb3,00651a5e,0ca29623,aa436bd0,94a2b9bb,1217e0cb,07769fbd,03c31469) | |
1311 | Z8(b29816dc,1160eace,2e48aba5,94c84ea8,c9115fbf,8cd67f7f,c02308cd,fa88fe57) | |
1312 | Z8(25859d89,89d5f829,91d9ce69,63899108,19b684a0,983bfa90,4413a657,36084b1d) | |
1313 | Z8(befbbb3f,e7e231d1,b1cac89e,27658436,848d9764,c472bc16,a0338ef7,b1cb5410) | |
1314 | Z8(c4308cf6,f21b3d34,08589e8d,269464ab,b3a2cbf9,2bac2c48,89bbddec,66435dfa) | |
1315 | Z8(9c82b553,74856e3c,cc86c436,872e8ee2,c1121e6d,28a070d3,b799d9ba,02f50f68) | |
1316 | Z8(7dfca024,1fdfb991,2b41e315,47747e2b,b3d0bd56,150c706d,56147655,f4d9e9f0) | |
1317 | Z8(0c7e9c96,04c832ed,5618d166,a3733712,06591876,0cdadb21,924befc4,9f6db52f) | |
1318 | Z8(7f78f9e9,aaacf08d,f2d5f9c2,daf0d157,15309848,10e3c770,2fa03911,ded72656) | |
1319 | Z8(901f7247,15c222cb,a128e7f6,33729c1c,ed066f0c,6d0fac05,18958fbe,b76604c1) | |
1320 | Z8(8b998b42,ab55835b,584506c5,aa287fe1,f3c5b4f4,84a57edc,dff76022,1cd8a7f8) | |
1321 | Z8(e02d154f,d9dec870,ebf2139e,93c067a3,9c6aa6c0,03923b45,410853e4,d6524a2b) | |
1322 | Z8(f7d82352,c372d0ff,ed2b3ac9,ddbbca3f,58a04713,c6ce9e6b,e8ca1b2f,975e03f6) | |
1323 | Z8(0f47b4c8,802414fb,86157d1c,a134555d,5270f11a,ea104d86,b65c8de9,bae2e447) | |
1324 | Z8(c7349815,0160e65e,82df1bf1,6858b990,4e4d85e9,218f87c6,3974087e,c391312d) | |
1325 | Z8(e74f1cd7,397c120a,c95f33b4,b681e439,9980a37e,8c913194,9e881513,b5b3462b) | |
1326 | Z8(6998a217,c54ee01a,d83e8631,b4c7821e,48dd2077,451767a4,bc4c1ac9,6351ec75) | |
1327 | Z8(8411a18c,d6ea5b77,485ec700,ec4ee4fa,17c0356e,7f0887ba,08fdde3d,fa10fb83) | |
1328 | Z8(7c2adf1e,b88b1386,70ad58eb,22e7d7ce,a1216533,5d2840e4,1d491ff4,cfc77d9b) | |
1329 | Z8(c88200ed,033e0951,f8934cb9,d89fd19c,542c5130,257266b4,c5a01b4a,cd9604d7) | |
1330 | Z8(4b6a1848,d2c2af62,0d3bdefa,7d9d60b5,5174b6f8,af48de4c,95a11293,8ba4af2c) | |
1331 | Z8(062a715f,8dd2da65,442c63e6,4d7bbf16,5062fbf5,f6b2bc8d,fd8602ed,b8c5af7b) | |
1332 | Z8(3d47b922,7c2b6f4b,c15dfb85,1c073af4,e20632ec,8aba9fc4,8d935aec,96bcd18b) | |
1333 | Z8(9e7f9049,1bcbc84b,91dc5610,c072142e,6b199ea6,b25b8df6,4361eb1e,ba983f79) | |
1334 | Z8(268f5b4c,bf75f4dd,75c119be,f4807e59,ff46868d,59e92f50,dcb89de4,8e000af8) | |
1335 | Z8(1bce3f02,e967b29c,8695a6e1,03cd5875,fa418155,dd81f161,b2751c80,ddcb754b) | |
1336 | Z8(505fd732,59c1e17a,7ee13b91,79eed108,994b8458,400600a7,f6f7e985,d01af557) | |
1337 | Z8(1e17a4b6,db23b237,d0a65f19,467f8094,2a876649,8e9ea412,017526eb,f19f59e7) | |
1338 | Z8(d9b6c13d,a5102b67,2d6fc9c6,9ccd8a63,a8d75223,c6cc91f3,eff263e2,653af79f) | |
1339 | Z8(b2a3358d,d180c8a5,a02c2855,856cd4d9,897d2783,fb540d1f,62e81f26,be845b2e) | |
1340 | Z8(dc3bf5c2,c7174ebc,75995259,dead9ef0,72a66b4c,e3e61943,f058daa4,208b9db4) | |
1341 | Z8(63c8dabb,245a5b90,27837d53,e91603f3,c4d5b5f7,0f0aebd4,ffd0ce72,dbdf7acd) | |
1342 | Z8(cd05891c,59075901,95c9c647,9bea3bb9,88edd749,78cc2ab5,2dbad4c6,7273c87f) | |
1343 | Z8(26e4fc8c,0af6f8ab,d7e3a74b,76f8b464,8bb81240,2484bf39,6828ba2b,087f3a02) | |
1344 | Z8(afc44c7b,75d995cb,4d1027de,4fe93b72,939843d5,e0a22434,cbadf258,a079fb79) | |
1345 | Z8(963bfae8,da7d8360,2784483d,010ac61c,5e51ea71,f87c39be,5b38177c,7b9467f7) | |
1346 | Z8(fd683b56,72375a05,2d68c3c7,1785242a,67ea97aa,13b2736c,fe7d95d0,3b31061d) | |
1347 | Z8(22686fea,317aaf2e,ad0c6b26,d3c716c8,57fbaa5b,f13cef93,556f6cb7,6b688d83) | |
1348 | Z8(4c348455,0b2a1c30,05ad32ea,7a2b1ea3,b9eaba3b,0d780ccd,c1f50087,4f77e39f) | |
1349 | Z8(1caf02c0,57fa9070,d953f422,090a1108,0d85e2a4,aa1f9b94,821364f1,66fc84b1) | |
1350 | Z8(c8afbb22,235f870f,fad2cfa6,b7eba71e,ca53c09e,6254971f,f5e2a470,e8cf6a4c) | |
1351 | Z8(40cae7c0,2884ec6c,86a9b874,b14bc36c,f1f256d9,e4e5ae63,70a9a532,e963b7df) | |
1352 | Z8(362377f1,1bcfd9bc,bb3aa87b,f17e822b,81d544bf,a4816ab5,7c009bfa,dd917ae9) | |
1353 | Z8(5c9e4fdf,463d2e83,e42997fd,3033a194,21d81310,41d65e32,5956da38,925fbc2f) | |
1354 | Z8(2ebda0e1,62475719,2e6dac8e,c7ca825c,8119afb7,bcb1c956,2931caca,85723a36) | |
1355 | Z8(136e66fc,fc642407,4d6e7afc,3a6db1ec,98ae8d86,e400c82f,620bd8a0,1941def6) | |
1356 | Z8(16e68267,907ea7e0,40859c2c,5f233042,6f78b9eb,734d89d1,24ad8655,4d389c69) | |
1357 | Z8(fc30dc08,55923d69,24d26c28,f7ad38aa,1e1ae198,8e5c4b3a,1d5e264d,a492ec44) | |
1358 | Z8(4d695f11,f28f5138,dc7f4ffd,0ea98c38,481c7e6e,d4db5aa4,8480e8bf,81981404) | |
1359 | Z8(f04c3619,7dd28219,65562742,92358274,f586e018,c19edc5e,30f7d844,54915d5a) | |
1360 | Z8(db2526af,781b309e,b661e62d,d9148c0a,0af719dd,8ebd6820,6ff2622c,c068244e) | |
1361 | Z8(d8a492e3,63ab552f,427527fa,31e85e30,a1cd57e5,15e31260,c6c944ae,3aa1d00c) | |
1362 | Z8(e97ec2cf,e82bf2d5,132dc3f2,a35a66d1,6260a914,3df5417f,93338f5a,d1886f84) | |
1363 | Z8(30af4a89,cf2eb536,20eb90cc,c897d34b,b53952b8,b6e2ab02,761e8503,efaa1bcf) | |
1364 | Z8(4e4f52dd,2d7dece8,e046d33b,9d30248f,bda00fbe,e3969963,c33528e6,f3b436e9) | |
1365 | Z8(f524831b,0ebdbcee,977751a8,bf57cb5c,8fddcac6,86aee555,4991a480,6bc2397a) | |
1366 | Z8(117c4d41,23e54355,9d46d3db,432ed3a8,a2783a7c,1796a7ed,594497c5,91f586a7) | |
1367 | Z8(38763744,95531389,45b255e1,5dd4d8e3,4d649d88,b4d39e53,289c202f,0ce7d97c) | |
1368 | Z8(1f261956,dc4a4073,318f5419,4846d9ea,45332765,f655ca2e,a60eb1a6,5a7dff86) | |
1369 | Z8(23744f38,6492eb2c,b79da006,714df221,0984d306,70e2e1d8,1244027f,817cd12a) | |
1370 | Z8(8b48c456,c63c93aa,bfcec52e,14122b03,6091a5fb,17f47241,3d4b0431,8997f615) | |
1371 | Z8(83ade652,47445204,0446c9f3,205fecd5,065e42b1,279c7151,0fabd42c,2fe25761) | |
1372 | Z8(1c52acfb,1934875e,ea54430e,bbd342a6,c62fe634,c363c11a,b323e60a,ace2cdd8) | |
1373 | Z8(7edc8843,1f4d3c76,acb00a94,5ac26560,171fd27b,9d0955cb,74031852,4e0992a4) | |
1374 | Z8(d7b6245b,a3e15fd4,f753a150,aa453e59,5a47992b,2e4fb601,99b9c6c2,ac135a40) | |
1375 | Z8(4f254378,c6e6250c,e68ed0c5,f2a4141c,8db7c9d7,76f40aaf,89e123b5,9d227d07) | |
1376 | Z8(e15b2c99,2548606a,74a6d1ca,39e88039,d6be9208,a877ba39,af09cd2d,e2769751) | |
1377 | Z8(714e9eea,18a1f523,cc013b62,497dcccd,a4cf7a8c,8b07f5e7,8135a013,b787ee15) | |
1378 | Z8(63c09667,b3bd8a3c,fe0ce629,ae9f81ed,28adcd7c,1612c963,bb3b7aa1,1837ec72) | |
1379 | Z8(79323731,1e9bfdd9,07aad183,4539adf7,59a64365,ce728949,7e3782a8,2f5ce182) | |
1380 | Z8(001c15bf,e86ee62a,08c0e147,76bfef95,2871c270,45543943,0b9ce26e,7da078da) | |
1381 | Z8(cd73d66c,13e68864,d641f715,a6f9e8bd,3fa3d370,529469da,7c790885,efa982da) | |
1382 | Z8(710191c0,50ab2623,d8d23179,838541da,c5800ab1,bd6a5330,e899bd2a,e18580d1) | |
1383 | Z8(62e2fcbe,8f06ca99,0e4def12,e83ff630,fea264f3,2ae786ae,f5df6929,666274e4) | |
1384 | Z8(4d007241,b71976aa,5d89b385,fa784db9,acdded9f,43402be3,daabf4e8,271920ab) | |
1385 | Z8(e35e3126,8e953fa7,44b0c00f,2efc9cfa,2c1de10c,24c04c53,fbbe1384,80b3d717) | |
1386 | Z8(f46e0ea2,938e9e47,3900bea5,d3afbe07,4f4d2510,a164fa30,9edfd6d3,febad840) | |
1387 | Z8(c404188b,e2e71d1d,d0ac1cce,5cd27722,c857e447,a9a4e462,302213e2,6f98987c) | |
1388 | Z8(0a336d94,39549ef9,f0d16458,5b047ae6,ec69f6eb,0f752d86,799b3c44,c539d47e) | |
1389 | Z8(f2794f46,7cd35101,1368e9df,b3145365,b5869d41,fff938c1,978101af,07e24ed3) | |
1390 | Z8(9c2251bd,324137fe,c024ca40,f20e5a67,84516c34,eecae227,cf35e8c9,021ff73e) | |
1391 | Z8(86055c6c,ba5e976e,787da722,19053cc1,ff83849b,3b93c4d1,bd44b744,93009410) | |
1392 | Z8(0639cd03,a5214273,cfd62755,bb1253b8,98d17474,f607a5a0,49b7bc5c,9b1d28e3) | |
1393 | Z8(780708f0,6bf8107e,216d8104,bbfc0f29,fa3eb9fe,3560d91a,74947fc9,90020ff9) | |
1394 | Z8(732bfe8d,52684573,a89e6738,4f348342,7f779c7f,251dbe5c,222cf016,687fda9f) | |
1395 | Z8(6de2bf99,13d27d2a,91af5105,36cb901f,646a9a13,181f6eaa,079cc034,473acdad) | |
1396 | Z8(77dd652e,e3e22501,4024bd33,96f27719,2d938989,3b4f9392,a6d50df4,c5f01a8b) | |
1397 | Z8(8546f104,7c499967,8e58bd9c,5bf178af,52f731a4,4ddf0b2a,ecb8390b,712fed65) | |
1398 | Z8(c8592854,2172cb96,9e38e1e8,897232b1,efc16d38,02742504,d56df423,3eb2ec63) | |
1399 | Z8(b5cdff18,8ca727ff,e401bb41,e2d18c23,1282e091,674e9f16,6a7f4e6f,ab02cfe8) | |
1400 | Z8(40c0553a,3ae1662c,5188b182,69ccc617,5ea8931b,57be5814,cd717988,f5b2918b) | |
1401 | Z8(03b0ce4e,dbb93120,6969ecae,e22334e1,115ac805,10abea2b,5c4997bf,eef19a9f) | |
1402 | Z8(b710d889,a6b2f057,50a80170,35409450,3070ac04,faa2eb99,d6ed8419,857ee505) | |
1403 | Z8(87f81cb7,691c9f69,36d659cd,2d681486,85dfb6f9,8b7ad15b,cc19df9a,c9ebc639) | |
1404 | Z8(70ce381c,4df36ec3,466dea5b,b3ab97d6,19a5ceb0,230b7349,589903f1,8ff85ddf) | |
1405 | Z8(7dbdcd4a,dc8a54fa,3225170a,3bc0e4ad,1f00b519,f88f9dd7,dc352406,a549269f) | |
1406 | Z8(cd078dc3,a4381f72,b8b0a80c,53f249ae,bd3a5b56,646f3ea7,2dfd61ca,1275bf0a) | |
1407 | Z8(fc4be8d2,96901301,1f1c2fa2,599e8914,d3ca89ad,5506757d,c2c23c0d,3ff77bbe) | |
1408 | Z8(e0e10639,7c3ba00d,39f63f00,3d15255d,4608453e,436f69ee,08557697,9d3b4502) | |
1409 | Z8(4730a873,c0511349,42b7624f,88d224f9,04a9690a,2e486b6f,6febc5c1,1c82245b) | |
1410 | Z8(f3e13254,9f27e43a,23aba80a,b61972c4,02efdb24,5599d1f5,7b648343,813d23c7) | |
1411 | Z8(88c99668,981245bb,3bb44a0b,a5af62f3,59cf7011,a124221b,97566b20,6bd7382d) | |
1412 | Z8(1a042461,dcd83ead,9cfe3ce5,176b3f51,b70dfc13,15c62375,0a36ec2d,283fa20b) | |
1413 | Z8(08edf53e,4beffbb2,37cd8309,cde8c10c,6f606b14,b4b6a8ed,5c1070ae,23e6abf5) | |
1414 | Z8(1aba7bdb,98905887,e9c5cafb,9a8e17b9,636d1eb2,f108730d,ae252184,aa55ba8e) | |
1415 | Z8(2b073aa6,8f807db7,8654e88a,4dcca0da,7599baaf,eacd85fd,c73d9a75,447161aa) | |
1416 | Z8(424cf602,274a9bd6,32be174f,501c8d13,c44d85ba,9e05e1a9,b089cc9b,eead7aef) | |
1417 | Z8(cd973439,2316c0dc,0690a1f3,46da2374,70357fe6,712725f7,d3292acd,5da5010e) | |
1418 | Z8(21c0e188,76107e9c,96543df4,72989d97,09521404,52a956ee,5d7d97a8,bdaa0900) | |
1419 | Z8(7123f7c1,b912de49,3b27623d,ad069709,a5c745f1,79712589,24f1c98d,c38801db) | |
1420 | Z8(fa108ad6,68743d53,97706b2c,42ec549d,0ca67057,2b29aa7b,8e487384,c3abd56e) | |
1421 | Z8(567f761e,c9a0a856,19722fab,e83bec7f,d1f1f650,ae0d3b9d,49d23e34,0636eb19) | |
1422 | Z8(ad33a1c8,bdbc42bb,25a6cf17,d83673f7,c6d1113b,5575e890,fd870f5d,cd94f8d1) | |
1423 | Z8(4059787e,3d736fa9,7f2b129d,e53626ac,db1ed883,e75d458f,f922e250,fdf95703) | |
1424 | Z8(f72483cb,f62b2fc7,1a11eb8f,bdfe158c,5fc907f6,1c293f68,1a5ceeac,b757b0f9) | |
1425 | Z8(a37c6987,969240b3,e58ab60e,8ba172c6,4b332069,a5ec417a,579d86f7,a837df05) | |
1426 | Z8(e858b7bb,53b8b60c,89f10a5f,fb230dce,6fa6263d,32a8db37,f6367dde,e5458e28) | |
1427 | Z8(0636ada8,96c28fae,6aad3ff2,db8b6a3b,003562bd,c8d77356,7ede1f06,b5594e52) | |
1428 | Z8(f06d9d39,bf727c08,ef145876,ba950c3d,8c85cce9,2bdfa68c,b603e9d6,7ede721e) | |
1429 | Z8(262e556b,75bdc115,ad789318,7cd26e3b,9c5a214d,84825f3f,4821ad88,e52af8da) | |
1430 | Z8(73797e0d,f2e10e9c,b2be81c9,ac222c88,152b0e16,17ce4886,a7e7dbe8,07e1758b) | |
1431 | Z8(80524efe,454879a4,505b29fb,bb1f61f9,48ecd832,4325b6a7,c4147f4f,d25eab3f) | |
1432 | Z8(a39253a2,5e52aa44,3ef6ff1e,bc782900,dec49381,a54b709d,c9380ac4,0f797f38) | |
1433 | Z8(3e0df34a,730ceff8,533caefb,82645526,9abea011,6fbde1ba,a2208942,196adab7) | |
1434 | Z8(b00f53b5,26e4a2d0,a9f58885,b84c7c8b,b8f28691,47f64841,220089a0,9dba738f) | |
1435 | Z8(239a15ef,98090186,de8a7020,96a04a15,c6b10667,a3128437,0e55e016,1b3b3f2f) | |
1436 | Z8(544263dd,a310d393,4a03145b,9b3f31c4,e900bfc2,8536c1af,f9f2f5dd,bd06feec) | |
1437 | Z8(55e05aa5,c96e39dd,c4537767,66918b7d,8ae56024,53e2920c,a64c57f7,318b5795) | |
1438 | Z8(a2d5f73f,cb0f5cc7,0c8faff3,3fcf0543,81c55f24,7e395be9,f7cd62e9,85c68ef9) | |
1439 | Z8(0d272ce7,f2fa70d1,f5579c87,8f732dd1,de487d6f,eaad0b8c,ff18f425,5e63e5ef) | |
1440 | Z8(2f29bd18,0b360281,ccfa08d3,1fb346ee,63006920,4dcac38b,5233426b,aeebb506) | |
1441 | Z8(170ebde4,05268f9f,202df2a5,fbc4162f,2ed530b8,943be3d5,6145d9f3,516697d1) | |
1442 | Z8(50eea761,c3d175ab,7429163c,1dc02218,4c90927e,860e41d6,b5c49f85,8d5e05b8) | |
1443 | Z8(4a0d3863,98747fae,3f2527c5,7c09e6e6,3b93d9e8,661f83c1,d181f371,7dcd1a6a) | |
1444 | Z8(17048087,71c6ff3f,f8a13fda,f4a3a2ca,f981573f,085feac7,b0f5f63d,e40fa605) | |
1445 | Z8(53373b0b,6ba755cc,36cbe753,c0e5c623,89452be9,7ffe4a37,02cb4e66,291ba851) | |
1446 | Z8(be972b16,a26878e3,9173e475,c2380999,3a75a8e7,01ddbafb,c62d742d,3ce3a85c) | |
1447 | Z8(eba0c1b2,ebd230b2,0f206011,00d2ef92,0c126e90,6f2229df,363f9874,54c8df70) | |
1448 | Z8(e5e9e294,26e9d675,6e24e54e,0098d942,6da5d965,c7169dcf,9e0a8563,ec2db046) | |
1449 | Z8(b31ba9e2,421b1e6d,bfc4b5ac,011a231a,679bad92,24313528,a81afbcc,22c74166) | |
1450 | Z8(9d61e1dc,bc7296f9,7bfb943c,7b5471bf,f784e940,c5aaba59,fffed1ee,6a8d5aa3) | |
1451 | Z8(cdd14393,4e76c420,a8d7e6a4,b4284232,0ff2a8d1,0e7b0cb4,fe39f8b8,091afc64) | |
1452 | Z8(f49bfc88,7afed6f6,53c4f243,96e56c19,cd95f46c,73f42f01,e968a65d,6fcc35db) | |
1453 | Z8(0547e284,4192abdf,a5489a2e,813fd150,8bd78a06,cc14eb88,d8feadee,56819174) | |
1454 | Z8(3651bc64,9ad449a3,86a9ab06,00341387,cc711092,a5782d24,701b00a3,7d8e7da5) | |
1455 | Z8(f49d15f8,0c3f004b,04ac4a3a,1d4fd4fe,38255c44,4ee2d3b9,93c83663,de330ac8) | |
1456 | Z8(23242aab,04b89e4e,2cfefae7,bb8aa63a,74aab751,d479bcd3,9d8d1ba9,ffb2a307) | |
1457 | Z8(e77d653f,d8b1983e,f1307588,5a97c946,569a55be,661de221,13a768f0,9f1b5e72) | |
1458 | Z8(902ef8c6,58a4a252,52406d87,ad9cf441,65480203,37a0e1e9,7fd93a2e,559ff47d) | |
1459 | Z8(4c8d5215,5bd71d1f,a83b93d3,4e506170,97d13875,03df3622,e151df1a,556c6aae) | |
1460 | Z8(cf931bcf,8a1a7c0b,67e1cb04,9d8d73c7,dc246210,7b66f121,fec7125b,51230001) | |
1461 | Z8(d3e8f91e,a9d25c90,b2e05589,8ea29b35,1a2121b2,90da2a58,6f12f9ed,ccb986f6) | |
1462 | Z8(716fd0da,e5b99404,fc5b8f23,3e7a545a,e0e1fd19,d1fd1bed,976c0199,14682872) | |
1463 | Z8(4ac8752f,960a5413,0e6a3cc6,62a19b54,eed60084,b28f3df4,51422837,6b04a4cd) | |
1464 | Z8(b02aad01,d0dec652,762c8a43,69748a1f,4716a26d,62bbce54,18408143,3c14d163) | |
1465 | Z8(5380fc89,fb282bc8,cf6713a2,6de2e902,d87c1b1e,6e0ee632,41ef8d4c,f63a4a92) | |
1466 | Z8(76ea1ea5,1bab7979,69dad99b,d0b0972b,e8f245ec,7b7f2836,b92a4ff0,831c2f1a) | |
1467 | Z8(62a58184,dfb72847,d64840f8,f3a01315,8d36d95d,8394cf93,65c6fed5,6e32adb1) | |
1468 | Z8(e89ae6d8,1fe96403,6b4a0796,3e239ed8,b2063f00,f3214bee,282b7317,f83fac8e) | |
1469 | Z8(627c8229,8c069722,a6048960,8a376184,8bddeb44,42b6191f,6890f36b,906f8ec9) | |
1470 | Z8(44cf655a,90ead655,0c24c74e,e9627fc9,916ffb25,28713e3c,760bd3f3,9693e1d7) | |
1471 | Z8(4c5e0f0f,95050137,a21d1cb9,ba720644,c6f872be,8928302a,6a26b00b,66547394) | |
1472 | Z8(607000c7,fbcc75f4,4f6638e9,eb8a93b5,dd9400d8,edbc53d3,b64de2db,b5775855) | |
1473 | Z8(6ef524f4,888a1ecc,09227c50,d87bf90a,6cdcefd4,157ab593,e1ddd4c9,95b4b602) | |
1474 | Z8(622cc639,a016eb5c,401364cb,aca65b30,a0aec251,4b1a434a,1986884d,bc62181a) | |
1475 | Z8(95c3a337,0c5c096f,0d386a5b,3b91a99b,1fc0a5c1,6fad40c8,2e85e7ad,d6d6ac6b) | |
1476 | Z8(ba9e71b0,a39283b7,0b45dd27,6fac20f8,046e111d,abd878b3,2ef9f400,a4f7eec7) | |
1477 | Z8(1e4213d2,3ef624a4,feda5097,c34e85b9,348c4309,7ae80437,c8b38914,190bd041) | |
1478 | Z8(8aba95a6,e4d5ffa5,4c8fa8f8,ce03cba7,f89a8f1d,bcd647c0,34d2d34d,eeb742c8) | |
1479 | Z8(797a9c6b,57d08190,94929481,f917a480,a3e8af6a,bdbef089,5bd88e6c,f11ed253) | |
1480 | Z8(7962ceb4,e6e1cade,9db63c13,6fe99ea1,ef97e327,fb8b25fa,0d95e3eb,63c0d8b1) | |
1481 | Z8(249e46c2,50eb5448,8b7dd1ec,cdf41334,c31a6c20,08fca2f3,620f32a6,d825d623) | |
1482 | Z8(270c604e,aee745b4,86d41c35,b9dc10fb,a683f736,a85e0974,ee222b86,19cda2dd) | |
1483 | Z8(89d822c2,6b2f6b5e,c032ffa4,70dc4f5f,c5fa6dc8,21352f90,399eecc6,0ea0b745) | |
1484 | Z8(65b2ae7e,f38dd844,634f0d3c,ba629d4d,c6c118a3,12549887,4afcc2fb,92e9158a) | |
1485 | Z8(8bbd984f,b221afb6,e6db0177,a5280dfb,87cb2f75,1d893663,a5b470f8,4b473748) | |
1486 | Z8(44364124,744619b5,e30cc63c,996d9ce7,544c1e09,8c07c857,fae8308a,45ca60ef) | |
1487 | Z8(94a9af74,8a3a5a1c,159a7049,4c0c6950,703010c2,ba626a84,501ea295,df7b37cf) | |
1488 | Z8(89bdc6cb,9cdfe9b1,2bf94ae3,291a3744,ed1660e1,4ed99d45,c18e44a0,5ea2a289) | |
1489 | Z8(7136a1d8,a7afe5f9,d9cf0f08,07358f85,04837218,0f9de99d,4a3e605a,ee277b86) | |
1490 | Z8(64709497,ead451ea,99def992,38c92cf1,d0900126,9bfbe4a3,86ab3852,74c5f0be) | |
1491 | Z8(2902e218,7f5ecbd6,a8bd5c73,ac0671bc,5075a3d0,ddf87b9a,42195f70,0b05bb90) | |
1492 | Z8(cb257300,099a691b,e0e4371f,d9bfba0a,26bd12c7,74697af3,0dbc32cf,19c2f56e) | |
1493 | Z8(03df8d64,45adc4d5,da125dfb,2e1f9161,06c258ce,9dbeb359,e7082cd7,80a59273) | |
1494 | Z8(5812a4a2,8ba18dd6,a14cc22f,cde15de3,beeda686,b00ae6d4,d83749bb,a94a7177) | |
1495 | Z8(25bf6822,caf47c3a,324dc2ba,47515a2a,002d2445,c43c647a,a2e62e4e,11d1d3b4) | |
1496 | Z8(5c6d12fe,4989973e,f628bfb4,62227827,f849353f,5544a556,c46f57d9,5f1d64bd) | |
1497 | Z8(53dccf96,8d8916c3,a61dc8b2,560d792b,7061c43d,01209655,61f9d5fc,8c6bb70b) | |
1498 | Z8(26202855,83378405,338c9c42,5b265795,335251a0,587ae378,7bd925dd,5a8877c6) | |
1499 | Z8(2c06c3c2,112f161f,af8df44c,c4e83582,61e65e76,95e06828,24d8f5d5,2750fd22) | |
1500 | Z8(cd066f77,1bd7f6e0,f7920027,6721eb63,fce8785c,6a2a4488,0ab03033,60a265d5) | |
1501 | Z8(18f039a6,a036a529,e1969b3f,ed3d8383,905e519f,0a9e7ab8,9f8aa1ef,8fe47dac) | |
1502 | Z8(020ae2fd,a125ce9e,34fef9a7,d4e77816,a2138074,e29661c6,685a7b76,2f9a93c8) | |
1503 | Z8(5951094d,7f869658,aac95376,5e023399,f66b7f29,551c2920,0c7bf813,a59126c3) | |
1504 | Z8(c4795568,6072d800,dda81ce8,77977769,21f1d0b1,3359db9d,8533bc39,a4d5e97b) | |
1505 | Z8(e7ae833f,73302f85,ff386a6f,8e7e8c43,cc6f9b33,20fdc4ba,eb135134,032d8cf1) | |
1506 | Z8(bb45cf31,9a2c7cc3,418ee32f,f6f1201b,3c3d681b,2382b2f3,6d8c922d,f61bbaf4) | |
1507 | Z8(158835a6,8c2fe866,8d3e1a92,45a8c052,6e061630,4405e012,5521f46c,7578c723) | |
1508 | Z8(fc19ac64,aad634aa,1d1dd46a,feef6f87,004e721d,c01fa38d,4e7f9b10,04302593) | |
1509 | Z8(039f36d0,13d11db7,57adbd5a,fbcbd8b8,922f5eda,059ccdc5,ed8e15f2,283e9a67) | |
1510 | Z8(7ae1d410,33c258c8,e392a82e,9491a0a4,0e3e2eda,5be829ae,040697f9,af714338) | |
1511 | Z8(8c256305,f8d7fdc1,8eac7d19,0441f702,5f9506dd,019245da,40e10b34,dbdeb1da) | |
1512 | Z8(d6503fed,ed577f29,57808b65,2cb8344d,5ce337d8,b47c6833,49bf5bfc,83acd365) | |
1513 | Z8(6d26e729,9bd721d9,19724fde,6a6664ee,291a064d,ff949d3e,7ba11d65,25875130) | |
1514 | Z8(fdffcf18,aecb4366,0f5aada1,fef1ab6d,6e6f4b1f,ca88e98e,5e04b492,a321876f) | |
1515 | Z8(304095b1,161a0384,281eff11,0bff6d1f,396fd0a3,90284c3b,74e36f63,8518235b) | |
1516 | Z8(cfe0b28f,5ba00fcd,b61f1de9,4cced297,cb281b73,477a6c1e,b56402e3,8a978309) | |
1517 | Z8(0e55c559,900b210f,735713fb,4930a4d5,afb63241,6d6056b2,37bb63fa,d4e8da71) | |
1518 | Z8(8bc223b5,037af640,9693d21e,4d009f5e,cc80cf26,cdb726b3,023f4dbf,6ed2bd25) | |
1519 | Z8(634d9928,25d758a3,7fb7027d,e256ba8d,79c07867,af868ac0,9059fcbb,0cfd4cc4) | |
1520 | Z8(5f96f2a4,47827691,3b064822,bbabf7cf,75c10f6b,266b1e5e,37f6cb84,34090f70) | |
1521 | Z8(1671dfaa,521185df,d6a309eb,111ca154,1a6e25ac,a15390aa,a220fcfd,fc57326a) | |
1522 | Z8(18eb6f5c,3cfc7fde,bd55a681,a6fc721a,62656dc8,de36d26c,1a837770,63578531) | |
1523 | Z8(cc99ca81,e705fd00,9c635996,f21a28f8,087fc076,d2ba8d43,9c16be2b,28fd7f83) | |
1524 | Z8(7ac486c5,eb631523,21b9f6f4,dccdf6c1,aa40df50,7fdb2747,0f80640c,26ca6322) | |
1525 | Z8(bb8fc7af,b6662f95,372d0f8b,bd1777b8,563a2575,a656d499,e97d7d57,bcc27280) | |
1526 | Z8(4a318c50,e420663a,c840d3b0,9365bb44,8b9d155d,20e8a53f,79ebc6b7,48f82af4) | |
1527 | Z8(31c96a0a,22ec4246,8287d2c2,dfaf9214,1087a33e,92c92350,8880aa46,43515c60) | |
1528 | Z8(7fb68a58,aa93145b,6220a898,6de91753,0c57bbde,3c892e62,38706560,92ef3972) | |
1529 | Z8(d301aad3,fc82d2dc,97806abf,e9d115b9,9b176573,0c927165,6a3cb503,6ee1359a) | |
1530 | Z8(b0b16ecf,f657f780,03b68478,a3f7a935,a593199e,a3b434fc,1a4d6ea0,39fdb8b9) | |
1531 | Z8(623fef98,7fb7947a,a91a1d7c,d5eab813,025b3fd1,a842293d,8ae7b398,7b4d4b6e) | |
1532 | Z8(f71e26b2,59ee8214,f55ac98f,26714665,e24c0c80,340503df,d6ed94ea,12e897fb) | |
1533 | Z8(b92a2b95,31fdd14a,fb08a24b,38254794,c64fe437,1dbd364c,857ea8bb,ee4798de) | |
1534 | Z8(c461b00a,85d5753b,54cf5fb8,59e4bb51,c2078022,0a28cd0a,32abb5c5,6eb32e38) | |
1535 | Z8(9fa7eb6f,bb76d3be,ba27fc00,5134403f,abd8c97f,54669238,502ea8e4,563591cb) | |
1536 | Z8(d34cc34f,e65cbb8b,b8ea57a8,ab219061,17c77790,ca2004fe,2caa06a9,19256df5) | |
1537 | Z8(dfa1efd9,5ff3e937,da731fa9,3b359cbf,62c03724,b2294e21,65f1aa60,e3100cb6) | |
1538 | Z8(2b5c649e,27e16eb8,95b86ee3,24e9da5e,3d12f371,98434f28,63cc4aa0,7a0e0537) | |
1539 | Z8(7332dcee,09c5d148,62d58e02,ea47600f,5a39b742,25e3208f,84a0be7e,c5b2fa00) | |
1540 | Z8(30bb32d9,4d5af477,a8f6a343,d0614ee3,33327990,a9900380,30512208,2a78734b) | |
1541 | Z8(941297bd,67bee25c,1dba4a80,389b38d5,d7a18e6f,53897349,f2c00033,9fa9eb4a) | |
1542 | Z8(8e4a8c27,672a29ec,cf30e3c7,a49a5d25,e4d63fe0,b96cd567,6e3d45be,2cd18b41) | |
1543 | Z8(cfe59545,62e080b2,72e4c638,4571797c,37c44ed0,7cd1d1a1,8131d90d,0df056cf) | |
1544 | Z8(c5462dbc,540b9fb9,e4521e25,8a098b25,92061f85,b330e89a,6a73ea75,909dd777) | |
1545 | Z8(cbc30e09,0c27d6a6,d9a7babe,a668077a,19e235c3,44566edc,9f402cac,687a909f) | |
1546 | Z8(247e88d5,dfd205f7,af0b6e8b,14ef6687,9594f6b7,11709563,5cd5b2f1,ca5f9594) | |
1547 | Z8(f1058e79,e04ecc00,1dd47f9a,c9577682,a29ae593,0d7a5e16,9deb14a1,18aa3fef) | |
1548 | Z8(0088cd84,648ec802,cac71dbe,2cf29060,6c274143,df4bdf11,3e7e9971,4eaf842b) | |
1549 | Z8(92363865,5b51b787,d9acec17,a827a841,3a777bfc,e58adce2,23859641,aabd438f) | |
1550 | Z8(8ce9a5b1,7814bdd5,1ba3f206,cf8964bc,fc142b62,bebfd5eb,b70575bb,fb445441) | |
1551 | Z8(f302a6a8,c68b63c8,853c177b,d50cb98b,8bbe3744,b1a14f1f,011c14e4,31ec7af9) | |
1552 | Z8(9b9c6868,b6fd3f9b,52e636bc,da0fec92,f40b434b,6fba40a9,6f133860,0ca30121) | |
1553 | Z8(b9f4dca0,879ccded,6549e1f8,34c889a7,7ec9468a,383b1fc9,391c22b7,8f1b2b38) | |
1554 | Z8(cf88bc24,37489b32,f5e64d6c,6e6e7c27,24aa54c9,be1ef999,d0c03cd0,b4b02aa0) | |
1555 | Z8(be6f297a,c3888222,f17c5085,fe7a08bd,f44c8bd6,746f7618,e20ea9e9,a0c45505) | |
1556 | Z8(304df305,b5eea4c5,84adfa5d,9e77e2cd,5837d25f,a2273a88,9eb75948,fd6ca853) | |
1557 | Z8(923df237,52db13ee,4f988d10,fbb2caa1,90466fbf,7a75c8ea,5dd39d3a,435db652) | |
1558 | Z8(3b9796c3,d79b158b,d3742660,a5be50f5,4494d259,2db3f4ae,7ce70195,e7b65354) | |
1559 | Z8(d0bd1b77,3b977044,e90707bd,a59b44f2,20753875,80823269,18d6fe2a,eed7de4d) | |
1560 | Z8(f76d44e4,fad69e49,960bcebf,ad42a379,dd3ed328,e748209c,caee1cbd,f106b1e2) | |
1561 | Z8(29e322c1,ec0c8beb,9158b2fc,864c0d45,bc37cfd3,fc85fdf1,5cd280a3,8aebd95c) | |
1562 | Z8(365e38f0,820e1a55,12a80d1e,7d9c47ad,c40f9a60,6ad83b3a,17cf8363,743621d6) | |
1563 | Z8(3cff0be7,bee72213,46fc3f7c,93adaa7e,4b17da6b,bcdb1528,e78a0091,6a915482) | |
1564 | Z8(2bf17679,aa5488f7,3f3d8af1,33dd4bbf,9acb29b2,b711d45a,f274aeb4,4f267830) | |
1565 | Z8(3ef8e1c9,8e31790b,813bb19d,705daf8c,8203ad3e,ad8a0d86,ca9e402e,8c7bdb6a) | |
1566 | Z8(c32ef618,a0ceda6b,fb6ed5c2,7d814beb,46dbb906,6250ef02,fe0f6a6c,eec1c0cb) | |
1567 | Z8(7ab36ff7,ce701644,cdd7090a,bc4d613d,7481f83e,97b8393e,d028388a,88c5c9dd) | |
1568 | Z8(a49b7ec8,a4d4f74f,f42477c0,c61022ad,ff508686,e136400b,3b979530,07e966a9) | |
1569 | Z8(f85402ae,54b36be4,038de0f6,818a026f,808c63d4,42ac08d5,a8d9919e,c7ada550) | |
1570 | Z8(cd81eeba,0acd0548,6b4d7396,5b5b2b1d,229e0d34,23434d91,448af11d,bc5df138) | |
1571 | Z8(af265635,a466e08d,2b05340f,f9a50e18,3925ddab,3e4fb6c8,d9f26235,9a4d777a) | |
1572 | Z8(3839adba,9815fba5,d9df0755,b67a2354,d20bbb67,de1bb1ee,b0da9fdd,9918b6ce) | |
1573 | Z8(c20b20a1,fca992b2,aab0beb3,230d2f86,4c2cca32,f7999eef,166a62d0,fdb10a3c) | |
1574 | Z8(24c484c7,dc60fd03,2437de2e,722ab150,17981405,82637471,d9e7fb08,d1fa2a46) | |
1575 | Z8(49b9369d,a1f46f2f,46208c43,0a4f3a86,99b64c6d,2b6ad99a,b48dd161,ae6a60b3) | |
1576 | Z8(aeabd842,bde0679c,2380c922,976a1e75,93168ea1,1a9b31be,e1b2cb46,94c56a25) | |
1577 | Z8(929236f2,0d5f3128,576af2c5,936d7f74,7a920bc3,07c6c45e,0ba270e3,2e408e30) | |
1578 | Z8(1f7ada45,ce29a409,4a033932,f82c9a99,fb3a6cb7,44c1b2c8,6f8f8277,8ed23610) | |
1579 | Z8(9a15657c,b0862b25,e4f6f615,4d47985d,c858dd6e,ba18121e,77787233,1261ca22) | |
1580 | Z8(c9d15ec3,1abc4752,02144900,70765014,b72d9c4d,7d4613be,53adad2b,92334314) | |
1581 | Z8(ad402231,f9bfb9cf,17211cbf,713bab68,010c9524,369e13d8,3c306e45,2b032f31) | |
1582 | Z8(a2417925,b70defe4,30c578ef,7512a2e6,51e299d1,c6157154,b6622fce,fd673540) | |
1583 | Z8(cab2bbcd,1999016f,15783201,2c45ded9,3e938b76,3c4e7945,1dc47c6b,388bbf83) | |
1584 | Z8(eccf1bd8,84875c39,a0151b9a,51e8069e,6eaae180,50a55c6d,6c8265e2,bb1cc0fa) | |
1585 | Z8(e2ab2b6b,680363f5,18bb0826,2735e4bd,8527cbfd,ec2f306b,52f95fd6,fa4022c3) | |
1586 | Z8(11a8dede,dd95778f,e24523f9,17c9fda5,41399cda,64754bf3,e077c214,5c9093b0) | |
1587 | Z8(dc2c16aa,ea3612b4,f2545644,5a3a254e,5e11a573,dc27eb90,d6215db1,e1af90ee) | |
1588 | Z8(d84418c0,963f8c0c,f455070d,00f90d91,334660d1,0654ca9a,a72d8bb0,f06e3989) | |
1589 | Z8(c7a402dc,35713543,992e0544,d7164cfd,e8e9c716,ad96e2f6,6a0e37c0,56a97069) | |
1590 | Z8(ab9acde6,e3802114,8bdeaad1,b8a3b3fc,60caa9d1,7e706e52,1c388e17,7c2efad4) | |
1591 | Z8(8f8c9c55,969ca9fe,72b4c292,d3cf56e9,f27303df,d559cc12,451e56f3,a5852c8e) | |
1592 | Z8(417419d5,a20a9cc5,ae739fa2,b1113f5d,a94dc1e4,a2fafdd8,1a350afc,3422a695) | |
1593 | Z8(dde7772f,82f97329,6614dc88,d67e4cbb,36cb1191,5bcfb591,c98faee5,c65d3034) | |
1594 | Z8(28b8cccb,3e89e88e,031672be,9655de0a,26106812,c112b1b2,a3ef7e90,75507475) | |
1595 | Z8(bc6639b2,d837b311,29d482f5,a96f6e43,84055efc,4677754d,316c3a37,fd33f258) | |
1596 | Z8(f882291f,1735e719,2ce6e7f2,8d44c44a,8add33f6,8a6e5866,a7857342,eadb8a1a) | |
1597 | Z8(9981523f,b9dcdcbf,891cc8dc,e64282d5,5fecb3ac,ed2840f8,f924c821,53d738e7) | |
1598 | Z8(85c997cd,eb88277c,ce125fe8,17f6aa1e,2676c88a,1be9d8e8,e10b7989,77977ea5) | |
1599 | Z8(38f8aae1,d605244d,a9e51b62,9efb5d17,08c0804c,47d6c2b4,286a1bf7,e22456d1) | |
1600 | Z8(9e9bd14e,e1a3c61f,8be919a2,2e1af62e,c1b5a523,7922ab2e,a6bf3685,ee26ed17) | |
1601 | Z8(d8684a11,d491182d,7f7176e1,30176923,1eb94c60,3720b2fc,eebdd349,27816341) | |
1602 | Z8(f1ecfb73,d08c2f8f,60be4a6e,01fe5481,a0e937a5,98266955,82529290,f2cfdaef) | |
1603 | Z8(84d6b5c6,a94c32c7,635affa4,960d822c,d5afc34c,ec570a5f,34695a12,6478a993) | |
1604 | Z8(4d832eaa,f38b1d5b,d3a829c8,f19d7613,c08d53c2,7875e720,345762d1,dd5020be) | |
1605 | Z8(15ed8308,14c1c4aa,b56c891f,9e7b5e14,4f251692,4531a3a9,89d599ba,ca1acfdb) | |
1606 | Z8(04f57918,074061d1,e2256d7a,6ca4258f,120f70bc,33ef05e6,c3da0a69,46fd6178) | |
1607 | Z8(9eab1817,df0722be,70b7933f,70a5ad61,1d70f001,12baab88,ff30387c,69b4734d) | |
1608 | Z8(f5a88191,c7d95cb1,af3af6eb,8a4e44ea,45b94188,c2663b6d,159a547c,ab71ac31) | |
1609 | Z8(8e64dc92,8211d5e6,c5525d44,13e62232,e80ae705,640e56db,60ea1fa3,8c78ca8c) | |
1610 | Z8(9d7fabba,0f41c568,44983036,ebb12e26,44527f11,f7a44fb7,cbe0d63a,11bb952b) | |
1611 | Z8(d16b2429,a222e3d7,8affc27b,dedd4b6b,c523abcf,459abd6b,ed23179a,a29b7401) | |
1612 | Z8(4210f18d,7b94915d,4db2a165,e09a6496,d5b9b4a0,53d10fb9,8f0aa441,65a61d1f) | |
1613 | Z8(be3e0160,df71c137,8f89c578,1ccd504c,04a12c0a,80d61890,f8f8b67c,8c652fbf) | |
1614 | Z8(87a6427a,715dea98,cd53a354,0f396334,afa686a0,92942826,a0b2a889,ede932a0) | |
1615 | Z8(52f5ed6f,d865e852,2b1905b5,bae3d71a,f7ac0bf7,752520dc,38bb5422,4f61214a) | |
1616 | Z8(9ba8a740,b67c4c40,4b8baee1,7f076271,e7be7261,20fae518,dd83de36,2a7f4d9d) | |
1617 | Z8(ad1809eb,44300e09,f76ecdb8,03db5a49,25f3442f,0a93735c,3be94f05,60f32084) | |
1618 | Z8(54ece803,d2d7e2e1,2ddab7a8,9ef6689f,8d56aca9,91c3cf7d,bca38690,46e5a728) | |
1619 | Z8(633e5b8a,75bb351b,6e05d50f,6b693903,75725b3f,535f4476,2cd85e63,a4cbf5e6) | |
1620 | Z8(40a06294,35e9271f,7298ddeb,737c3a28,7a86763b,0afc8e77,40d0af67,f924d5b3) | |
1621 | Z8(1656258c,40bd8635,714553bf,6b02288c,720e7a9a,846177bb,381ec2e5,b8e34718) | |
1622 | Z8(bfc70616,a8da6801,cf283b57,846928b4,023c7292,48d4f10a,98949a13,731720c9) | |
1623 | Z8(e86c3b19,0ae0c9ad,01331577,51057f86,2d122d03,d7bb714f,9dda9810,a7d7e4a3) | |
1624 | Z8(b2f7ff77,bcb04996,e2b65d3c,c0ac9dd3,5ea3e8eb,cf10c372,fafce1a4,d8dfb65a) | |
1625 | Z8(4093ab9f,d12a8788,31704923,5fbc6ac2,55608d43,42c6a7de,ae9152d7,8967c729) | |
1626 | Z8(54b464c9,8d7a3ccc,35a4a700,99dd5e63,c095f4f1,82937ef9,28d4f197,35780668) | |
1627 | Z8(284e486c,580488ec,7deb3043,685dbf85,542952c7,1f24e246,ddb11b98,7d3de5b7) | |
1628 | Z8(56cce2fd,556f5646,0eade45e,01ee9ddf,8bb04c53,604ff8ef,505f450b,77a8f82f) | |
1629 | Z8(9c6db302,54cd100e,c13829bf,e99833a9,15f0f695,a16effb7,1f250a2e,b0555c2b) | |
1630 | Z8(44fd2c6f,cc35b22c,bbe0441c,22e7f3eb,c575133c,2528b144,aa033fdc,0d51a93b) | |
1631 | Z8(e0473a9b,279e101c,f9a50e0e,e5e5dc9e,cfc0c6e0,08d55816,159759ad,011330f9) | |
1632 | Z8(5529a8d9,b16df326,6eb86363,04818720,8daeeb68,0d38f3f0,87c09b04,c95b91af) | |
1633 | Z8(78e87cc4,79b2ad0b,d288ff93,96997a4e,7400734a,9d66d779,1ba1f8ee,f54a7b51) | |
1634 | Z8(e38dc379,f1adfad7,c02446c4,d287abff,d78dfb56,54eedc77,a313fd01,bff717aa) | |
1635 | Z8(f33f80ad,51a632f0,497805a9,e9019868,19486633,4accc5ed,93418c07,f99c402c) | |
1636 | Z8(721d44d7,6d1324b3,3767a410,f60df824,d7b3e4cd,ba342453,4b39957f,48e1514a) | |
1637 | Z8(aa90b815,5b56157d,edfd7460,5828dca3,02d68ea2,93231e2a,e3f12d86,7b92e9bd) | |
1638 | Z8(2e15aea9,9d5fd4cd,7c236ba2,f18515c3,20d80d05,48dfa910,7715aec0,91703da8) | |
1639 | Z8(b7719cd4,252b0a18,487d6fa8,792f0b35,8694580f,979d8b84,dd7433e8,02f90672) | |
1640 | Z8(8acfd937,4ebf5a18,62161ec9,2cc661a5,1d0b8ae1,0f5d00cc,7ba2d37b,43b84dfa) | |
1641 | Z8(d1bfaa37,3a897964,a928cbda,0480de58,60fdfb74,db407de1,8aeef1f8,261fbf43) | |
1642 | Z8(4f175bfb,32070075,b88c45fa,8c78566a,f45bfebc,d780d91c,b9f56f5a,1b30402b) | |
1643 | Z8(b823d10b,b005863d,a404cad4,8080d124,5da45544,96231d82,9d51a007,151b1c04) | |
1644 | Z8(42c65ffc,e3aa22ab,99206756,23a9bf00,336ae318,5631549e,5e19eb01,b3723087) | |
1645 | Z8(d0e6a1b1,80ee4d2e,af8ac680,7b8802dc,4c9fee5c,c7d8fc73,45c71b8b,776f2dac) | |
1646 | Z8(cb44c322,60255eaa,6a1dcb9e,a3f2143d,ba350248,c8025b53,4e6d0155,d958f0fb) | |
1647 | Z8(d898af92,72f7183a,95c7061e,c91f6542,15facdd9,c13e0fc5,317dd93a,1bdf92a4) | |
1648 | Z8(8e0c3707,9e2498bd,a78a5002,477a4a65,874ca621,cb544703,38dc6d91,c782806f) | |
1649 | Z8(d5f7a7e7,09e1817f,20d37d29,a2cd4b89,9d3b6842,2e18c6ad,030e9b81,d0c90c21) | |
1650 | Z8(07ef4bc1,36afff60,49baa82b,fea6940b,25d8f0b7,df870b88,e215f9f8,08450f43) | |
1651 | Z8(753eeb56,b0b8043e,a820efd9,04f69f90,cfb065d7,d53862ec,b8c5f9fb,4ae87be1) | |
1652 | Z8(edd9c440,91b32c41,24d3e3e2,dbc7f4ef,4353fd91,184084aa,3dff8b49,a95516e0) | |
1653 | Z8(8964afa3,7625df05,0389371c,e8089828,e1d9205f,e75c7aa2,3e83dd5a,98dcb36f) | |
1654 | Z8(520d48b3,c2b52f7b,27b24f71,f9ffaf4d,54014541,9e963d37,6572d095,e4aa2c35) | |
1655 | Z8(5797e494,c34dd16b,47c29223,9775bcd2,2b62dbd1,e4310ebf,6c7e03dd,f76270ac) | |
1656 | Z8(4350b749,515abbae,52942da8,703580d6,b1f2e33e,dd4a3e3b,b980c5d0,6af9adcd) | |
1657 | Z8(a0262286,0bb25bcd,c28dcca6,32dc9f0c,42d6fa12,0654d793,b5c73408,89bc7fe6) | |
1658 | Z8(97280740,c60cb571,1d09bbab,c96012fb,ddaa5beb,10c6a4f4,aaeb970f,623d21a4) | |
1659 | Z8(014d588d,9fb09793,8d9b1648,6bcee7db,1c59d361,3eaae9f7,26dc072c,6192d081) | |
1660 | Z8(2231339a,f285f63f,dc593213,6198214c,d80bc2c8,1a32062c,96956976,53095cad) | |
1661 | Z8(a51c63cc,ac54986d,f32663db,d75a31b8,52655182,b3c7d560,f34e5bb7,7f35ef60) | |
1662 | Z8(f20ea1f7,eddcd018,5ad50d5a,701283f3,1d0f8bd6,84812393,19c13064,b95aa971) | |
1663 | Z8(140621a0,7a440cca,aab3148a,057d1b80,74d00138,aa7c058b,af011fcd,da01f60e) | |
1664 | Z8(59c639e8,cdc0592e,257d00c4,d8710d98,27cbbe4a,0876e36d,36e464dd,2f9403e1) | |
1665 | Z8(2e08e4de,9e1f7269,d9209aba,0160eb50,62178979,c4cd4b77,91d01327,d0da47a3) | |
1666 | Z8(611a770d,9821651d,5b0e2bdc,fcebab83,c9bbfb3f,ff4cfde7,570ee6df,4973aed2) | |
1667 | Z8(94aa288e,7d8918dd,9e773b5a,3e07dcc8,fdd118fb,21d20f63,1eafb197,0cdba2d4) | |
1668 | Z8(32fc4ecb,ea68b422,2d9e44d9,42c8fc86,cd40dc4e,7ecfec1e,38b5f023,88bca151) | |
1669 | Z8(01461826,7d2ef73e,54d02ebf,725877fc,68c05473,75c97a39,199cceb1,3eaf648b) | |
1670 | Z8(d1efca04,38d09f9b,d1fff6b0,cbacb3b0,832abe37,7bfdcfbe,b3a97771,a065422c) | |
1671 | Z8(91909947,8b322320,33bc0125,8c7c62c1,18ff3879,7d6236a7,6bfcbef3,99f77ad3) | |
1672 | Z8(23654b18,de3c58fb,b257a23a,20bdd2cc,2a2131e6,f449b192,03082dd6,a0b50fd2) | |
1673 | Z8(4333a04a,db7cb6de,f8f8220f,67b451a2,af49ecc7,9f10c91a,01f21f28,3a46fe53) | |
1674 | Z8(3a0f5164,9503bde5,e5f5fb4b,706d89a6,dba8d9b7,1b2d845c,80d867d8,9537fbf4) | |
1675 | Z8(e2c4d089,5a27975f,6739d7ba,13001446,579d503d,32ced8ff,37edf3eb,6fd37131) | |
1676 | Z8(9b466c48,5ef5cf3c,808536a7,ec720b66,290adfab,90bc3a04,6c16b12b,cf266666) | |
1677 | Z8(f270a207,97e5ff4c,263086f7,9bfa2099,8240d705,6e20a0ff,dd9831e6,36ad0280) | |
1678 | Z8(6ea2371b,a3b85a1e,68fd7b13,322c2bf8,6d7d6454,a493fac2,9ebe46ec,dba2f464) | |
1679 | Z8(87520ef4,4c8b43af,cb37b3e7,e55ea834,a689f11c,8d51b36c,cca90ec0,adf734b3) | |
1680 | Z8(7536e650,5546c15d,0fc72daf,793e8b16,d3f5c6b5,1117ac72,17e7cfb4,7bd95392) | |
1681 | Z8(3b9ed924,52eaeb13,ab6bed4f,0a19820a,4147e6a5,31448064,a43b73b0,9acfd1ac) | |
1682 | Z8(94b6783d,fe22e50c,70ca3031,dc2f55f8,c3e4a38e,6d82217b,8cc65e80,40c5deff) | |
1683 | Z8(7c1f2b65,d01bc922,f6a5b85a,f5e7c780,aae29108,7bf204e1,6cb381c4,508e73c1) | |
1684 | Z8(dd3bbb95,a1aa33e2,a330025b,fd7b93f9,041c1d9f,34aace94,e7bc6b9b,1fa3ccc1) | |
1685 | Z8(583c2497,2e650722,80a5581e,3f2a7c9c,e501500c,5c4b5b8e,e76bdfa1,95c05088) | |
1686 | Z8(13ec0758,bfed2378,069458cc,4637eb10,ab2b3539,4349c047,ef2ee7bd,c630ec6f) | |
1687 | Z8(828bdc33,34453bfb,b9343e7f,37904a8c,981e74ec,a86f6b59,d2fde1dd,de9d7253) | |
1688 | Z8(93844b59,d29cb3df,1e2f72d4,de28054c,856b5f9b,ce567322,dec08a6a,0d190223) | |
1689 | Z8(22d3317e,1dfdfc7d,e86593ea,23fd04d3,5d2417fe,8428f4ba,c12e69dc,7addbc72) | |
1690 | Z8(ff5cfa40,1090b562,6bb9363f,231e1f5b,237c8a33,378fc388,2d47a147,7bd52818) | |
1691 | Z8(974e6934,9e5a01fc,ad29bc59,874ce2fc,6e04f97d,fd2590d9,f07e4bea,fbbec9bd) | |
1692 | Z8(08cea682,4574afee,93b2aa36,4c39d2e6,6ccb9c52,d0c997b0,f2365a46,a463fca3) | |
1693 | Z8(9a77d35a,792d7c48,90cd9d57,e64e9d36,24fc8089,e0c61a35,091bca03,ecb57460) | |
1694 | Z8(e9b1137a,83a39371,aaa90958,c38caa09,d5d62609,c9c5f4fb,b299c30f,872c2b87) | |
1695 | Z8(bab323fc,d82bfa26,fa81df15,ed6adc9a,b896ba82,1aa8b337,b733792b,8ae1cb8b) | |
1696 | Z8(7488c870,3424267a,3e6ed740,4476e354,c0a584a5,aa953e2d,dd59eeb9,ba684379) | |
1697 | Z8(58168d22,9f6d1d27,380a0504,108f93ad,b8c79819,030b413d,0975e308,b5decd20) | |
1698 | Z8(7b02b9ac,d55d00e6,1174ccf5,46908261,1f1b9948,e503800d,313bfa92,59170a91) | |
1699 | Z8(cb2ccd72,b85f1ed8,40b70336,caf642d2,dd60180b,0e5fef9d,d53797ca,8c7ddcc9) | |
1700 | Z8(9ce77536,a51c8d22,aaf18d53,e84a7365,753bcc1e,7b0ebb07,95b802a8,1a003ebc) | |
1701 | Z8(5c7f3a87,386af20e,f96b7bc4,8ef98591,f284e080,267a1916,9878c5dc,9ec122f2) | |
1702 | Z8(0042eb1e,5108ba7d,057252a3,e7a7f105,f207691f,f34d8801,90cf8691,d29b651c) | |
1703 | Z8(4db2a0ab,ee8327eb,280b550b,a7940453,dd7a724e,ba16c257,2ec707ca,99e7a7c6) | |
1704 | Z8(a0d6edd7,3f14a133,70f305f4,5c48aeea,751fde9d,60f36de7,3763fe69,24491e08) | |
1705 | Z8(a9daa465,83827655,cfdeaa27,de868ee3,cc4dcc5f,baca8d09,10f61d30,b73b52f4) | |
1706 | Z8(d0c8beb3,47784818,2970c6d8,a91ee8bf,1466158d,7b1b3044,60b52a3e,6ac3bf2f) | |
1707 | Z8(259616dd,25512c0d,ccdcca59,3c9a8513,85a02504,af5748fa,4ae224ce,d37028e3) | |
1708 | Z8(181ee0f8,46aaf820,51c39433,ab926f67,81d5c728,2ad7fece,9b47c83d,f4ac33b7) | |
1709 | Z8(4c4783f9,9ba481a1,e6d6830a,a652289e,12acc474,14115aa7,4da61704,87494edc) | |
1710 | Z8(c5b7ad77,ec10443b,dce11b0c,c1f589a3,51f59e00,db586065,2408fe1d,77f06b9e) | |
1711 | Z8(9c7e0b38,cde05423,e0f67847,f32401bf,4f0838ed,1f518a69,9fb003ae,1d904ae7) | |
1712 | Z8(2e18322e,fccdfdfb,2bff2db6,dea485ff,7e43ad7f,0d81b626,efda0f76,ceb39582) | |
1713 | Z8(180b91ec,f938d261,d1b15cc2,19165547,89b6af1d,4ba0cfbf,5bd489b2,8d5c8b0d) | |
1714 | Z8(3728836e,be14aecd,47ceb86d,4549af3f,c319de52,08e80a14,d1d7920a,245e5bbe) | |
1715 | Z8(f4702418,dda9a13d,ca2fa179,74ada683,b97c4918,3ce95a6f,ecc88b13,2466f155) | |
1716 | Z8(08ca6e7e,98d10dfa,08c7621b,6a9977b0,ebf7a6b1,3e7845a5,e0dbc28d,1de34ccd) | |
1717 | Z8(c78da9c1,123dce18,94c7494b,48be4cda,ed199e0f,a1ac78c6,622a77f2,4a8eb9d6) | |
1718 | Z8(9e90f210,31de0bc4,b80c8ec8,2b06caa6,65fda265,69b90d1b,671f7b96,d83211d1) | |
1719 | Z8(a24c775e,25502698,72e1d200,e31a1ba8,f899b652,df3c323c,e38e9b3f,77b228fe) | |
1720 | Z8(d3fd1156,70fd4139,0e914fc5,d07842d6,9f19520a,509e8ed6,4a395f8e,ccff6504) | |
1721 | Z8(69137590,1dbf1578,c54c8b11,382e885b,9f218d96,cd42d4e6,5ec82dd6,1aae09da) | |
1722 | Z8(a62b01b7,ab9b1731,d1b7e0ab,f8f42c6b,58d00fe2,5a3b1445,bb0eeec0,24bc8002) | |
1723 | Z8(2199aa70,3cfb9675,d9b46106,c7cbc566,382ecbfa,7e2512ca,4b5b2735,81198ecf) | |
1724 | Z8(fce74681,3527c33e,ef971965,a9df4a0d,89a9a7b6,0cdd4b6c,65df5edc,2137d0ea) | |
1725 | Z8(630c44d8,72358686,fe47daa2,bb3a6f96,6786c864,ef8f3db7,347a5fdc,09cf41e2) | |
1726 | Z8(bfd425f5,1ab277bf,de65c3ca,5b8e6ba1,0627a74c,9e8c9b82,d0c7b3ae,a36a5882) | |
1727 | Z8(e0b01b48,463c4fc8,93f4c5d7,edb95c21,142990fe,453fb14a,4394cc56,476644c4) | |
1728 | Z8(9a23a668,7e6c577a,38bdc4a0,7c4e63b8,b3c16e35,9b39af61,4a652a7e,99ce6097) | |
1729 | Z8(290b6935,731f83b8,7df0105a,1933ceaa,6fd94f4e,f3574565,3a14c7ea,7921624c) | |
1730 | Z8(756b23db,ef7f966f,1e1023f1,f3b8e410,5a6e9f44,6de00f4a,f6e6f9a0,e7607f9b) | |
1731 | Z8(46f26034,23327a8a,ff81b848,64e4038c,a61cb84a,2f9a8c1d,5cdd984e,0c925c8d) | |
1732 | Z8(ea81cdea,2626a199,2929bf9d,81488c05,c7c15525,86577831,2b04c310,616f1fdd) | |
1733 | Z8(7898f402,a79019a6,0080c7a4,1ebfc564,43a685a5,c9f00aed,da460ba3,e376b819) | |
1734 | Z8(2a62760f,d18d56fe,8621cde9,07b84ab6,e012b055,d36078d7,97af6b03,e6a41441) | |
1735 | Z8(baf86dd1,020d1c20,6d4e13b5,f1983188,30c754c4,2360ae4a,7d624c00,0e4b980a) | |
1736 | Z8(f1dbf23b,d2518d5e,d8e3647b,b49759d1,6e0edf79,cb45a21e,4ce69ad8,74096bfd) | |
1737 | Z8(f3fce937,75aa48c8,52188249,87b63c0f,33e9d711,29a8936e,877a941a,cf6ebd5c) | |
1738 | Z8(7ccfe177,f06f4429,cf31b1ac,87ee5705,10620d33,3f7934d0,e2d321d0,4b3721d8) | |
1739 | Z8(c03b8f49,b46cdf79,228d43d8,368f9f03,da5517c1,013dc2a3,1ce7661e,c857ff26) | |
1740 | Z8(751bea46,81faee6d,38ff4daa,435058fd,17338de0,67c10455,d5120103,5d38d99e) | |
1741 | Z8(4aa8e3bc,535bb263,ed52efa1,c44397ac,343dba42,dae4d90a,8f46fbce,e8cbd58a) | |
1742 | Z8(31a4a929,d20aa71f,c0385d43,b3637ee9,9de04922,2a93dbba,8d365387,d954bdc5) | |
1743 | Z8(b25bbb4d,579f7af9,0152e74c,8277cbcd,3f77d833,12da4fb1,9d1323b5,73cc5af3) | |
1744 | Z8(68f8f4cb,76f7d7a9,c8b67e6f,139a6bfc,1d622ba2,757dd8b2,5224b055,099cf151) | |
1745 | Z8(c87c7243,494f8a38,f369a455,dcd990e3,b2edda84,a73171d9,9a16a0ba,086b05ec) | |
1746 | Z8(44e075ec,d44d32fc,27fc66e0,32841bb1,10ed48f8,b6e9edd7,46a3765c,611d977e) | |
1747 | Z8(150e31e9,a071f9cf,06aef18e,fac5b78b,c29c79ff,41f99c12,db7e1585,a7a783ba) | |
1748 | Z8(9a82b49d,c6f7999a,287eb113,9efba619,c3bd5de0,859d2187,f0e1d62b,6df60879) | |
1749 | Z8(304da8fe,7e18e0f0,c76d5c96,5dd800dd,490acc06,d75177e4,675ce1e7,a906b56b) | |
1750 | Z8(c65140d0,4c755c6a,90d94e56,fb62f284,f2112889,8936dffe,2ed38659,13e63c6a) | |
1751 | Z8(80c5ac2d,0eff7b08,7256a82d,d713198e,deb6bfe5,26ec4b37,2cf1ecd5,7f383386) | |
1752 | Z8(c0588a6f,e0e44238,f4ffd6e1,afd85a13,71a8a87e,be91b944,87321d3a,931e6354) | |
1753 | Z8(d09096f9,fb477db8,d4b87b53,a8449dd7,ac1acfe0,b86d3076,b9439077,dab131dc) | |
1754 | Z8(9057ab2e,b4a4e8f2,f5169920,4d5d5da2,e7236608,888fb623,4745ea64,fabc947f) | |
1755 | Z8(35b44a34,6abad3ea,7484f02d,2ebd7ad0,d2cea2d8,6e432762,4022f31f,5cbb0de2) | |
1756 | Z8(f9f5bce8,8e3d70c9,3d32baa2,2436b9be,a3672411,14f8c9f1,3bd7aafe,909e2711) | |
1757 | Z8(2e920841,d044ecca,cdac3828,cc2501ab,7ceddd59,9020880a,1b11cbbd,6cc7c3d3) | |
1758 | Z8(aef92fca,1add679a,b218043f,7192b976,4b86d4ac,d49b34d1,8c1f4c51,5f8abd9f) | |
1759 | Z8(a1e5b13b,bc7d5d33,1be064b2,f7f75d90,37445092,58335dc9,3f95dd3f,5f9ecc3e) | |
1760 | Z8(5c68d877,9587caa3,01a429f0,a0018fd0,6f8dd138,25e5c324,2e2fd3c3,6a0e9c64) | |
1761 | Z8(58d38a15,fa7a7272,e1089709,a86565d6,e0593c37,f21dec9c,486b080e,2506b096) | |
1762 | Z8(610cbded,8b493876,8a3083c6,16186ec2,7592e3b3,138e6d25,c55c0e20,c887b711) | |
1763 | Z8(77896c91,7e5a7c54,be4939af,375038d3,e2b95c76,ed798f2a,7e692a96,bdfd2e14) | |
1764 | Z8(532de006,400a6c6d,0c630b6f,8b109f4a,c2a9b8bb,ce0cf55b,36937885,7ea37951) | |
1765 | Z8(f92d351a,67916341,73919042,4cfe26cc,492d3893,1d885956,c741b727,f017e303) | |
1766 | Z8(587f79ab,3bdda4cd,d5b16721,696f6f93,5200f1ed,8f4fd2c7,c572da94,23186093) | |
1767 | Z8(8d2ce6be,0b70a4e3,01ff60b4,fe061c7e,4ca16c97,1b3c9495,fd11ed48,34e7de5f) | |
1768 | Z8(237add52,fae088ff,0460285f,e50ac3a5,d2f3ad70,315708aa,462210e0,45d31a4d) | |
1769 | Z8(5e4de7e3,386bb615,27c59ac0,71b37ebe,0ee77bc9,5fb5fe5f,413d9b05,4f36e754) | |
1770 | Z8(6e56a720,2e3a24c7,90a9f912,8929c88b,45db0db2,6d86d4b6,7afdeabb,edfce6d1) | |
1771 | Z8(b589ccdd,049c9ddc,b12ac0b7,c94829e5,b5a3a4d5,d17d82e4,08a5e627,97930d89) | |
1772 | Z8(30fb8873,d6655d63,a9df95ec,cb7a0bdd,1b95a40d,f785fd5e,9abc1803,7d07461b) | |
1773 | Z8(3e6e975b,4a9a2aff,b9963359,6f434532,23cd4ace,4598d75a,cba04209,8f0b0a24) | |
1774 | Z8(22263ab7,8f3ef602,d61531de,cd5781db,f897f469,30126888,a2bb24ce,e3537ffb) | |
1775 | Z8(adddb49e,3c5c438b,dd202e1d,766c0503,27044eae,c144b945,e3170844,cf82f7fc) | |
1776 | Z8(038a3476,a59a87a0,b8f22634,f9fe5a38,31c99582,87431857,633d7400,4dd2c4f5) | |
1777 | Z8(c92f3349,556cfe3c,12076c46,fae3b105,5597d37e,0f6946a4,a6147a51,a6ab9b58) | |
1778 | Z8(85230c4c,a5c39c9c,0c6f9991,7554c807,82c757c3,9f101934,b6ea1cf4,041f9f0a) | |
1779 | Z8(be455c12,235947e7,c510a3ba,d5ce92ea,21c24064,adddbcd8,fb85f5e8,8f8b14ef) | |
1780 | Z8(c044d454,1488b79f,c6c30e10,3d413e3f,0b3230f9,e120b545,dfc146f6,1a41ac2b) | |
1781 | Z8(b2769a93,a337a159,e9208332,3c7587ff,dd1e7c23,fefe0ac0,b33084bf,0c2dd6f4) | |
1782 | Z8(9c702421,0c6cf357,d3e34923,b3033531,5268dc2d,3bb6ae06,9581d437,6ac9d3c3) | |
1783 | Z8(4835d324,3109b84b,649b8da8,e92fbc1d,ea444a5d,d3816f50,2def51ca,3f3e1c73) | |
1784 | Z8(5805bf0c,12fff876,550980c5,0a5f2ad4,6ec61c4e,9a393b31,397378c4,67790811) | |
1785 | Z8(46ed0177,a2db9593,d230c2ce,8c2bc0bf,74d81271,729b0ea1,37330114,aa472b52) | |
1786 | Z8(54d14eea,7b5ac4a6,090bf753,0d46d356,c308cb80,0f65c5fd,a8ae8ec2,1373158f) | |
1787 | Z8(4806011c,872cf023,232ce410,f5b45f85,00c309b3,bfe548c7,ec85c526,d64de4a9) | |
1788 | Z8(83b9601a,e725b042,cc4b4204,33411a3b,b97487e6,6dedccd5,d764ecfc,ba013302) | |
1789 | Z8(f7e3e5f0,a010ac5e,66993aad,a7c92188,c6c36e8c,34ac7ef2,d64cc2b1,b474db56) | |
1790 | Z8(253cbc6a,167c9748,a5c383d1,eb9f9a5a,7910cd20,bf573dac,9674bfc8,8cc3ee79) | |
1791 | Z8(9e2d7e93,570275da,450a6703,84c5eebc,2210adfa,3bef6b88,413cab5b,6c8b5573) | |
1792 | Z8(46c94f8f,e1c2fcf3,04ab86d2,515bbf12,5196e9df,7a1af850,4b9f6cbb,ff6861c0) | |
1793 | Z8(31bea978,ecaf42df,a2258cb6,0f2f2b2c,c5ca8c83,b2a8d5ab,f09edb82,4bd9290b) | |
1794 | Z8(abbaed5a,9cf213be,234bf07f,6323274a,7f4b1091,d1b64712,4113a3ac,8819329a) | |
1795 | Z8(7123ea0c,f0c15e6f,4a0d13b8,4365205e,86eef405,861f5d00,1634b9eb,550765a5) | |
1796 | Z8(33d1c1dd,af0e0aba,5af86606,4b7726de,c9cbe7d6,b4392639,437fd669,36b347a7) | |
1797 | Z8(6aa722bf,d0d5b23d,23e7520d,60c146b5,2c00b016,68185efa,95fc7d6b,5bb53c80) | |
1798 | Z8(1e00d798,52a62474,ee7268d1,2ad34471,5bb620b4,8f2c9e89,c96970bf,534dc286) | |
1799 | Z8(b94ed4a8,b5a08d93,50cc569d,03be6af1,3eefca5a,f16c7fdb,c0e68e0a,a7483394) | |
1800 | Z8(4cd35bfa,6b70861d,29ad88a9,fdf5ad3a,7087926f,7f660805,1faf7094,98253b63) | |
1801 | Z8(790cba6e,d73951f4,e1e9eeb6,2b250997,72690360,936f66cd,9dbd5b6c,c0c27dac) | |
1802 | Z8(76bee1bf,3d99dbee,790d6cc1,8bed161b,f45ec91f,b0439a24,c0a2d8b6,57c5daff) | |
1803 | Z8(bd4c7b7f,4849b0b6,02e18333,90319ab8,85af3769,805ca8e8,41d03a42,f576cb4f) | |
1804 | Z8(d9566b89,fd97cb66,bf19086d,26c9e817,a824380c,0a07fc3d,9a8da5fb,77c96216) | |
1805 | Z8(e94b08d6,cd4946b3,b89f5eac,36521f06,aabdd3e3,f6b275ee,fe231a38,a761d3be) | |
1806 | Z8(0a8c83f6,88699b9c,2f6e4cd2,2c4f4d6a,544a6464,a942f701,83c8268d,f2576801) | |
1807 | Z8(21fb9ce9,d358ac56,b834aeac,bdfaf51c,b5da4acd,741fcc30,d1072d1b,00fb9026) | |
1808 | Z8(08badf33,697abe14,7a068c69,42cd55ec,ace3a6c9,708ccf4d,05b374c4,7d16311d) | |
1809 | Z8(fd5d402d,b1004cf6,a8bc4cd2,875ef5a3,0b94c482,cd805bf1,9bf8b125,6d72215b) | |
1810 | Z8(7679ad17,e7d589ed,1c58611c,c0054c1c,e45d269a,050d9da6,2942f9dd,3701610b) | |
1811 | Z8(7ade70a6,b76a46df,356b0d1a,8d8fe1c2,139920de,5b9b47c1,2986d24b,ca531de8) | |
1812 | Z8(5c52f0d5,e70019b6,d59b0845,691ebe91,57e122c8,003229b9,2b35b4a8,ae8c0772) | |
1813 | Z8(776119d1,6dd399b2,cb923bcd,052fb98e,2ba05e80,1fe2568f,dbddc609,e937ddd1) | |
1814 | Z8(6a475899,84cc47e6,7a63adce,90d1e82b,f352a5d7,90316f92,164caa2f,96b9e7c0) | |
1815 | Z8(46bbdce5,fc73d794,843e0993,f2fe5c38,a6ae3b2d,69529381,3de4a7a0,ac731bd3) | |
1816 | Z8(e66ac51a,f3657e01,6b7d88bc,5883b5e2,8a6d87f3,32c83827,2e9cc03f,7becb1e7) | |
1817 | Z8(73d89140,480e12c6,5effbf80,943ed5a8,c18ddc09,56b3ac87,0f522160,c8e52004) | |
1818 | Z8(4886a5a3,81dc5268,4155560a,3adb2b73,7fb426a9,fea8de12,4db626a6,52bc27b8) | |
1819 | Z8(07276d82,c9ca533d,29b7b89b,06dc7197,5d879fed,b69758f5,58506420,452f6228) | |
1820 | Z8(086e8bc2,70071dc1,b36405ac,e0446e90,0cc7f7a5,2fab8616,71faec92,96d1c338) | |
1821 | Z8(cc4f650e,2bed647a,90586864,4694ba03,940a6a53,248ddce4,15a88d86,364db3e4) | |
1822 | Z8(5fdcbc07,6343ed4b,95fe4bb2,ce86f7de,c5cc16ff,d978a042,9846ad2a,be969017) | |
1823 | Z8(f2133494,7db9f9b7,3fe64299,bde86347,52be925b,6ae1c560,d835fe2f,ce827c3b) | |
1824 | Z8(0a170c24,a4fbb323,f6acf6d0,42ce4990,0a13bb83,598c626e,ce20fb22,66de15cb) | |
1825 | Z8(5b56edec,1f8f4fc3,76ed5761,5dbb1e69,2ca0accf,4ab7719e,d6b166bc,d1d7e493) | |
1826 | Z8(02ba9518,29aaf7ae,6a47d8e1,cd77e530,da1b4709,a7cdf8b8,c6911ad6,71b982ca) | |
1827 | Z8(f149733c,433d14be,0f0f8dec,ee7c5e6c,921862ca,91bd9068,b70ca66f,7ca6a0ac) | |
1828 | Z8(980cce36,15bd438a,17235e58,a0c02814,267bfeaf,3d052a8e,ba05d912,501598f1) | |
1829 | Z8(2510f1fe,75816fe2,a93e16a7,33cb178f,7d796521,acf22f9a,17f6652e,5dd47253) | |
1830 | Z8(c5e72196,9b42c377,15e8f44e,b942075b,31c25f64,542a0630,788c6ea5,c8ac3b73) | |
1831 | Z8(4405328a,ee74fe80,9c9083f1,118782b1,1be3b315,371ab357,9516f209,ba3902a5) | |
1832 | Z8(3da4d693,f2ef6d33,08f3bffa,031ac558,b275ea04,7d1fb15d,e33c72f6,68f5ad6e) | |
1833 | Z8(234afc78,dc2c6217,b06cdbe0,ee7798d1,4ac5b150,b942426b,f5153e9f,ca26d532) | |
1834 | Z8(4fc16886,0cc1c2b1,f44b0ab6,0ac52de0,e78242da,254802a1,86e8bcdc,b9477099) | |
1835 | Z8(0f7a8947,a6f8dcae,cbf31492,7eee200f,ae258a11,75dd7153,6542858d,75f71e7b) | |
1836 | Z8(df5500ce,7b759721,5bfe1895,ccb3b591,e39ec991,ae1789f2,9ad124da,8868a14f) | |
1837 | Z8(e7a2cb6e,07456f0c,f5be13df,0472edc3,c59370bd,3def6483,5d78bb17,954b0571) | |
1838 | Z8(b95ea78d,91bffb26,eb0016f0,3aa81462,69980dbc,95b6b8e9,3815d880,83c117ce) | |
1839 | Z8(a053a56a,6439b1f6,7105586b,3985a989,26e6c1df,fa12988f,262a4722,aa0fef89) | |
1840 | Z8(fb04db75,f848a2ca,e3176074,1d561252,956d9a6a,dd7d78a0,1a827dcc,eb32f25e) | |
1841 | Z8(6c28dc4d,a938e725,c6bf49a8,84e1eece,642ff0f7,01954eeb,352b320a,d83055f6) | |
1842 | Z8(47f72d70,7da2a6d3,a11becc8,13d430eb,00e845ae,cde56a32,62e3f081,43200b26) | |
1843 | Z8(392d8ce1,346e8b35,cb7d1911,21abde48,e83adccb,9301a4bc,b7764d2a,ed0959f3) | |
1844 | Z8(c7ef0eb0,0dd6fb44,9cba8e52,49ac5d9f,50b095da,745f969e,ae8ef3da,02b7c8d9) | |
1845 | Z8(9b9532ba,c5b7329c,65849245,c3aaf17a,6b5deaaa,78501306,20cc7c54,20ce4820) | |
1846 | Z8(b3ff5cf4,eed3f4c1,1bf1a239,a1967f26,e2fdc943,cd1db626,a27b0d6d,e20a86bf) | |
1847 | Z8(d4c9888a,a0a7ced5,b919d049,293c7093,36e4b638,158705d5,d79525b4,cfd73f55) | |
1848 | Z8(6722a8cf,ffe57aa1,46a25a88,71d66d16,49b009c6,2dea97dc,63669d88,8e064b3f) | |
1849 | Z8(c9be8ada,1f91d799,f865cbeb,778cbdd8,521b46d8,f359b473,4e922221,4f90b322) | |
1850 | Z8(918282b1,024873a8,c86b9f32,5ba779fb,1bd16947,895cccc3,9a6f2f4a,8843b388) | |
1851 | Z8(8df6dceb,d3b9533b,eaa575a3,75e3a4b7,2ee4aa93,6cfeca82,80677af0,fb6f6218) | |
1852 | Z8(69bd8816,a394c8b8,2464905b,244dd334,19cb7c6b,93525da0,1b874f1f,b1afd8e7) | |
1853 | Z8(86c0ee7d,d2180f30,e4e39e61,312d2ade,a4225596,682a3b29,ff38a967,a36aea8a) | |
1854 | Z8(7a2b3083,6a2e159e,340be36d,aaea6cdc,bf607a64,d3ff39d1,ebdda28c,970f4d17) | |
1855 | Z8(fd03dbed,5e183bd7,0782ec37,e0eb2eb4,4f362b62,f1e1f7d5,42344330,01dfb051) | |
1856 | Z8(fb7185ce,7bc0d3d9,43f5e1ee,cae6a5ed,cac57779,61b2ed55,8afe5f00,dca425cd) | |
1857 | Z8(9c9ea008,ddc17954,0c08df52,0052a097,6cd5a7be,46fedd33,f8bab6c5,285f3e90) | |
1858 | Z8(83afe269,702a6cd5,2ea6becb,cab998e2,8049fa03,2a34e63b,2c2cfce9,991c1845) | |
1859 | Z8(eba0cc74,5eed6701,20e9909f,1939ff68,098da512,5bb7e081,af26e423,93a6cbef) | |
1860 | Z8(c11aac50,791431d0,c6f919fe,680a0ee0,ae63983e,019eb216,df7c02c1,5351e600) | |
1861 | Z8(8bc307f9,1ee93044,5c58ea7d,e2810e80,2fb2b4fb,5c8335cc,3133594a,9011aa57) | |
1862 | Z8(11597a56,55ac3e16,5849131c,037fa0c2,ffeefece,86b12d36,a8c57c0a,d4912a20) | |
1863 | Z8(b656b717,33d597a8,5506c9fc,cc27d89d,300c207d,81391a43,5f93f3be,ea328a0a) | |
1864 | Z8(ea95a777,213cbe01,2cd70c4d,8758f8ef,ad300711,5c9b12ea,54550b15,18975b26) | |
1865 | Z8(b811f643,287dd141,a9b92e42,e9c01494,25e4841e,6d3d8859,c581aa86,15ba2a2d) | |
1866 | Z8(76b5dc2b,153be21a,fc4172c7,aff62580,b9e2ffcb,955eb0a8,031d42a5,e1755585) | |
1867 | Z8(5bcb50d5,38305325,5123dcda,d08ccd55,0942f9e4,ed14133e,45ba173c,d80e9b84) | |
1868 | Z8(3a828deb,9b49b906,7b6389e9,618c66eb,4f5f391f,c5a1ce3f,e7af2675,dafbeca0) | |
1869 | Z8(42640c63,957a94cb,d48a412b,b41c1544,3cb6f318,b61e05bd,d9ce2897,bb72ce86) | |
1870 | Z8(cbe41a2b,3b3cc419,c9045029,5872d95c,e99d65b8,14167d88,c0a91535,83946895) | |
1871 | Z8(36de1028,37321241,5dfc2732,93802c4c,138ce47c,c2a593a3,dc73c5da,bba63903) | |
1872 | Z8(0868fb02,0fb3dc65,51291d5b,befe6a7b,c2869c70,2b4452c9,017ab1d6,176b0585) | |
1873 | Z8(60901507,57a454e7,a80b2fff,ef1cac0b,1e418faf,4a341f76,995ea184,b93aaafa) | |
1874 | Z8(e10668b0,8632b7bf,176ed32f,4e43a223,1f41b717,ce6506bb,39324a48,35f992f6) | |
1875 | Z8(66c67fff,76909e55,48c91f2f,1b5e6948,08c11d5c,8ef713a7,71e3c85b,ccd3e78e) | |
1876 | Z8(83a2ead0,1f4a4750,edf859e9,c04aaf63,12b23463,25418c32,7eee1220,1db3a350) | |
1877 | Z8(d9aa5ae7,531187a0,b01933a5,1a3f0850,de463ab7,4c8142de,cf3759d0,7b715073) | |
1878 | Z8(3ceed410,f545c91d,9f446915,04b26636,5b65afb2,e7e67bdd,495a9559,a3b9cdd5) | |
1879 | Z8(36e3a419,c7317837,a2085985,ec7b7153,fb4df77b,d4e9384f,493b030c,4d5949f3) | |
1880 | Z8(220f8d18,a6aa093e,6a22e4bb,d35435d9,b1dd76c5,0f47c7fa,baa82641,8fbce82a) | |
1881 | Z8(b2446408,4852e87c,1cb50c84,66767c8a,5846e267,6ae1cbfb,f88c9f9a,af4a0fb0) | |
1882 | Z8(c41e616c,74c0253a,0e3a4846,019eee75,77101b44,eca53360,2441c349,49c3b3f5) | |
1883 | Z8(8b679e5e,5c56b2f2,deaab967,c8cabe90,a6b4e7c3,793853a8,d96a0b0c,22efd10e) | |
1884 | Z8(2c1682d8,1a491b8a,82889a61,f993f6ed,653299e4,0b55d51b,ad08cc4f,e2b3d0f3) | |
1885 | Z8(0c07d7da,c9ea2cac,e95fde9e,cc5bfc31,fb9167b0,13308fe8,1f89207d,d6d79fcf) | |
1886 | Z8(f3f14268,df46cdc4,c76de5cd,9759574a,cf38f038,4e02fcd0,c5e17c5d,b9cd71b7) | |
1887 | Z8(2b21fab0,7b4c07a5,c9ab6ff2,2b00982d,7bffff5b,f4e9d7d6,5091aefc,8b400da6) | |
1888 | Z8(3f0e4133,f40c46a7,6b064188,1bbe07ca,a544f5d8,147f2aef,0bd42a7c,e3b94afa) | |
1889 | Z8(6c1b1839,9d175111,3fdfb317,2ebdb34d,a209e18d,58bbfde5,f8e99546,ae741687) | |
1890 | Z8(10fd4e8b,fcc8c784,0492db4c,cfd1b320,fbeb5bf7,a032f49d,30ca007a,8bb375a7) | |
1891 | Z8(87d5c5d8,f73d5c96,734b2bd6,d236a9f0,cf4fe740,dd97c6d6,3076dd01,a0ea1598) | |
1892 | Z8(ea4cab04,1c062458,012a3381,e8ecd823,d1696aa5,43743cf2,bcfa9f4d,974c869e) | |
1893 | Z8(a0bde6a1,98bb0d49,d48e33cb,39081c72,a0dfa989,11ed50a6,f9f6b9df,3bed4762) | |
1894 | Z8(d4e10d3e,ad4e61f2,8681532b,abdc4460,06863774,57147646,579f183d,28e275e1) | |
1895 | Z8(c482a053,5bea013f,02f3f9ae,a704e316,076e9171,82eb7662,c37dbb25,43e21d5b) | |
1896 | Z8(93b1d63a,737b80a8,00cb8e82,44f6d7b5,9b341aec,918e6ebd,a18bacee,8d4d37e8) | |
1897 | Z8(1dff9852,7a77724f,3c9782fa,b043f425,492cefe7,f7abed11,1d050349,6d64858f) | |
1898 | Z8(e50cede4,16c043c4,5a8680ac,7a09220a,68365a4b,843028fc,48aa1dc3,cad5d464) | |
1899 | Z8(2ab5b79e,964d1d3e,4007f590,f31c8568,c9da8b78,4688c362,f4a6ef7c,d3720a30) | |
1900 | Z8(3ae21974,c1c3289f,32c80296,607106ee,6fd6cb7d,3e7630b1,85327f0a,dceb64ef) | |
1901 | Z8(f1a55f41,59a2a895,09896c2c,a35fa956,93c533ee,f8553aae,dc7416ec,e45ee4b9) | |
1902 | Z8(5d29f522,02ff90d5,117833a8,2c140309,48de441b,bce89d8b,02fb2d10,7da4c124) | |
1903 | Z8(d58998b4,5386bb89,85197da4,aef2ce29,31f02eb5,8ec46d05,610daef4,8cefbc10) | |
1904 | Z8(380839d8,7dd5ec94,72c297f3,dfd25833,968848da,1e5307df,58e0ace1,95bec368) | |
1905 | Z8(5922e359,b6d2e1a8,ef8dbee2,fe78988e,91d83558,97ef4614,619dde23,3f9d5eec) | |
1906 | Z8(8c3e7a4b,49865a20,b6ad2a7a,3e37a8ed,12958f0e,549369c2,90448344,c8482aac) | |
1907 | Z8(b3aba320,da606c1a,0d73d040,9b5f8780,e675eef3,57564bd6,990c8f05,49f32da7) | |
1908 | Z8(afbab41e,ce868f4d,7495e02a,58a044ec,3deb0214,57c19884,794aada6,94f5dd8b) | |
1909 | Z8(f4933f1d,f9d873cf,2297a79f,8c6e388a,39a29cd4,7ab7d9cd,00f25d49,5de66438) | |
1910 | Z8(a34887d3,7f1410d7,41a06013,3d4cdbf7,d0ec6499,25cef2f5,ec61b251,c0a965b1) | |
1911 | Z8(0efaa295,c02bdaa0,7264c926,eb0352af,6db68069,8c0d9726,6c8ff222,45928cac) | |
1912 | Z8(57313ce3,075231dc,c1fbf763,efb77714,5fdf267e,e909a564,f0222a98,6af3783f) | |
1913 | Z8(5a1396f8,56a4a5df,8f8ad35c,5e2eab6f,1656adaf,9c5c1d95,e59fa3db,b7ad2025) | |
1914 | Z8(8bd3efb5,bf493276,bf693bcc,7fc22c59,280bfa83,583ce7d6,82d10d5d,87a93f10) | |
1915 | Z8(8da862d3,bfdcbdd2,29872e75,50c44a5e,a4cccd03,88224389,ca002665,8c320b7a) | |
1916 | Z8(9d3d4361,2e0c456f,7cc32ea6,34889ba6,98450e07,274b5ae0,1a3fb62e,c88f1232) | |
1917 | Z8(2f1cbd02,e1de27e7,1e8800d8,9be753c0,7b463997,8a07246c,4566e636,cabbf675) | |
1918 | Z8(31662e2c,4e1837b8,07b56f2b,fa84c76e,867b8820,0ba61f51,08e7fa13,be4e7034) | |
1919 | Z8(61a14cba,c962f6d2,e1e3b64e,ac970c6e,b19cba06,8c8ae0ec,723d910c,886180d6) | |
1920 | Z8(9233cd76,7987a0a6,737592fe,7440aa3a,e91fd354,97f10e9e,af4bea93,b0e6118e) | |
1921 | Z8(15c7a0c7,c46b7406,c6aa0c04,5a4f71a2,971cf472,025922c7,eca87963,c31b0a3b) | |
1922 | Z8(14078dd4,1622986f,dd6d1651,dc195205,3f7f425c,d438581f,6ac00761,083f5784) | |
1923 | Z8(02a29b8b,3aa86498,99527bfc,f8f4f5f9,27ff9b66,fbe83417,67eba34f,59099dd8) | |
1924 | Z8(9960317b,20eaf4a0,1d63c098,55bdd7ac,c38f093f,6f8aca92,72b581b1,8a65617a) | |
1925 | Z8(1191527e,4285d260,2e853fb0,9606a334,d388bc6e,de5a11e6,b1c83a70,f11a8b79) | |
1926 | Z8(f525db1f,61f39162,eeceeafa,c430cdd3,ef221f02,12228034,0b7f6b3b,c2d557ff) | |
1927 | Z8(53ee8716,08953a9d,f5d8d739,94d55c8d,a77c0161,2fe7b8a4,e4d70aa1,230ac40a) | |
1928 | Z8(f229fef3,a4c0b379,53a26b16,fd6d2337,5fe3baa6,233b1df6,9622d9b3,8e0cf071) | |
1929 | Z8(957c7714,11d61770,b6935bc1,3763dc2b,794122cb,e6ddb461,11194f6f,cb84bbd3) | |
1930 | Z8(744b25c5,2e509f28,02691bde,cf5ba5bc,24c35670,09d1aa3e,5a9fe595,41cf6d4b) | |
1931 | Z8(30ed9d4d,28277b8a,3554e11f,056db1d5,73bb1a92,406a866b,4fa1de95,4ffe68e4) | |
1932 | Z8(da1677b5,a365fcb6,0eee3b51,37d0dc71,94c249f6,bfce70f9,768739e9,52e4e4a4) | |
1933 | Z8(3c60744b,aeda5671,8ec61c4f,7c6adfd0,12498d88,92155d00,cfcc3078,d9d832e4) | |
1934 | Z8(e6ec7f97,b56926fb,ebe983af,33665522,2533cda8,1401b20f,433ed799,e66d9810) | |
1935 | Z8(a264e4e0,85c6323b,cb5192a9,e871436d,028ec890,4d1e5449,5a9f00c4,4f521f15) | |
1936 | Z8(9b0454e2,0221394b,c5314d2e,0e939efe,504418d5,e82bbc9d,f517f9a0,9d4059b0) | |
1937 | Z8(5e0efcad,8e1d75a0,5a1f23d1,4bbeee00,749eff9f,6a307d6f,102addcf,04254dac) | |
1938 | Z8(763f4dfa,818b6823,270c6315,d70211bc,c5ee6a08,960010b6,7d15a1ee,f74c2778) | |
1939 | Z8(631e6b9e,0fafbe7e,82b22900,3b528bb5,2e29c890,59476f14,d331919a,3523b958) | |
1940 | Z8(6e64b08a,c36b48cf,2e79112e,956a44fa,c10d3bed,f79ec810,12fa52ff,8f85ae6e) | |
1941 | Z8(1f8ffb56,196e7c30,7b142c79,d8418038,078996a3,fea58906,d91648ff,4321bdeb) | |
1942 | Z8(71d46367,f220cdc0,2a2c5ad1,051eccc2,1bd0a390,c897e7f3,88817346,cd6df0de) | |
1943 | Z8(9b200c69,f5093969,905706df,5c6b7e66,b68abebd,fdf39988,41762eee,35870047) | |
1944 | Z8(b9753813,66aa9d68,33d53736,c37534f5,341ba410,64131587,dfa1f6f9,e7cb73c0) | |
1945 | Z8(526f0ff7,386624e0,b650e37d,f3ebbc68,74346f65,0aba4ff2,06609763,dac8a667) | |
1946 | Z8(dca05fea,2d8f990d,c296f834,d1639b8d,f8dbf919,887c6bb7,67e3de7f,8aca661c) | |
1947 | Z8(c95d7ba0,755916ac,78948a5c,c7874e50,aa150206,18c8f543,dc1b339d,855c0716) | |
1948 | Z8(17b29f1d,7e5353ca,954590ee,2a0e4911,0c57261f,f690db32,6dd6a8eb,1c704d7a) | |
1949 | Z8(cf52f1d6,7442a742,fab21d62,0d7c3bdd,aaebe31a,e077ca60,f79c5dae,c471dc49) | |
1950 | Z8(68aee2a4,be32b6f7,3d10361c,ce4e1ba7,727faa0a,f0d98098,08e07365,2e68338d) | |
1951 | Z8(392cfcd7,076acc2d,a9989733,519bdec0,79af81bb,d220ace0,cd4c0f99,af3f42b5) | |
1952 | Z8(12768e02,1cf6e589,67484515,9dabd91a,2951cac2,789e20dd,138dae70,11c78b3e) | |
1953 | Z8(eff14881,5040d9b3,0b09bc16,ef158fb0,8556f681,07107ff9,c56117a3,49b8c0e7) | |
1954 | Z8(efd5333a,0d84b8ac,acc89f29,5a600153,4ddd0a63,1491317f,6044367f,be94f619) | |
1955 | Z8(fb872c1d,cf13ae15,d5f188af,316218be,6df60ecf,ef2a985d,eec4625b,ba4c3ee3) | |
1956 | Z8(5866ef72,e2822c20,52c13cce,c87f64f0,d9fffaff,18192ff3,11b6ecd0,fae6acac) | |
1957 | Z8(b5803e5a,f00fa507,c04d8a5b,d792b681,dcea2df2,9df1dcac,ce8c71fd,9a7f7b66) | |
1958 | Z8(28d9921a,c2ba6be2,6f06edc6,5f44e617,336f7008,51611c51,25529c86,fa29df27) | |
1959 | Z8(e9b4b842,c0666356,a0a8b1d3,3791a61f,75b023cc,19a29546,1c31683d,94cb6f01) | |
1960 | Z8(5afa4099,89566267,c850cd74,4fe4df47,4688892f,2659967a,57dd35fe,e7b6cfb7) | |
1961 | Z8(c8080328,5b479107,9c6abd86,8515992a,32404442,9a97dab7,e012a850,9601097f) | |
1962 | Z8(ca634d01,e4335cb3,76de156c,a33293c8,4b837ea7,d6d70776,fb9b910f,3d8db05b) | |
1963 | Z8(d3f11194,86d8432c,a1feaa0a,f14fc860,97395d86,efaf79d0,aedb75f1,79c676fc) | |
1964 | Z8(83aa278f,3e8f22c3,a7bd1227,b1e3534f,a720d542,8d379b22,56ca5dc7,13ee88cd) | |
1965 | Z8(31ffab52,39d25067,a278b60c,d3d33b6a,63119530,b44ab647,2adb1191,18237ef8) | |
1966 | Z8(34f22b51,090f2ab1,41911288,934cc14f,4ae3f63c,8aebc180,482548e6,8cf24603) | |
1967 | Z8(104f1887,fe0caee2,256fb806,3969c5d4,5748537b,cbfaf6b5,5d5b40c4,32008fd6) | |
1968 | Z8(27fd9d3a,5ac1e543,489061fd,58d893dc,11b1847a,f8cf2d80,0097e897,69b5ce6f) | |
1969 | Z8(96770a6a,0b1b86fc,1b112eeb,12e966a7,572d7df5,c474e8a8,456a2dca,01167807) | |
1970 | Z8(494cfc22,9f43b959,be85e2cd,0c0559e2,2acf87fe,a701025e,a041561c,f7832f76) | |
1971 | Z8(b9b5fa0b,531cc86d,a863e924,b64fd5f9,6306bcc9,7d1f5f90,cee445e7,0b91942d) | |
1972 | Z8(a335916a,fd3f7974,35bb95ca,3df7cf9b,0fe9cdcb,792e5107,9558d0f9,21c1b2fb) | |
1973 | Z8(455fb438,404b3bcd,55757560,9cc09b93,261f3c74,800132f4,7b52b23d,c374216e) | |
1974 | Z8(0b4d9d63,c8135a19,246663f0,8c5b0866,efed5745,a1bdd3f0,2b0da37e,d9c0d748) | |
1975 | Z8(7b9b3231,07a9efd4,ab48427c,21d7a1db,fe6077c5,d9c8c990,67f2bdff,c38ab429) | |
1976 | Z8(240d6bcd,b2756011,3476ad24,e92eb428,44378719,becf7645,253fdc5c,c2b44222) | |
1977 | Z8(38779f49,20d499c1,769be459,f8119a83,de84b55e,e2d32d02,1b0a9226,3ec31c17) | |
1978 | Z8(378abf49,01d56cbb,b9885dc2,5d3b1d5a,65e94d44,e0ce58d0,68cd3907,903f0438) | |
1979 | Z8(77f3aede,6cbdc326,a5c6a6f2,886e45ca,a1595410,5fe4f4cb,a3d851da,bf3c6749) | |
1980 | Z8(cf89d8b2,1eb7d0d7,552ff617,bbc8c71f,bccb72f2,920e5c68,b15e9c6a,7de0d9ed) | |
1981 | Z8(66442932,57eb3acc,23d73566,7616b661,9926ac0c,b04d54ff,c21f101f,e24bd5c4) | |
1982 | Z8(c751cba0,5afbcf4a,eddc1cd3,44d6ae12,818cd49d,f3709121,a3035e01,659dbfa3) | |
1983 | Z8(adc11a63,d784be58,7235b332,e4fecfb8,412b7173,87b3d59a,d0a4f2df,b7361143) | |
1984 | Z8(0dc59cd8,c9cc57a0,8f07a0dc,d2bcd617,57aa07ff,276c0953,134879c8,c543a017) | |
1985 | Z8(7a0c3f01,40e1b0a3,10666b04,11388e41,5a8e5f87,d0527e11,8cb487f7,0dbe7b1f) | |
1986 | Z8(08652ea7,f824a5b2,f34a36f3,6cc33798,3789e49f,ac6aedee,2ee38e78,d42136fa) | |
1987 | Z8(084e9f25,bb942228,db5fd45b,3b67eac8,19327889,378748f6,035b8fa5,d4270257) | |
1988 | Z8(937783e9,db9013c5,e968d8be,0ab07fa7,96fd5f73,22271dcd,715d950e,dbdeb0a3) | |
1989 | Z8(1d272b72,304f25b5,e5536ea3,d5ce8752,3db315d1,764dc96d,e0100eed,5058c177) | |
1990 | Z8(b8fb625a,1a41db4c,f81b9fd6,bebad89d,6bf22cf8,aa40c34a,1f0020b5,68430638) | |
1991 | Z8(c4b3a894,f36277a3,f93ebb13,dd6375fe,7a70ec8d,d3a2c6d5,3535a3ca,50d5625e) | |
1992 | Z8(002a2178,f787012c,f39a1f9f,5d5d9e38,d8d3df06,2ef31fb5,82043f4f,00275494) | |
1993 | Z8(aee63d9a,790149d9,ad703190,8fed2f8a,9549d6ef,caa2b467,8402a9dd,7d122e47) | |
1994 | Z8(4c9f4744,de5f442b,e8945760,920af509,6035b8e7,9ae8dbca,b9b4825a,851b9995) | |
1995 | Z8(f3d7daef,203e8179,12e3808c,d0049540,8cac4356,50f08770,f00f5e62,e3d8053d) | |
1996 | Z8(3d16dfe4,4f4e2b1a,b70fea41,b90ed626,7ef51d38,8e950b49,531081b3,9f59c5d0) | |
1997 | Z8(1248b6f9,bb53e43b,a6c5053d,a392424f,9b330e07,b0b438a0,68559ab7,42a68b18) | |
1998 | Z8(512f5ba7,35b50e20,6c9361d5,237d4b44,d52a2452,a5e839f9,42cecd23,1deaeb44) | |
1999 | Z8(bea98ca7,841f91ee,adf0da30,1482ed18,23721a0f,260ee1bd,93239c75,8fbd791d) | |
2000 | Z8(8ef63181,0cdb9482,513aa662,6f501995,67d3f857,c9fb6c72,cf4e62f9,41b1ea6c) | |
2001 | Z8(9cd72189,4e3f8335,9d26a616,4ca32fe6,271e8718,3e27d444,fd97d16b,cd2ee356) | |
2002 | Z8(141b262a,1d01e205,6eba6da9,1f082717,78395517,76728243,ff7b799f,6f93a478) | |
2003 | Z8(c1988cff,2baa86e9,7b1ea9de,daa8bfaa,3ccdd5bd,80368961,5b094c65,b7932432) | |
2004 | Z8(4a1934d5,403aae60,488b9de2,1b66d58f,e771e0fb,79f5f12e,041af483,5f76693b) | |
2005 | Z8(1af267ad,6f4be88e,436fab32,9241cc9b,a5079d00,977adfee,3503543b,69ef260a) | |
2006 | Z8(2cc740be,74a0b795,2359d710,989afd67,15a877e9,c5d5e8a9,2bb94854,e55e4532) | |
2007 | Z8(3b26a376,99d71a20,47cdf26b,6b5561b3,13489b0e,b7baa198,70cc7ef9,150cb928) | |
2008 | Z8(ae1ac2ef,7fc4ecd7,3a6ca36e,3804abd8,ede01f46,3198f1b0,b2fa9e73,5ed01f9b) | |
2009 | Z8(faee366c,1f92383a,32139529,3ab501a0,489caa95,1ffde425,5b48bcfc,00380da1) | |
2010 | Z8(e80e62e4,206b500d,7d385b8c,c89baaf2,739dfadf,f4b7a674,345ea91b,75841b16) | |
2011 | Z8(3556fbcd,7099f371,3b57d593,6ad6f3eb,6eece405,37c5626e,44b662b7,3a3c724e) | |
2012 | Z8(e12efdf9,87062869,e1e03ef2,3fbb6780,2c7f66ab,c62125e2,0e78354c,14529da3) | |
2013 | Z8(d37a2ed6,bd62653d,4b577e9b,0a3192e8,ca69a059,874bb077,a0a6208b,f6a64596) | |
2014 | Z8(d36db6de,e24e030b,a1fd2daa,4c46dab6,1686decb,1f505ffc,ed03a431,d61b49e4) | |
2015 | Z8(c9ceb6b3,ebfea720,a8dbf39e,d913c77c,a23a2f21,e0394296,26f08608,4e28edd9) | |
2016 | Z8(b6f27bf7,8b8bbc42,7739c858,1438742a,be1c1053,3ca73462,713b2138,e9943437) | |
2017 | Z8(6e7dff4a,1d9303e6,187e8123,346fc1e2,59cf5d39,e3034b92,a5307f8a,3ddeab31) | |
2018 | Z8(5557f78f,388ad3dc,af57db99,830b8eec,1ad01b1b,25f94e9e,bb92abcf,d31576ff) | |
2019 | Z8(18b5f816,d5167116,73e11266,11e02e74,ca1ea6d9,a5252fbc,19e0a46d,ad8d5697) | |
2020 | Z8(c600777a,e7874461,94dabec4,6b1172f9,d0e43110,a2c1f75c,54e02332,a486cac4) | |
2021 | Z8(29bc9132,ee165314,ae3d7a61,749dbeb9,ab77eae6,5d13e354,bc8402e0,5dad978b) | |
2022 | Z8(9eda5a08,d0d55936,efbd599e,c73497cb,a6f04e50,917ff255,ee205871,394e2047) | |
2023 | Z8(6e3e6165,a470420f,27f0ffb1,d8ad8eea,12750660,2423bf0f,5e4615eb,5af53749) | |
2024 | Z8(22fce5b7,ad4b8c4b,cd96f94d,cf2c404e,6774f94b,1ae80598,b39749cf,3dea2f5e) | |
2025 | Z8(3c347bf8,0a119cde,398916d8,fac3d022,8c83dc3b,a63f25d5,13c49b6c,4cf60a21) | |
2026 | Z8(d7cfbbff,38deb3b5,7c5153f5,140f7ed4,96a38ab6,7ff989ba,7506b093,c0ee8513) | |
2027 | Z8(c33141ca,68055cb8,f845cdf4,a88c3b02,9d81eb55,cae61097,fa0b13c4,09f23850) | |
2028 | Z8(472f2740,ee6f0dfa,76256e8f,d843387d,814f0387,2a164dd4,4de3cc19,6da0f0e3) | |
2029 | Z8(1cdde009,d2f6ad35,658d1607,e9faba7a,921ca703,a71d908d,93d21b22,6a7917b0) | |
2030 | Z8(907af181,ef4e6354,7b328fe6,21e95923,c15e1c2b,b70471b7,caf3d4f3,9ac69740) | |
2031 | Z8(6c98cf56,d71fa87d,2b8c5538,27db6db1,346f83e8,42a8768d,aa840f4b,916cef9c) | |
2032 | Z8(042b6024,4284b16e,82a8c1ff,21a3a737,8e2f9fe0,ad6338fc,adca5f79,a1719607) | |
2033 | Z8(a4f52e75,b24a4af9,bc298348,89a3cc2c,f8b21e11,b158b4cc,c9061b1e,c85e3fd5) | |
2034 | Z8(ef1f77d5,f95e82c6,312ae7f6,80aa94a9,afca6cf7,2e29edf5,92e20898,5db315bd) | |
2035 | Z8(08f5f825,6b6cc4af,60a8184d,17fb0c46,daf512f3,3fbab2f4,d98df0f0,72070f4f) | |
2036 | Z8(d9c8d86a,50dfd02e,4970758b,7afff5cc,b8cd9d5e,14b364f5,f314b8f1,8bf1e282) | |
2037 | Z8(5df87172,67e5c491,83edbf4b,0d796446,627b5b0f,47f404c2,75ce847e,67b8ebf0) | |
2038 | Z8(3a36c55c,c758790b,fd4ff1a7,db5a7cb5,19f66386,92c2479c,f9416183,d503ef96) | |
2039 | Z8(2ae80e9d,74f7749a,a8032e59,4c22df3b,a56c3dd3,f730b811,a86b7524,4a43169e) | |
2040 | Z8(86336353,6f4fcffe,460df641,7ad162ad,e21a7e9d,fe970f12,a5ee43b6,22334114) | |
2041 | Z8(323c0d79,737fda5b,46e2b91a,febab074,4c99b23f,e1b326f3,7d683dc5,45fe5d0e) | |
2042 | Z8(0b624021,36fc2c4a,b441a4af,f3cf2309,f9afa603,ac695197,dbf9deb6,f588e00a) | |
2043 | Z8(ef2308c3,ab7f27ca,592dfd40,0debb9d2,5ecc4c70,77340cc2,d7764116,23c826c7) | |
2044 | Z8(7a34ccd5,05120cb3,29520a8a,c656fd3c,e9626d67,f45384c9,7dff5146,a304f3e1) | |
2045 | Z8(b4b1c0b3,6f956b7b,312b7069,d74a9232,1ef2be13,33f4634e,daa7ce67,dd533bd2) | |
2046 | Z8(fcceedd1,fa2b5251,9c6adb93,664f6f36,dc5093aa,bf66af66,7be3c371,dfa6379b) | |
2047 | Z8(af35febb,d38bb7c3,e242e238,5537eda2,5f321064,ed9e71e7,edc8b2a9,f95b6038) | |
2048 | Z8(e0356b7d,9bd231ce,d5c51e2d,c589e398,8663a6af,c8506dfd,3f6b0da4,db6befda) | |
2049 | Z8(5d78a19c,f200c6e6,60213c5a,56dea8a0,76734fd0,e6ae72f5,fd9ed41c,28e9065b) | |
2050 | Z8(0d83015e,ed25d1a9,7cf119b5,6998f95a,e7f9b2ae,9e64064b,86622f04,24016127) | |
2051 | Z8(6b722595,43785623,10caa688,6d095a8b,586b9ac8,76ebf0f7,199c27e0,6e88d40d) | |
2052 | Z8(0de2d678,9227cb92,d003cbae,a4eedf8f,2ec7a941,675fc1f4,efdef86d,e35e4bbf) | |
2053 | Z8(d22c7843,0e0d137f,b4e456f7,d0f87ce1,624cdc3b,fdabb2a1,3b8ce899,38f65c19) | |
2054 | Z8(9c7cff3d,bcc89077,de8a054d,6c005b36,61f7cb36,20a6a433,eacc5bc5,8501d100) | |
2055 | Z8(d6861dc8,be710da6,503e50cf,0f5d9b53,b715eec0,8a1487d6,73b81d29,d6797a0b) | |
2056 | Z8(76d6e904,1b8bc578,ff38592e,5c81ed47,83d75092,769160d6,c2552f69,584430a6) | |
2057 | Z8(37b59aeb,18a58364,a0eb870a,dcaff3a3,272c6106,a5ecc4ad,201005e2,3775df4d) | |
2058 | Z8(4a026a38,a7fd681f,c7715a91,02575e0b,244972a4,3c5be0ef,a75a7805,5087a1ed) | |
2059 | Z8(8afa6dd2,49ab17c9,694b2c47,0535ecd6,3923ec1a,27a3111e,b97fb10d,2a2b65fc) | |
2060 | Z8(31ba26db,da0e04eb,ca7541a1,bb97b52c,a0bda983,76f6ab6b,a62b572a,3a42b8af) | |
2061 | Z8(8f579afc,e088f148,b0a7fd96,8f5938c3,48934b9d,0234e22f,4ab00753,4bd10982) | |
2062 | Z8(380dd1cd,0685317d,b72320ac,454eb31e,19ef87b0,4bdf25d8,6d584a5b,710cad6f) | |
2063 | Z8(61ed02e2,5509de27,816833c8,d9212077,0c167d9b,cb54eaf5,1a7a48d3,24883bb0) | |
2064 | Z8(a2ecd21e,d52c2e51,3f065d45,9540ee80,95636e93,5a51922e,41b3e231,5e1fa394) | |
2065 | Z8(a9f51965,a05c3846,4f9ae951,0f1ebd76,a4f703fe,b637b4a8,824ce169,4b386d27) | |
2066 | Z8(3c6789e3,3d655dcb,0ce4a093,8b67bc14,38729b45,abc5915f,7c568252,f4db67cf) | |
2067 | Z8(fca97dd4,47efe23c,b71ab552,8130674b,2464c6ac,3387290b,d2308b48,e7478100) | |
2068 | Z8(df6caf9c,acffc33e,b414d8f6,d3d8b007,d4b7e265,e7a92a97,c0437c36,3fce9c8e) | |
2069 | Z8(c7ffa4ea,7c539d7c,fef96341,d9207c34,781188f5,7c877f23,327dfd3d,8757a134) | |
2070 | Z8(5c6976f8,2c25bc66,007e1feb,8356df7d,d595208f,2743a82e,541ccb41,a2b3fe4b) | |
2071 | Z8(531d508d,3d2ed6a5,eb53bd58,da570da6,90f1429c,f37d92b1,5e0b41eb,4f0b7e03) | |
2072 | Z8(617d97af,528452d9,05ddb62a,b12bf061,2ab8ee12,45a0dcc1,5bddddba,d4aa1124) | |
2073 | Z8(e205193c,0c1d6676,4852bb1c,da1a935e,e002f4d1,a7611d4d,18b5d3b3,aabe025a) | |
2074 | Z8(227288b3,ee8d44e0,0eabc778,67956366,f2c170a8,835c8748,63bbf42a,37c4bc7b) | |
2075 | Z8(99fb7e68,7af0c53e,e305d750,9058ec13,07a12e56,88abacc6,756510c0,82994a9d) | |
2076 | Z8(e0ac4c58,d4fbdff5,bc3415b6,d9d0541b,990f1c2c,ffdeb7a1,7ee43f3c,9f54faee) | |
2077 | Z8(495555f1,7cf75b36,70807768,f24b212a,91d609f7,ee3e9075,ac48acd3,5aafa526) | |
2078 | Z8(d9848f05,51a85e10,d0bbe9be,b674572e,f5f865b7,fe4218c0,f959e921,0fba2735) | |
2079 | Z8(d4fb20ec,ddd79e9e,cd3abd5e,f67a1cec,66458baa,2aa3b64d,8f6da594,fa92ac6d) | |
2080 | Z8(0678a6df,8e64edbf,70c8bdb2,59480918,e7158502,fb565b1a,c74946f8,dcf87c74) | |
2081 | Z8(d0e12a43,0cd65293,65aa53a0,0a8f6b04,0896bd10,903daf58,d6019a51,dc06d3cd) | |
2082 | Z8(cf519cff,e0013882,a4b2c100,ae9048cd,ba6ea75d,573aff0e,ed183677,df367020) | |
2083 | Z8(b34f7f6c,f417cdbe,530d90d6,38d75d22,82ec4214,326ad758,d754c52b,ca82fc1a) | |
2084 | Z8(86452cc3,1b390a6a,4ae6661f,7853a0fe,bf2e5575,70efd24d,201d18de,379e9a89) | |
2085 | Z8(33648767,4780cd99,415186e8,489b1457,1eabd875,49749826,15722813,12192a39) | |
2086 | Z8(0f9d9e64,90eb856b,aaa2b10a,03742d52,070feb82,15c1c1f8,f8a829c2,97d08a83) | |
2087 | Z8(12da5fa8,742a4c11,4244c8ee,8d3c90c6,a262f9cb,eaff7cad,92e39852,28562f48) | |
2088 | Z8(63b89ef9,f6160bfb,58ca3259,093067ed,ecfb5b90,93cd20b1,bd3dd108,7c3a75ad) | |
2089 | Z8(aac1d981,6e1f8126,f6ffb926,5c8eb573,6883f90f,2d8e4104,f7b04922,59d82c2c) | |
2090 | Z8(c360f322,7b4fc8b3,e733a82c,7e4a8e59,94eba6fd,3c1cc349,75757683,bf340692) | |
2091 | Z8(819716a6,7bbda089,3c06cafa,2cfd032b,6eb00a44,b3f440e3,ac27d3c6,e62c27ca) | |
2092 | Z8(d9931f39,447506d4,8e959868,70693517,73267928,5f7e07e6,8df30887,0aa1f879) | |
2093 | Z8(25331363,e02a0b4c,2fabbfbb,836f790c,d9a27574,f0e50107,979ad5ad,b89fc92f) | |
2094 | Z8(1a6841a9,9a72bb07,c886dd3a,c6bbf512,f7e2ccb8,9f231998,840288ed,52267e55) | |
2095 | Z8(170e5163,05e08a4a,8987792e,42377ef9,c5648a73,f8511a7e,c8dc0383,67487e08) | |
2096 | Z8(da599547,14a879a3,87879dc1,7b6c66ee,00fb7697,15b4e05d,765703a3,81f7a129) | |
2097 | Z8(663a6220,2240e9da,6b383b81,b390f43e,91d185d2,38a11ccc,5d30bfdb,bd724a3c) | |
2098 | Z8(28df6cf1,60e7b069,a1c39dc5,be7728d9,45b383a8,fbe406b1,ad3313b8,aac90247) | |
2099 | Z8(7a2336c9,8a5deb31,5b84398c,820acadb,2f3448c1,7b3b1321,90583f3a,b0c98432) | |
2100 | Z8(0a30deca,d77d6949,bad2b9ac,210a9eeb,2a0dd401,bd51ea23,756710f7,590c92d5) | |
2101 | Z8(b871cf3e,cbfcfafe,f102f537,7a9805dd,6fd217ca,d50c747e,397dd177,1fd2b8f2) | |
2102 | Z8(cc4ac825,aa4f8a57,a41647bb,6df9f82e,9360ec3a,8fa17ab5,427bb9d4,223b6b39) | |
2103 | Z8(191f2694,5ea03380,b8b2842b,d92b18bb,af7c3349,85652499,36cff368,e70e2f94) | |
2104 | Z8(37f76237,cfe5f6aa,5f188e14,ee46cbe8,82f401fa,4604c36a,a557fa04,8467614c) | |
2105 | Z8(fd4940c9,02d53d28,38d54b90,8fb15cf2,634a2f0a,1985ab47,46eeb283,9a485cb0) | |
2106 | Z8(a202fef9,34fd2ee8,8530ae27,e07ed453,c55a0056,1bb14dbe,2aa12532,404fe805) | |
2107 | Z8(346e146e,14102bb2,604a0f47,536c6d41,404e81a1,690ac879,0f74e2b7,f14081c0) | |
2108 | Z8(fe0c784a,ad96e4d1,972cbeca,a2cec724,182c3fe8,1950e5bd,2a4ee2b1,a41fa4e0) | |
2109 | Z8(a328da9a,f1016aa4,0b16da45,2580f54b,d5fec81a,77aeee38,7e464a08,0247a324) | |
2110 | Z8(a0dc7375,fcde85d2,5b173e6c,e46d73ea,fb3be909,cefd0023,a36e4a18,42f55790) | |
2111 | Z8(77cfcc5b,bfd20c0e,1744809e,4d81f48c,55829a2b,a3a2ca31,58378e31,0eb767f8) | |
2112 | Z8(45f110ed,26446929,a2e47654,db07a5d1,c84e0262,e04246f3,84b06dbe,57020389) | |
2113 | Z8(b37440ee,d5bbfe97,11ec6161,0bc64018,9aef84c4,37371b05,409820d8,7980c81b) | |
2114 | Z8(59562849,f20f5a45,6bd1301d,ba606972,f973d1f7,aee644d8,23ff069c,68f1f7c4) | |
2115 | Z8(67056da2,1b34308a,76483a4f,583c4ed4,13461ee3,9b47c50b,1beaf03f,c7f94138) | |
2116 | Z8(e6a7fefe,92e0f63b,cd0cb793,dc699ea9,bf1da702,04a3ac23,37d93a34,ec829f52) | |
2117 | Z8(c87a978e,b75a1465,42aa67a4,0b68d509,32af8f87,fb366819,bac621ac,d8f122af) | |
2118 | Z8(3bf26782,9cf95acf,7f9bd344,c054d19b,d4b18126,9a847c67,cf67c550,ad75642a) | |
2119 | Z8(bfefbdfb,cd92dccf,987fc207,b36afb86,ba1dcc14,3582866a,6575067f,9b42924b) | |
2120 | Z8(8524b3ec,0599af72,c44e99ed,f8304f36,6b5bc313,36a01718,395d7dd8,2fe8e2f0) | |
2121 | Z8(88462a2d,c9bbfdad,94c823d9,a67c1654,6e706f35,0bc175cc,23ebe41f,82cd4831) | |
2122 | Z8(7e12213b,66ad63cb,0e444b9f,8b169390,998301ba,d51a4b16,c09adb02,c75d140b) | |
2123 | Z8(3f957e2c,99865934,a1f44cd2,2bd0ec23,82836b54,637f6b39,1a2f82fb,7b00e399) | |
2124 | Z8(b817f1be,1f2e5608,ce36828c,1cb98d19,b5cbd131,78fe92de,63c5771c,67f19e30) | |
2125 | Z8(f3c65e8e,aefd0336,3a6b5880,3e01363b,8e9ff588,e306d2a8,1c5e0857,895db568) | |
2126 | Z8(bedec84e,9c3e0053,18474e05,1212afad,73ceaeda,20167c53,15a1cea2,6ba852fc) | |
2127 | Z8(df576899,315e23c7,a9e8f00e,df5d20ab,7ba11092,14b12361,d935aa0c,9c7c27f8) | |
2128 | Z8(818c494f,8c87c5f5,6086044a,d279fca2,12c66c97,53899ddc,0038e73b,f9e2dd55) | |
2129 | Z8(c2b30d61,1cb23304,40a32246,a7e53f5f,45d7ca20,c99f98fa,ab373836,23cd7056) | |
2130 | Z8(3a91ece8,2fe8cdd0,182b9e95,8e5b61a8,6d80e154,b0f75d36,b0ee01f9,137d7394) | |
2131 | Z8(2a77e398,5089b706,bc3b12d4,79c4c9c1,7235d17d,5b764b6e,27edb848,f70dd20e) | |
2132 | Z8(437e3e63,3bfcd1ed,74375121,7e57779f,de8409f8,47556467,41dd9965,2b349d90) | |
2133 | Z8(d3f745e3,a445ef82,f1d378d4,64434ee6,3a836239,44d3ba2a,0fa99072,3e0c00d1) | |
2134 | Z8(f379098d,0898e848,5bd31c53,6f2b16ca,2026d022,c371546f,3cb4709a,6a743a17) | |
2135 | Z8(16c2d5fb,08972fed,3aa4281f,71ad5ee3,9260af03,47f7a77a,dca305af,1da2c02d) | |
2136 | Z8(36f53ef5,3d796a38,e6decc33,9a2eb35e,fcafcbe4,a78ad89b,3a2ca467,df6ac43a) | |
2137 | Z8(a9bb21bc,a348cd1d,d98209d9,11a913c9,1598cc9e,9702a1b9,05973c3a,361fb9c5) | |
2138 | Z8(d80432c2,4165c7bd,b342e57e,aac11329,273d262c,e6e11661,192daa12,b0953172) | |
2139 | Z8(352e528f,e1e70657,14a355e3,7090eddf,2c00f9c7,21a816d3,ee329cdd,88251ef7) | |
2140 | Z8(b8e1fc4b,0f1b9410,400a8ad1,76847474,7294ac7e,1a2d1841,62bfbc57,f2c21ca5) | |
2141 | Z8(b0639035,5ec44a54,09a95236,714a7c9e,3afe86ef,8a17e2fd,23ff409f,45815384) | |
2142 | Z8(c7ba4ae6,b0ffe725,5ea2e235,059c156c,3cc708c9,5f172c93,fcafc902,156c57cd) | |
2143 | Z8(7e13bc73,5d75ef6b,a7bd5c1a,f445617a,88caa926,cd960952,bd1f1e2a,52a2d6b3) | |
2144 | Z8(55a5dd23,e433f83b,5d0bd8bf,c62f4f5d,946c3cfa,46b86973,26313b0f,7ae8b690) | |
2145 | Z8(4d581964,b9ec2f26,37e8dca4,49766248,ff8894a7,876e30d3,32930d0b,1f6cfc43) | |
2146 | Z8(2737b38c,c94f0b7b,396003d8,ab01e0fa,7e7da00a,689c0776,a8b99234,3818d033) | |
2147 | Z8(edeae20e,ea569480,ba2c0c99,933c5f9f,a0cd9dfc,ebf8e83c,ae57f1d5,78ce29bd) | |
2148 | Z8(2e718916,16fbe37a,c8eb5cde,f50e3581,413bf711,a86d5736,2272566c,532f5601) | |
2149 | Z8(0cac3d0f,191205cd,dab17120,d69840ba,a4f2a13b,ccd8f380,3347b85e,93d293b6) | |
2150 | Z8(588c63e0,1e1d1f30,445f8abf,bf3ac884,825e12ee,3be70d19,6932ca1d,c27b373d) | |
2151 | Z8(93a157b3,8ce89d90,124053a0,7ca79de0,32783da5,34925764,7fa19c5d,39401b7f) | |
2152 | Z8(7f382971,737585d2,ed9eaa6c,ad0d323b,44eefe22,2f99dc51,995b442b,d99fe7fe) | |
2153 | Z8(06994dee,78a85d0f,cd645a0c,9e18dfc1,607f2092,9f7be76a,51a428cf,2411a470) | |
2154 | Z8(f975b5fc,b48b8f17,278ffec9,c4bc0581,29e2132f,ed7af2a6,cb918ba2,da95b0d8) | |
2155 | Z8(81a28e7a,2779e557,6ec1c814,102172dd,530f3c46,485f6280,31add9e5,19dbdfd6) | |
2156 | Z8(52cf6e9c,1bb66f79,e1f590e9,20789a40,c8726c8c,3c61c8e8,cb942bea,21733b0e) | |
2157 | Z8(ec687bce,c4ab9131,40b96824,486b9da5,39e8e72a,2a323f3e,eab7a0ea,857cb599) | |
2158 | Z8(fd538e3b,3662ff8e,0860731b,c9a0154e,5b9b5985,74901953,a4cef002,277a1967) | |
2159 | Z8(d3a6d916,da2024f9,46f7c1f3,3e7ea0df,75eff166,d2181f68,4802b376,2a3a97a2) | |
2160 | Z8(b5402b40,84010c3e,40763314,924c8d3f,4cfe0984,2a6695e8,644a1f20,a84d3eaf) | |
2161 | Z8(c9425a45,9bc29b0d,4feae866,c548b907,3a1000f3,f9b6bb5b,da3f6c02,0c13f26f) | |
2162 | Z8(edf0756f,0914adfe,400aba1e,cdea208c,c85518a5,114bc957,5d4b7b9f,0a69dccf) | |
2163 | Z8(1ad0f7d1,81034e21,38e75a60,0c9a4e1d,2732166d,2d8013c1,d777a532,72541d67) | |
2164 | Z8(77212d52,30eca897,c8e460a5,6a24c54e,dcdffc74,6186f682,868b003d,840abced) | |
2165 | Z8(43c93463,50e65aa1,00c925f4,c437083d,3942e172,8e436769,f49d2928,c2d66be5) | |
2166 | Z8(c0b21149,8dcf8652,51e77a9a,006cc427,1a2c8679,c3018d2f,68ef8843,3e37e7ad) | |
2167 | Z8(46d725dd,a241bdc6,571c58a2,28ca9e1f,90efc2b1,a21ec147,e2407f89,75756a26) | |
2168 | Z8(1c178395,c85e4da9,42834b10,e99607fa,3f3e2571,4bbc19b6,1e578316,95ff2eac) | |
2169 | Z8(a42d48e0,f2ae1f2d,0cf40674,1cdef8c2,aab10703,1a50076e,e77607ca,78a569b9) | |
2170 | Z8(5e58d6eb,4414a090,1d9e63cc,6eec1dcd,af7ded6f,c69a0dce,230cde53,74037800) | |
2171 | Z8(647e03bb,914d6387,3f5c92f0,be1fe916,a1cde46c,5afbd37c,549b2760,6978165b) | |
2172 | Z8(fbe7b434,1d17f0a9,a6d39a5a,9a820a1c,9f171a36,70da6e14,3bc62d66,5ca0afe6) | |
2173 | Z8(60b97847,715606af,fc8c4249,49f5290d,0a21605c,09eb18b4,fc5b6a86,652c9e0c) | |
2174 | Z8(3faed52b,7d5d2b35,26e4e849,67612086,6e1dd4e0,bfa96af8,0e167036,7eaa8222) | |
2175 | Z8(9d183300,02048316,e9d480a8,7f23e2d8,38f8377d,b2951c8f,07d4b9d8,fee5c725) | |
2176 | Z8(1a778b41,b9503cef,1cd52dd3,40ecc838,64afd17f,d8a05947,8c84dce0,f9621bb8) | |
2177 | Z8(02e54ec4,a781cc8e,c7377e54,8ee3f7d4,8efd4a54,f5819f66,51049100,ab457256) | |
2178 | Z8(1d4ff1ef,26f79d63,d6422f25,19224b76,1ab9880e,632dcb68,62a7a660,8c20c25e) | |
2179 | Z8(2471e8a4,3d1d524e,5adb256f,a7fad713,51aaf23e,ae9174be,539efeda,a0f3118b) | |
2180 | Z8(6b787f8f,d8e2c96d,9d7c845e,1d9e129b,0532044f,a97197f6,76383982,401639d3) | |
2181 | Z8(845e7f63,db71dcc2,4916f953,3b3da736,dfb21233,9b377014,b48b57e0,5c0a8220) | |
2182 | Z8(2e9cf2ad,ab5e8284,7052bb8d,fee04a97,6afb9ae3,4c8df78f,1bf69d3a,f3f595bf) | |
2183 | Z8(6c048d10,4856c153,a359e3e3,96982360,e99487a9,0906d719,c66845ed,5834604b) | |
2184 | Z8(5450aee8,2aaa1858,9898ea3c,3b4ad1cb,a00e0a64,28ac90f1,682f5ac4,7cbcfc65) | |
2185 | Z8(0a493f83,cbd007c1,3a20c286,eb06b537,2db94e01,78f12a45,0c434f6a,cbf54311) | |
2186 | Z8(0535fc14,13eea8ac,86f9f9ff,738456ee,44fa0b8c,c1d45e0a,1a4fb556,b84184ed) | |
2187 | Z8(9cd46952,7659ea5c,197ec220,ae1f74dd,d71195f7,352f27b4,3ee1f106,25eb97b0) | |
2188 | Z8(9a668b3b,53967484,105a4f51,8167948b,9e85f206,54014f7d,a7c342ed,252bf954) | |
2189 | Z8(8f6ea3ab,c88382d9,7e4697ce,c60cc582,33a62bec,2c7cfd38,d01bb4ca,f956177f) | |
2190 | Z8(663a5817,717fe608,23a6befb,e2604bd9,507a8543,c0edfc38,099ebd1f,71d87f1a) | |
2191 | Z8(8ab1eab4,edacc487,3b7a0e16,4cd211e9,603a3e26,938a851a,9668047c,ddcb01d0) | |
2192 | Z8(3f478b11,852b74e8,5f979c17,588e63db,f17ed717,c189f86d,0035c1ad,14dc23a5) | |
2193 | Z8(498da3ff,eea2c5e7,9bc5eff0,b935f7b3,69eeefbd,b68340fc,b501d34b,767af842) | |
2194 | Z8(13d83d53,a34aac73,b21c438a,0631f3fa,10e83743,6ad0a041,100ef1c1,e55df455) | |
2195 | Z8(cd8edfd9,ed117627,7a3d77bb,3c451aab,927dc80d,3dad611f,55c62293,548a802b) | |
2196 | Z8(fd40c371,685bf20e,5fa02e9e,41d1db9d,d8ce9cd8,994664d3,0430d55e,c24bdfab) | |
2197 | Z8(bd57a154,2ced1501,5726ede7,63dd18b9,99adce08,aa63a8ed,7adeb28d,f57487ba) | |
2198 | Z8(de7e3454,d7d20d9a,b9f57918,4f50b4b4,59f929f8,2616b827,2852959f,92007bd3) | |
2199 | Z8(bcfd1e9b,2d533014,62820f06,73c189c0,d50558ee,acdc1df7,2b9d4abc,bb9e0dc6) | |
2200 | Z8(d4570ad0,c963f3e7,9c650a8a,a78a59b9,6be66334,f9083c54,ae15f530,5dfc3ea9) | |
2201 | Z8(48263fce,2c450348,17a25bc7,e2f827a4,3095cd36,35bc0552,0b87dcab,aae7583d) | |
2202 | Z8(3a963f67,a7b13502,bb784ee8,b9015eba,386f598a,d15f8c07,40f117b1,723f54c2) | |
2203 | Z8(37acc48d,dc95cc04,e3f9b42e,84e869b9,6318a339,cb86ba93,f2b500fd,483d09b0) | |
2204 | Z8(a39125fd,1e9db006,abad4db1,7d22b88e,a1e61c60,006b2a9d,ac0afce4,32421a3f) | |
2205 | Z8(9c43331d,bc009e80,27e89d4f,8197fbd5,772baf18,94f914bf,b904ed83,9381c0a1) | |
2206 | Z8(57fd3b3e,dbdeddb4,cfe63350,e74eb6c2,996c7009,f0135247,bc9911fc,2b2d3e24) | |
2207 | Z8(8da2a3f7,81e09bca,52063acc,e1c37b1e,2daca98b,3d10150a,5c025c82,11f1403a) | |
2208 | Z8(4b9cd773,7c14341d,d07cfa5d,58a6d96e,6c656a74,fc35517f,3dfb491f,f8461e8b) | |
2209 | Z8(4bb00e27,7be6823b,9cf0d4cf,98a5c79e,9cecb731,351c050d,e1c063f2,870da919) | |
2210 | Z8(5a822112,b8adb3e7,bcea51f6,427c548f,b566cd7f,3f321159,824b16c3,5a41d26f) | |
2211 | Z8(47d654bd,1d8878f7,fca6c531,cfd9868d,a70672fa,6467fd61,695eab96,875afc20) | |
2212 | Z8(4f3fdec2,eda583a5,3e26e27b,98957ebc,8e42549d,4ec61f7b,057a280f,0bc59bcd) | |
2213 | Z8(341f8be9,c2585526,f82eadce,8ca4e2bc,69a0ce6d,1ebcc56b,7ba53da5,95d1e195) | |
2214 | Z8(dc226c77,e0be2c30,83235658,2c9841cb,bef0b79f,bf4c04d4,9d85f809,ada71dbf) | |
2215 | Z8(be361413,5123b07b,27480dd8,067346f0,162c387f,70a276dd,5f2f833f,9770cbc0) | |
2216 | Z8(dc98fe7b,1257f51a,0ed35c93,aed1961a,d21435f0,e18f24ad,e3a1891b,30ffc5a0) | |
2217 | Z8(f62ea4f3,78631060,c5e8af27,bc9fcc73,9c05f856,5b2430b6,302772af,5cba64d2) | |
2218 | Z8(ad16ea47,491d5214,df52fc9f,95468e9e,af18ff74,c1c86162,b1e26aea,41e9d4c8) | |
2219 | Z8(cddcef17,b0550189,eaf7eaa1,47cd8b08,88bbe782,303a3487,9390b4cd,c23180cf) | |
2220 | Z8(64b1604b,0132fc92,bbba9e18,dbc11034,1a1469dd,df3be67f,ad06dfaf,9ea20bb6) | |
2221 | Z8(5f2de789,c75faed7,dc965921,d5facb80,e1bcb915,cc4fce47,467e02e4,0449a3c6) | |
2222 | Z8(99027a9f,4db24449,bb26de5b,736c0a4b,45cb86e8,b71f5af9,764c249d,5fba2962) | |
2223 | Z8(825be11c,fa962062,1c8c0cf4,b7ac75c7,44d7228f,3fe0bb44,e36d8a25,b38a5066) | |
2224 | Z8(3ef510f2,94a9df98,6d396803,7a20d1f8,e1e6828c,80b7c103,8388c5be,b0131156) | |
2225 | Z8(c55b12d2,f244e2cb,25b6d049,6991ddcd,bec838e3,de5a3276,ccfc9f90,ff5bc085) | |
2226 | Z8(64fc3f08,2af7e171,54dabf78,3fca648f,77f02480,e6192d8b,53512dc7,8f224b11) | |
2227 | Z8(de288fd8,4a6c0d72,07cb577d,8f3a49b1,9a3002e4,88d933cb,a6afc5c3,88b3714e) | |
2228 | Z8(ec72ef00,5a503ea8,3c25147a,2dea6aae,d4f0e561,59c78f17,a26d1fd1,909ebe47) | |
2229 | Z8(18195bb6,76cfe046,65236b5e,082371d3,3dde6946,f945c6fe,58488395,5006e1d4) | |
2230 | Z8(4939742e,973209f4,f0eac926,4de1bb87,f229b080,8dbfdb0e,cb251d54,014e718c) | |
2231 | Z8(b4b52238,6654e1d1,b60a1b5f,29df90ab,b352e7b1,85b5d269,58ca98dd,112f56ad) | |
2232 | Z8(76f8db93,e86b6318,b510f8ae,e10c6f5a,d6af7452,1cb3d2ec,e1284fd9,96be7ff8) | |
2233 | Z8(87dc0b12,77e83b72,94147d82,4fba86ca,ccfcf808,d0beed36,4316521d,b0f2dfbe) | |
2234 | Z8(88b0c35a,ed229f83,b54b45a0,7938b958,02315fab,fdfe00fb,4915b891,83565d8a) | |
2235 | Z8(cd5107ed,98ec091a,a171a78b,ce05e3aa,a8d5405c,3d726a17,3ea46056,e2fc7ac4) | |
2236 | Z8(0467d7b6,3f47f6db,0362363b,c94ee58b,896078ab,2695ea17,efa1ae2a,af19e783) | |
2237 | Z8(41d2e363,d1152db0,997fce3a,b92e8c16,8d5cc645,6d5a8c93,6d83e585,b0540923) | |
2238 | Z8(a52feecc,195d9f50,4c490c87,d7cbd120,e0e1539e,0cb1f323,aa48c726,8d98e93e) | |
2239 | Z8(629e7f9c,90338ede,06af7200,ee638267,14946df8,7ea54a5b,e9f39858,01d648ef) | |
2240 | Z8(446da695,ba46e56a,d6e62337,e01b48fa,a0ab7b9d,70bd203d,b5da39c0,fbb02610) | |
2241 | Z8(0fdc2831,8a23f915,c17eeacf,b6c66c6f,ad7ae1b7,6de2320f,52055e24,d6b27f3d) | |
2242 | Z8(6c78b99f,f157e43a,2b34206e,80ff74dc,269a93c0,ccf3e5d7,7a3f7ef0,0133b279) | |
2243 | Z8(8e91bf42,963ee831,edd5b7b4,d02d9d93,3b21003c,120e2a45,f43cf487,a63512a3) | |
2244 | Z8(13571a68,c6374440,44b9d321,0d3d9dec,989034f8,bfdfc91f,b2dbbc6d,cd76c0b2) | |
2245 | Z8(72de0ba5,a3fa58d0,9e72bb1d,f2c13675,81626e1a,91745eb5,9bfb9616,f0f12e2c) | |
2246 | Z8(f7e7e797,4249c36b,a42b8558,b1cbe40e,2b75566f,e43e8c4d,f779d109,2e1b828e) | |
2247 | Z8(c2d10c8b,deccd12d,11a5201a,aabbc514,85a15792,57528a77,b4b5a2b6,1bcca4e0) | |
2248 | Z8(ee932714,a0c91f9d,05c042b4,581d559f,d9de534e,c49cfb8c,c55a7214,d969033a) | |
2249 | Z8(a9392c4e,62b71f04,a353ac8f,2652d083,fbb5c569,119c41c5,caf8ca1d,50fe7518) | |
2250 | Z8(21826356,eee9d959,a29ae754,c03039e6,8899cb91,3fe537af,6747d614,3b4379f7) | |
2251 | Z8(2360dbf3,faeefc22,e8fd9549,11d5c129,b409b454,f1586a5e,622caddb,3061a6f5) | |
2252 | Z8(2102c616,00ff3eea,fa8c2076,264bd3d5,ae9f6920,18bb041d,a2c6d51e,788cbe2d) | |
2253 | Z8(318de655,95f6ecf8,63844730,ff2fe4bb,f2fcb247,8b654b13,642de029,f95577a7) | |
2254 | Z8(ff146da2,b5ec9b5b,f5ab4274,67059950,3c5cce48,23c866e7,d464ba6d,9fc4b60f) | |
2255 | Z8(3c309fd5,7d2350e7,c488dd99,d56c938e,a3f48272,60ab5359,cb1dc14e,96873755) | |
2256 | Z8(07b801d0,7581de52,62464483,475cf3c4,2019057d,ecf4ae0a,c1caa68b,d7fafa09) | |
2257 | Z8(7e741a33,3db10c1d,b660933b,6bd02b8a,42a0b4ff,2b0c04ad,759df1b3,e08b7bc2) | |
2258 | Z8(9df24d34,c06f416b,1b7cfe73,9b3f30a0,11aedb6b,8dad3fab,22fefaaa,dae03aca) | |
2259 | Z8(966ab762,fb8d5419,dc5193a8,8c29c8a9,c91fe38f,e477870a,28642cee,7192ed74) | |
2260 | Z8(9b38a28a,8bb196ee,eb6aac61,bed30b97,0fb7391f,9b78469b,e4e81fc1,54d27446) | |
2261 | Z8(9deda7f5,b213b57c,4c0b52c5,6ee786a8,6f1bab06,0538aec1,56be3b1a,8591c213) | |
2262 | Z8(8e31a81b,a852e1b8,a9899296,48c5dcb4,d24b0b3f,5cc6f79a,4b59b55b,9c83b0e5) | |
2263 | Z8(6a482f45,609477f9,941f42d0,30d2dfda,989f8903,f29cfc2d,6df451f7,79528456) | |
2264 | Z8(7242d0ca,ddf1b444,fcb19c1e,e54bb6df,cd474df6,75cf87a0,4b6817bd,f09167d5) | |
2265 | Z8(7bda6303,2250337d,0b1762a9,ced990f2,5bb06ac1,5f58e589,47aee0f3,8f70471b) | |
2266 | Z8(2d28ed86,0f5e636e,425c9da7,b6788626,c821e5aa,dafb5152,4b4f1317,46b85475) | |
2267 | Z8(2a46b82b,bfc4d94e,a84bd986,6701d3e9,5ea59406,0c86cf5d,b48ea3ad,e103f3e0) | |
2268 | Z8(5574292b,4be769d2,ff9cff09,27d03131,ad5776aa,e97f8e57,e49b270b,6cadc168) | |
2269 | Z8(c110c296,140ff616,b5c9483f,1d8b9eb2,c5ac635c,cfcbe6c2,f06ec0cf,656dfa4c) | |
2270 | Z8(edbb8761,3d3d1c39,5adfc86d,a0f65511,19c327b3,110a4d8a,658248d9,fa5af7e5) | |
2271 | Z8(91b05a75,4d3d56ec,11291a4e,7845e62f,2dd465d6,5b075370,36894876,15330055) | |
2272 | Z8(38e14c56,4fc09d7e,020803fc,cd5814b5,5b5fd022,6a8aaf20,a81f7623,bb723044) | |
2273 | Z8(570bb090,c8e055fe,03d22e89,ad232d4c,0603803f,6669147e,0491cf4d,9ac96796) | |
2274 | Z8(8e70fb57,f5474f7a,0372c652,ed6b06c0,8a986e91,9eac9b26,77070578,d9f36ddc) | |
2275 | Z8(07a7d396,4e5dd11f,795e38ea,229bccba,95f1c990,de607c9a,f9d03973,542170da) | |
2276 | Z8(b406da15,f15181e4,34308b8e,aababa66,cf3c9209,520614a5,6f78a1ba,dc4bd0c9) | |
2277 | Z8(c11ca492,beffc79a,53dfbd80,3a6c39ea,f0c1cc22,59e252bb,e3f5236d,fd534c4f) | |
2278 | Z8(c656a2d9,583cd0ef,d9f7dba1,fb4fe1f5,20a8969d,91b9292e,21d1c089,9379bee9) | |
2279 | Z8(f45e23b6,f7123315,59d542a2,f0ec6c77,bbf2413c,33b0ac14,2ea189b4,885b8b42) | |
2280 | Z8(e65dc555,1bf1d476,6620a1d3,b21610c7,357e8376,1d5237b1,1a80064d,060e0829) | |
2281 | Z8(cc9922cd,cb01603f,1b323389,61fec952,138d8784,a6f46a71,240ac200,d5668b7a) | |
2282 | Z8(beee5c17,97c53a1a,7a965253,56d47515,eee564be,4e0b3095,9378ab5f,b8467c1b) | |
2283 | Z8(ed2cc6d5,7801a681,87d30fe7,4b6b46ee,04b092b0,a2933bff,ec937742,ac7a0116) | |
2284 | Z8(35689c30,b7723c5d,cd493ff8,3700ab70,b6058125,955aade6,cfb6fb42,eb79c685) | |
2285 | Z8(53a4212b,fa3c15b6,7e0bef29,62728386,d3fd081f,5a565035,fd7af5df,debae30c) | |
2286 | Z8(4c5636ab,765757af,46981736,26c3cdf8,843aa7b6,fbb47b88,85ac881c,597df775) | |
2287 | Z8(6e0e2301,7d850c67,d71a0b6b,9c4c7d01,a7e77db2,d873bd57,9d9cafa3,f52d70c9) | |
2288 | Z8(61cdfb62,98c1dbff,8cb3a786,cfeb69af,4ffeabda,64c38ad9,14a84fd7,4e05f853) | |
2289 | Z8(afc36a07,8a18776a,a3699c55,2fd4e9f1,28e89134,78fc0479,6dfa8837,dd4fa9e5) | |
2290 | Z8(2a26c6ae,ebed9cd8,fd642e3e,f8ea8e77,3eb9436b,bbf35781,6973261d,ce85dabb) | |
2291 | Z8(db0ffe6d,92422ff8,38f41a55,0eca36a8,2bbbce91,1a887996,50e6d18d,dd09a8ef) | |
2292 | Z8(7fcbfcc4,d2516766,9c6f0b1e,100b05f5,e6643357,98f2be9a,b23a2884,9a1b3aee) | |
2293 | Z8(b98a403e,b2a7e949,fbd05284,e8c4b007,bfd90336,11cf9e23,c430dfcb,e217da54) | |
2294 | Z8(344c500e,a3210550,c9be789f,316a19d5,a36c2f05,c2724e2a,d4723b63,e342ac0e) | |
2295 | Z8(95ffc577,2feb58d1,fd72456b,d98795f3,f7eb8aa0,8fa202cd,c1cdace0,a6512bcb) | |
2296 | Z8(ee6c3510,3f18467e,6f667c02,ccf48294,39a98801,6d014eaa,c3801a58,902e4f7b) | |
2297 | Z8(6425a843,d77adc5f,b59cc541,babdc104,4594f4a0,5372cd90,69b5e334,8a9f5fcb) | |
2298 | Z8(d8b22b9d,7df95802,1bb90cfb,487f3960,73e89601,3cd12f68,25a4113c,91eb158b) | |
2299 | Z8(1033875a,37870480,142598e8,2dadfac3,d101a54d,5e5d45da,594894b3,be92d057) | |
2300 | Z8(61a8ba27,a0e4ff10,607015bb,2997e256,66cc746a,a7d88e0f,93d9dcde,86b271e4) | |
2301 | Z8(2f3173e5,ec52f687,742d7f94,31433249,38e20620,96e15608,aea4d485,6fcca12e) | |
2302 | Z8(603ca4b2,3917c9d1,43c21360,c913621f,7d16b296,0f5285d8,036f03f7,c9e70144) | |
2303 | Z8(2fcd9aac,801ad177,8169a445,d6cb327d,24b4015a,092b78e6,b023a542,3d42b13a) | |
2304 | Z8(71b85e47,a7efea1a,db1f31ad,0ef4111c,f076b4f5,1a299a26,2023390a,649b9e53) | |
2305 | Z8(122b5351,831924ab,b4763b66,95795aac,b9710f3f,bff2adcf,4c98d891,a98e3744) | |
2306 | Z8(a9cf1bf7,0aedaaa6,2b84f01b,dc1cd48d,b5d49c70,0fbfff1c,b1037813,83ef5071) | |
2307 | Z8(0c745021,02d2cf18,b1cd4a62,e0d70865,d5571a9b,fba7fb13,4d57bde4,7bd5323f) | |
2308 | Z8(6538f897,6717387e,62e50df8,e1841b31,0272f90a,1b532f27,ffda8362,f7d1438d) | |
2309 | Z8(a1f1892d,5b635553,d1e929bb,a8217ce8,2fbd462c,11000ecc,4bca7708,78ad18de) | |
2310 | Z8(484f592e,e1024daf,c368c496,7cf938f4,e88c49cc,39a8f8b6,af31c372,c074eea8) | |
2311 | Z8(d4afb568,d03a8528,d27b7465,a79f939b,9c960792,51dc4a1e,ad9eb076,d05b2b01) | |
2312 | Z8(8e00f590,da599125,8bb7eb9e,6fca0f88,23db1250,1da5ba0a,f31ba770,adf3da4a) | |
2313 | Z8(2637fdcb,4d817cd8,25d36ec1,94a49d95,144911e6,4a41d43e,c7a17a8c,d4406ce3) | |
2314 | Z8(4c6607b4,a908f4e2,67e9ed7f,a034c6d8,83856782,1b1fd48a,f9872163,75e91fd1) | |
2315 | Z8(2b1af688,e6895bfa,c6b5142e,cb6e47fb,518eef77,11a940ae,2e94b1d4,84207108) | |
2316 | Z8(62ed29f8,7540e6d4,c8cff5ac,97da875d,3c79dd92,d9e61408,646936b7,7debb96f) | |
2317 | Z8(7c07a506,cfb86155,8180e8a3,bbbda89e,fa3063c1,ce5b4df1,763de9f4,00b4093c) | |
2318 | Z8(a31ab712,91f8ad74,b6d5ecd3,c3e588e0,0a3e3734,096baf6f,ba78c906,fcf93a42) | |
2319 | Z8(97d72d91,088a0a55,aa0f5039,3eb36083,fd6d278a,e8f5f0dd,fdffb5fb,77ccfe70) | |
2320 | Z8(2ae559a7,647cbe20,35d1f916,e11235fc,6e6c1117,285db21f,8f0a1bbf,70138071) | |
2321 | Z8(73d66e97,ef034598,1337c5f3,13f5b314,a17c8002,d7a4656e,4dc10948,1dc398b0) | |
2322 | Z8(b63da69c,fa9457ec,b662d2e4,2f423160,bb07415f,cd060187,d1fe3f8c,1e3c90e0) | |
2323 | Z8(5440b34e,1227293a,2c7f128d,9d6043ea,dc292628,3c46a502,6c560a93,a9f886da) | |
2324 | Z8(c73d8c43,e5836e3a,2c5ef6ba,29d17e18,c84bf4e3,f72ae9f5,42ee8ead,e989be14) | |
2325 | Z8(5309331c,bfdecfcc,6c592403,1a1c54ef,4235e2e8,4ab1c52f,b2c568d8,de1fcf5b) | |
2326 | Z8(6028cd4b,03ac1451,9ccfc687,489c479e,23ff6fea,87ea71d6,0a99609d,5f01c27c) | |
2327 | Z8(4924c3df,af09f359,d1798462,2369ffa7,77b1760b,e8674dc6,43b83d08,66b6fed8) | |
2328 | Z8(7a38bf41,6d751999,1f4bc3b8,f16637ea,63eaf166,a17a3e88,728b6946,09f6c0d0) | |
2329 | Z8(9b52b216,9afcc7f0,962897c0,eec881f8,8cea66e4,b6e891d2,d2b6f345,2456f093) | |
2330 | Z8(5137257b,fa2b23d2,d5928e54,7a3e0e19,8a65612b,6bfb99f7,ab2c5ab6,85e4d0af) | |
2331 | Z8(5f1f9ee1,fd1a8794,b44d30b0,8becdc24,57009891,e568e6fa,1e4789f9,818ba0a5) | |
2332 | Z8(066617b3,a3bedc0f,7c6c9df5,dfd011ad,98ae348b,0afbd340,936c4a56,8a6f8120) | |
2333 | Z8(27fb4176,d48c6c05,9414a3ae,41f4917d,7d47cfd5,f8da0361,c0bd78ad,5dd57127) | |
2334 | Z8(8a9ef961,ac3e364d,e1eae686,ef32db36,afc920ea,a7b95040,af4e640c,ffdc3d19) | |
2335 | Z8(ead9401c,e2552bec,7be8235b,d1e09ca9,04f7034a,b036e70a,3abe790f,7819f0e2) | |
2336 | Z8(a5782fae,dedec677,05eb6cff,59cdd56d,5c2ca135,ffb121a4,06e5bd27,e86b485b) | |
2337 | Z8(2ccb7e23,a12dd97b,f1199982,9eb4ccdd,525375c7,1c6726dc,e155f8be,46e56c9d) | |
2338 | Z8(56080695,ae816ebe,99149abd,ae389dbb,7bee9169,6d383962,e5af7fdb,f5711db8) | |
2339 | Z8(bbdbd718,93129a63,dc6db1e3,91f345e7,22f72c53,a87a9df2,dfb0fcb1,e54f7a60) | |
2340 | Z8(ee82f3ed,f3ee3b73,63b57aa9,6e596d88,ef137123,e4a5cb66,43d78a16,27c4ca85) | |
2341 | Z8(3e4d4358,63433d2d,184eafe7,3ebcd3ef,60f903e1,25430744,7b6ec3eb,61de2e59) | |
2342 | Z8(0e3105e2,87853efa,4728ff00,c4d97a75,6f010c0a,54d06da7,d0c19406,dcc9d37f) | |
2343 | Z8(4767110f,ac72f22e,77774ead,e6f15a6d,095aef62,48945e6d,79632c86,c970d366) | |
2344 | Z8(768c3ce0,ff2539b1,f79ef023,0b9413da,b0cf2ad7,a89b3d95,0bb2875a,5727afec) | |
2345 | Z8(75440989,16e64272,e9162d48,ac09b365,2ee66510,dcb7c72a,b216cb8f,762d9aec) | |
2346 | Z8(7259530f,83533aa0,08689368,00e8e86d,eeaaecb1,0d00f8b8,a582df38,77c5e11c) | |
2347 | Z8(9411b922,4fb182ca,afc990ed,c6f0ee66,8b4cc790,1943cc5f,110d991c,ebb2dfad) | |
2348 | Z8(6f752895,25ce0e0b,8bf752f5,a57a3fc9,4fc6eedd,0d9c2354,860c1d11,2fbfe907) | |
2349 | Z8(77c15548,8a1800f3,39882822,44e386ca,bf0987bb,602049a5,157d2b88,9b11a3f0) | |
2350 | Z8(cfc5ee1b,b35141bf,91be484d,8f551c4a,ed07612b,92584c70,a69f2299,01c3f41b) | |
2351 | Z8(5acdab56,7b472e1f,7b93f306,a09b169b,cc77c271,98ef926f,422e4759,cb1be915) | |
2352 | Z8(1376d45e,cff0fc80,dd425f2f,0929f3ad,03abe71a,7191d105,5215bfcc,5062a7e4) | |
2353 | Z8(791c4e95,67442cbd,056e5380,2628a545,42a708ba,9e71ec5e,9a5bb933,e1a3f85f) | |
2354 | Z8(d9d47ddd,bdf4ff77,400fae64,e9c056c6,179e2546,d4cb8ea3,477ae50e,b5a49130) | |
2355 | Z8(797af702,992dcb34,9c565796,8c87accc,b85d30b7,e87a150b,a37a6f21,9045d361) | |
2356 | Z8(06f07e60,b0c306ba,08df25be,25686351,7f97299d,2e141046,97faa978,a58b6c29) | |
2357 | Z8(b80a2d6c,f1713abf,c3261afc,931e79c2,484d9b3a,262a1051,a4f0e129,ebf7169f) | |
2358 | Z8(6f552a9b,35492e1d,99fcf251,edd3c08c,bbf622f0,bcb9acbf,a14fb1b0,11a69283) | |
2359 | Z8(95e247fd,6db45dca,377fedac,39d022c1,296bdf6d,784e28fa,cb33b900,1c829ddd) | |
2360 | Z8(f6ad64ce,c625bd30,a7c81f59,c1467b9d,7a4c54ff,e7169e99,2f859e9b,bac693a8) | |
2361 | Z8(c328dd95,ec22a15f,952521e6,e4d3d933,1394fee8,033e0fe9,f19ff770,65cef723) | |
2362 | Z8(2b9b511b,e9525a7b,d836d2aa,5feda65f,b80e4327,1b77bdc3,3ad2cf1d,bd5e5374) | |
2363 | Z8(076e0644,37d3c42b,73c1fcc7,ee7de54e,c94b46cf,ac72d9a8,125e1ca1,db70d06a) | |
2364 | Z8(9eef6981,ce260aae,bded63aa,4213d437,bdf7f302,7e8a258a,2c3a852f,19a5d281) | |
2365 | Z8(cbfd7b93,4a3ac6f1,fa2ce09b,dd164031,958e49b3,328a0858,1d423a0b,df960ee6) | |
2366 | Z8(2f71223b,d1a3f3ea,4ef7ed40,4f1d1158,0003c862,30e38c17,90cefe16,ba78c602) | |
2367 | Z8(5f0b79dd,3f2e557f,a980581a,587f07ff,26c2b7bf,185a9759,a09b0715,48f05fd1) | |
2368 | Z8(5f2446a8,a2e414b3,24cdd67d,d2f5fa00,f100bca0,4aab98b2,976addd7,8daae11e) | |
2369 | Z8(e3a544dc,ccc5b710,eb917f74,cad531a6,483c0438,2abce623,a1a856c3,778e07e3) | |
2370 | Z8(aa872f4d,07cf0bd8,b014a636,fa8dca70,9837517f,2d0d7184,0ca860cf,493a5b7a) | |
2371 | Z8(20b9f5fb,f0b17bce,70476178,406c4c56,32e6029f,8023345f,9e0f3ff2,8b4d00cf) | |
2372 | Z8(e1acb9d4,55e63cdb,27c57f6e,46159818,413ca327,0d45525d,9195a487,7ee6f16a) | |
2373 | Z8(b38455e2,af229323,a905030a,763ed744,00d4e1f2,d09896c7,f9d09438,c9dcc6a6) | |
2374 | Z8(78e3d613,953891b0,70055d2a,c7cac96b,06c4274c,5545ef4e,38cb9aba,357a92ee) | |
2375 | Z8(796a885a,debb772e,7d6a9570,847204e0,603a675c,da4e7170,3e26ac69,ba405d33) | |
2376 | Z8(92cd16e3,34faec15,eb9be7d9,45753d7e,a20dce93,c32d8ad0,0e2c1e8d,2f3d80e6) | |
2377 | Z8(dfba610b,763c8bf3,6c1d6e2e,0372174b,54efbedb,7fdc684a,e2101862,ca474688) | |
2378 | Z8(0e8c6ed9,fb81cd41,95a0cca3,a6bb8177,e9deb217,3e650ad1,084c914a,889acef5) | |
2379 | Z8(fbde23f7,935d635e,66f21562,4a0f57cd,7b95144b,4a94272c,d0506a75,64fe41aa) | |
2380 | Z8(cc333293,688e8c55,3b6483d5,abefe4d0,90b7ab9d,156328d5,19e2c0be,d7ad5c2f) | |
2381 | Z8(62f75217,cfa80be4,d04570da,bcb772b5,e992da56,95a70d07,4e566505,a69f866e) | |
2382 | Z8(a5269c45,050aab33,d7e361d6,87c14c2f,d54433d4,9e7116a0,dc2d5ea1,1a542522) | |
2383 | Z8(66f8c9bb,c53c45b6,5b6225ab,32552fb8,69f881ae,b85c542d,a4ee61e0,2d5dc702) | |
2384 | Z8(cf132337,84ce62ce,4664dc49,2cae07b5,27c33114,2bad602b,c42365e5,16f4b675) | |
2385 | Z8(377b939a,9aa53c88,f34a1414,cbc0a619,6e741484,ff4c3987,d6f9be21,6085995d) | |
2386 | Z8(9a1ed953,4f801b5e,3e008a3d,249322bc,a38ad1f6,5c73b9af,8c87b7c4,30b3719c) | |
2387 | Z8(33845d54,1b275047,a79d10bd,9c649524,70592812,690c9801,c0381ce8,dc9cb39e) | |
2388 | Z8(40773637,dfbd208b,5e834522,aa9b747a,5c6a2284,71a51e40,d7168a4d,9732bcea) | |
2389 | Z8(9eceef7d,6c7d9378,f1aeac0a,b0746ddc,3dd3fb6e,f23ec644,5628ee6d,21dbceda) | |
2390 | Z8(36b0c89f,148c7cb5,2ecfadc7,dd68b519,20bcde90,bd161211,ea198089,ce92fe1c) | |
2391 | Z8(b8133cd8,d7b4afd4,1a5a797c,2881e7a4,7d092188,c079f617,d2568d36,f910788e) | |
2392 | Z8(49d92407,c895ac04,f6f86016,441f966c,ea25bbb5,1bda6655,35614bfb,fd2cb96f) | |
2393 | Z8(8ff4bc9c,fcedbaf2,f14c2cb3,7b95a096,161a4ae6,78ad5842,0183b80e,99a56c90) | |
2394 | Z8(724b6ae2,6ce4b9db,cf0bfb24,35140fa8,65e9da8e,1af051d1,6f41ffd1,05588cb9) | |
2395 | Z8(2ef27cc0,5a155cf0,d9f1a979,05bb443c,5341738d,a73e91de,27f77a59,3f47cae6) | |
2396 | Z8(116d9171,2f6d5c66,240d6c2c,61c9a399,2c091e95,13182a2e,43eabe2f,38f9cefc) | |
2397 | Z8(42e05d64,e2277056,14e88f9a,4ab3fa95,c7739240,7c34dcaf,855c739e,0cabb4d3) | |
2398 | Z8(62ebf381,51bd9ed3,9a10bd6e,7b75f42c,d2062109,e9617bcc,eb967590,34e119b5) | |
2399 | Z8(a558d929,b8e1bb97,c5e8734e,43d20c78,aa17a975,b8332671,641bb653,f0e21ee4) | |
2400 | Z8(ac99bc46,471d1d3d,dba61f78,44a099ef,8e73be93,1fce56b3,e63d0ab0,1d9a5f47) | |
2401 | Z8(5e6ba13e,85800d4a,43bd7080,e6ad6405,745aab25,1d4cadac,25517d6b,b2539f28) | |
2402 | Z8(fc9f6c09,2321114f,3959d0b9,e6e6607e,ec2b8985,e051d233,e5efb715,7d647d92) | |
2403 | Z8(e3641b02,3de81bda,2f4902dd,e4bdf9ad,2b49f9ff,b65f8d71,2df65e23,fd0aa30d) | |
2404 | Z8(f965fc03,8528d9ed,0fa6370d,aa5626b2,df6ac5dc,3b011248,a546d951,b112196b) | |
2405 | Z8(260b89f4,03ef0786,b0b12348,b4eb6cc3,9b77d3a9,899facbb,2369d688,3762dc4e) | |
2406 | Z8(1c418a52,fdc2d958,fef1d902,e5db4a5e,096f2649,f6bab61b,a3ac7d95,a7650642) | |
2407 | Z8(4e3e7bfe,b5013c38,025187d2,f8edaaf7,c3d508dd,b8ae6f4c,c399abcb,8b9a41e3) | |
2408 | Z8(c8ce20f9,3ea85da0,2ed21a61,16eb9831,364d7eee,3d0e4f1a,3580ca1e,f8adac0d) | |
2409 | Z8(49e965f2,6fa069e7,52a93a5e,7bdecfb1,3299b4de,b0566aa2,1023b459,19116d8e) | |
2410 | Z8(13aa621d,b352198e,a7071d88,2c30b93a,ba3b9428,9bfdb470,d68970b4,68b741e6) | |
2411 | Z8(c679e7b4,03b9b399,be381086,ab8b318c,da0d97d3,3f75a798,4bb04cc9,bb9fb5e8) | |
2412 | Z8(ad52e737,bf14eb2b,7a0a8341,731b3c4e,db1e859a,40fed235,57656752,e4142c6b) | |
2413 | Z8(8e1e2860,7efe471c,93feaf75,db80bf6f,b1538de9,ed9a6880,f850f9b2,2c0153fc) | |
2414 | Z8(ffa248dc,8c827fee,58b0e672,4cf97837,798eb238,b692a0b3,edc0d6c8,21c53cfe) | |
2415 | Z8(e1b7264f,cf471610,5f5d003e,b0629220,38a5f3c5,5c665e28,1c8dac5c,72277dbc) | |
2416 | Z8(7eef04dc,b6955168,ebd4336d,d835c16f,95d14bf9,64145c09,4610f87f,66002690) | |
2417 | Z8(2e7df485,0dcfe433,954d4858,c34f97eb,a1611387,47a15967,5a0e4ade,2f30a4c0) | |
2418 | Z8(ccae53cc,58073f55,c8c36793,efbfeb82,0bc4ebed,4ade7c73,880266f3,baee76e7) | |
2419 | Z8(0c2ca287,5f93bd53,5572fd19,0cc156d6,85a43491,45116f40,bc90311a,8693c37d) | |
2420 | Z8(c093c432,5e957293,4746f80a,5f95dbf0,65433a4e,068ab477,baca87b3,92f33fc2) | |
2421 | Z8(f4e0e8a3,76da80d9,a6e6c6a9,ce8970aa,91bf0837,623989d3,40ed43e1,15c1e850) | |
2422 | Z8(a1171a39,b4bbde9c,60cc7489,007e7d9c,1eda56b4,dfcf2460,0a40a1d7,90724102) | |
2423 | Z8(e4618fd5,aa215215,624d407b,b8225c9d,e038672b,ac018e35,039d3e2c,b86f736f) | |
2424 | Z8(060ae3b1,2c5bcf3a,b5aa3377,3a90dca7,54f1b8d1,7af09fb6,c9732065,652bb747) | |
2425 | Z8(e7e16ecf,caf62f64,7493a521,4280488f,c750bff6,d9e2ec57,acae33a4,0a890cf1) | |
2426 | Z8(44a186da,8e986808,5817e290,a1980eff,5c95e9c7,d64f2ee1,40fcf79a,d81b9a3d) | |
2427 | Z8(2921f92f,a526dfe6,d95fa4b8,85916152,0236d639,f409129d,8b703963,c516d825) | |
2428 | Z8(8e46c5ee,eef8a59b,1e1c2b79,7d5a821f,f2d309c4,b8296629,0f986c65,17a47959) | |
2429 | Z8(64efed58,97d79567,e845f856,51623b4c,56fcd505,40fdb1eb,30d2010a,3b48f14d) | |
2430 | Z8(f5cd52fb,a54ad888,a200cbeb,50b41664,c63e4671,3e4158e6,3f3c6a98,6eec0125) | |
2431 | Z8(0ca79e87,65245f6e,de0dc5cf,be8f4020,71a3e350,d9b78f04,419beab4,00266ec7) | |
2432 | Z8(21bdc6a0,0e25e897,697e9293,9036d94f,8a8e8281,ef1c1605,1d21eb26,ace98c2e) | |
2433 | Z8(c6a73ac5,153485d7,c5b1cc83,5f00c5a2,1ed599fe,6ceac9cf,2419d0af,adf7a49f) | |
2434 | Z8(6e15c9d3,e9b98fa0,59bfe9b8,5d6a33ac,543ecd12,f7d98716,ba9b7aff,bb4d7936) | |
2435 | Z8(88a3bfdc,0c333453,82a01bc4,adfcd18f,28671be0,2d43e205,598cbe14,640db20f) | |
2436 | Z8(baefc57d,e86d152a,28b0b822,7905d0e8,9905d037,39e4bb3b,0bac4a14,689cc2e0) | |
2437 | Z8(d20d3bdc,fedb827e,a0114b62,c2c72952,6be313cf,786ec11b,bb39cf8c,d128d10c) | |
2438 | Z8(d500d868,72796ef6,c28397e4,8a31e818,344d3122,1907f7b4,d851959c,42096ded) | |
2439 | Z8(f37a41d9,d623633b,a1e672dd,dfff72f3,9bcdf744,9116fc77,51ca3fc9,d75c41ea) | |
2440 | Z8(3e8e35f2,98031d1a,254abc72,0e65b2c7,10f025d0,bd64640f,752f55b1,242e9023) | |
2441 | Z8(1b13bb21,ebe86252,d6e8744f,7787dedb,c2f53f07,3fb1e045,777cf11f,d02e8b19) | |
2442 | Z8(b97dd591,c2c36c61,38bcdf7a,1f256273,3c20376b,a6dc2196,be1a8454,5392cd8a) | |
2443 | Z8(23f37b4d,c63b5c29,e5557418,33de32ce,e4241815,2d5edf0f,e9325e6c,b234d140) | |
2444 | Z8(fffab36a,4dc8a765,91264e41,10f9624a,31896303,d8a64ac5,14c70836,61ad6c55) | |
2445 | Z8(81ee5e90,733c6757,608b33db,d2e2d194,85191cc5,d6d3d470,1c8750c3,17ac5f93) | |
2446 | Z8(f905a539,7441cda2,97b5b17d,ef67a51c,1c8d2c8e,20345ec3,480fc388,64de21a8) | |
2447 | Z8(48c4d433,14bf6797,56166eb7,3531d0e5,4defa236,8c9b4bfe,442efdb8,d7d88ea6) | |
2448 | Z8(52b21696,528b1e2e,2d186a64,dc06756a,5ccf8451,dbb362af,8cce3747,37a24e6a) | |
2449 | Z8(6c2ef6b0,14842df2,4ec0f9b8,2a33f3be,12d353d3,bcef539d,6fffe7c4,2112a49d) | |
2450 | Z8(8ee32558,63542e08,e1f3d94e,61899086,b0829783,093e1d69,cc605ff5,5947c529) | |
2451 | Z8(bb601eb4,b16366b7,d20e52ca,02062e9c,2490da4c,b9ff1ae9,b4a216b0,aae2e5bb) | |
2452 | Z8(2a493b17,b1d57457,e06ddef6,90daae5d,155fb454,9e717ff3,95271f99,f778893a) | |
2453 | Z8(7ae5d8f4,18ca0e6e,1083822f,7d2012c0,d5d6d8f0,48d649e8,c8abca07,3892fdcc) | |
2454 | Z8(3aa5ef04,3c373bb6,0d7cb031,9e093301,1044d707,b7a9f58c,4724f3d0,f1eae917) | |
2455 | Z8(643f9d82,8f0bf98a,88ccfe26,0f4dee43,8759907e,2fccc86d,42cc28eb,933e0866) | |
2456 | Z8(5065ba8f,2b56477e,947bfb3b,96a911bc,91f1d81a,03b4503f,530fc162,429c2ecd) | |
2457 | Z8(c93b2762,d01d3980,6425dfac,8b42076b,8cb914d0,fbf3f6e0,7d3a7780,83d775aa) | |
2458 | Z8(aaeb5f46,24a1313e,8a993cee,37a37e79,b5c98bb1,11fb4c25,1c388e5f,09641f78) | |
2459 | Z8(8899457c,51b5610c,006d3c78,bd3fe9cd,15ffa51b,4a3828ba,9e016ae4,ecbd7a28) | |
2460 | Z8(0350da4a,66ef0687,c1144074,c2aca536,7aa09696,b078a13b,3c21c225,5bdd7f91) | |
2461 | Z8(b0b9e0e7,1ee48e7d,5b7e08c0,917c8a41,c695d8d4,63afa2b8,fe72a718,47acf453) | |
2462 | Z8(d7ac9057,cb2fc73a,fa5b2c54,373b4c43,e6c95f3d,58fd4506,5eea6f81,b670bea9) | |
2463 | Z8(abb500b8,cb1bccfd,7069f622,43c63df5,5ea568a7,0ac41139,97d4b4f2,707d8a45) | |
2464 | Z8(76cc415d,c5af1198,844cb095,6f027ceb,3ac4b6e0,2083809d,d57b47a6,a9ac30be) | |
2465 | Z8(9088c2c8,81c5d5aa,8b6ad0ca,6017f943,593af066,4784a26d,ea34c41f,5d658178) | |
2466 | Z8(3aef813c,47cdac4b,b2580b90,f8c353c8,285089c8,b0ac52bc,3191ac56,0c4e0870) | |
2467 | Z8(d8f26dca,cb44eaed,6cf71ade,1a9102ad,3d56711f,b8cf7e96,bf9395df,007785dd) | |
2468 | Z8(4f0fa133,265be9a5,3c721c58,8127e70d,8036f2bc,c91c8b5e,b364a074,09c27921) | |
2469 | Z8(fa9fbef3,7cd0e4d5,6837e641,f2af9439,14428b6d,a00840ed,d933e219,ca315194) | |
2470 | Z8(80dc57ce,22e84ff7,91ec6f88,26a3d922,249cf590,558141b5,d1da09f3,783110fb) | |
2471 | Z8(f33f24df,6395f731,2d814f65,9845f9e7,88a1e8f1,da0cd423,20aa833f,a9f9ca61) | |
2472 | Z8(c6dbcfba,b845a7e0,065be030,9d6a8839,899b6b14,e81e2dc5,7a732fd8,59959326) | |
2473 | Z8(84727387,9a580f07,8617bf55,6a18a118,8b63b0d1,387240cc,c6d78433,0b0b1cb7) | |
2474 | Z8(e5f1752c,35237e67,da6ebbfb,deb51086,12223aac,a14f98ed,f447a243,349bbae6) | |
2475 | Z8(053c74c3,23c26791,237e89ce,72f9f742,b17a7d4c,98c9eafc,d9c897d4,268764e2) | |
2476 | Z8(3b8f57a5,39d732f5,a78a05a5,5463369e,8e689aae,47739cac,c6010098,9e6e8d0b) | |
2477 | Z8(58f13f59,d4b41b3a,092c6c64,f0a3f218,be6e6774,bb741d86,a65a9d22,6ea4f224) | |
2478 | Z8(764b7e32,418952e4,6e120f1b,e9eddcf6,ad1d6506,8751a5a1,0c9319c1,5ebcf0eb) | |
2479 | Z8(d7d2a328,72a31f86,745c0b15,50e0dd97,750d31fd,74dd51cf,6bbf8d3a,1ebb5cd6) | |
2480 | Z8(69ba8070,a862c2fd,a48e8dfe,93951e81,b56f7dcb,aef939a8,5613850d,d9f61827) | |
2481 | Z8(341ef7d9,4c8a8a58,068ba76e,eb771978,fbac59f0,c0ed8281,ca09768e,56ed7585) | |
2482 | Z8(83d0cf75,292bafe9,2832df7c,063c57fe,cec29804,2b0db64c,d32dd8ec,f3e48d0e) | |
2483 | Z8(6bd1a582,c69460c4,997976a2,460099d8,9ab1a6e6,a175baa1,3c79a9f4,bdb51a59) | |
2484 | Z8(09e6844b,0b74e21b,fee26581,a9515711,66c864eb,9fb1f926,b1b05537,31f6ced1) | |
2485 | Z8(1d099880,b8297a30,055c6bcb,7d47ee8f,c93922e9,a0cd222a,c0606acd,f2aac943) | |
2486 | Z8(442ebafc,889aa107,fce93189,7b3673c4,877254c0,8e5dc037,769f62f3,091fbb2c) | |
2487 | Z8(c1d09294,d23f29a6,e9841586,f2428640,c73607cb,8ef53bc2,225b0741,069127ae) | |
2488 | Z8(2f788c47,8aae5807,1203a9ec,1b793e84,94e2e724,f8eaf401,b96c86e9,3dcacb97) | |
2489 | Z8(e5f9cb82,860aae79,fe21f1af,027f0223,f41589d1,e039ec5a,5e6e6677,06831b9d) | |
2490 | Z8(db3b757b,7057679e,6ed829aa,7c8c383c,55288c4c,05f688fb,e2153642,6f8e019e) | |
2491 | Z8(5d260f85,c620cd1a,b064a431,928c6016,3b8383cd,4984ee88,d0bddb9d,25af0332) | |
2492 | Z8(d9ab8c9c,f89e2e62,62b6d795,8efe373f,add42122,1ea2e9ba,b6a8efab,6c7dcc55) | |
2493 | Z8(dc438025,9b4185be,3881647c,217200f4,761f4754,eee4437c,bcd8ee36,0e0de0aa) | |
2494 | Z8(986bed93,a5e3d35c,8fe2ae08,ebe7d2d3,fa0a3fec,699b18f1,fda51671,3e6f4ac4) | |
2495 | Z8(bd49d4b4,810eef13,8469a875,7610f801,38b094ef,130799bf,90b4adea,6d74e8df) | |
2496 | Z8(5e23e245,1b042486,e3e5ded0,954916b5,d2a3d027,58b9c46b,c00df9e4,bbac988c) | |
2497 | Z8(e81ff2f5,65602033,80f00af8,1b02036f,d60d674a,82c2170e,0fa2bdce,f2645f7d) | |
2498 | Z8(3fa3c22a,0c7af46e,7cab598a,71c94701,a65e2dfb,05d9b554,2da1d119,f97d4674) | |
2499 | Z8(b48ddc27,9c86e488,9f67c22d,c8ccc3df,c256ee80,bffac15d,bae6cab0,98b013a3) | |
2500 | Z8(6973b3e8,67ab6b1f,b84652b0,0f9ceb99,75e81ae8,b2d5552d,22b3dac6,013532dd) | |
2501 | Z8(24e01427,be5551f9,fff5a123,fc836f31,af385315,9bf9e9f2,72f43017,1f9eaa6f) | |
2502 | Z8(806fa86a,819cff7e,fe962aa9,e02824e7,7062e2fd,00a4f49a,52be905d,a049aa31) | |
2503 | Z8(967f2743,d685468d,4d77cfd1,6771ee06,e7724a29,9b96e0a6,d663b65b,ff138a12) | |
2504 | Z8(4359d077,80d8e55d,022230d0,e6bb0427,1fcfd8d6,c07bf262,bada1359,f29e3480) | |
2505 | Z8(c8762f55,7a6a18b7,99000ce6,1acd4a7d,9b2f74ee,3789c5bc,facfe46e,ca638068) | |
2506 | Z8(d17919b3,4918b1ec,9ffe10a7,f1a46e96,34d129e0,182609fe,f845e1cd,74462897) | |
2507 | Z8(ff9ecc6e,a6b18b1b,2cd6d010,24291371,55e6e609,141f515e,3018eacb,8ea1b526) | |
2508 | Z8(f630218e,2f6da052,8e04d3a7,d03556f2,844bf085,acb85b11,f0a53e02,d0d5e59c) | |
2509 | Z8(06ac449f,cdb9f0a8,94c7957a,a378fd3d,8d544cae,79945a87,9d02a803,7d9e6b1c) | |
2510 | Z8(13977c1c,a245175f,89085d9b,086e9d46,e69d5a0c,ec29d84e,19ec2c62,9bca449a) | |
2511 | Z8(48bf61b1,95df6774,edb91f61,5d9c140f,23550f43,34fda29c,25c7276d,963ad5d2) | |
2512 | Z8(8bd4c1d9,889f4fda,3e30e0a9,db7a7f02,1722a79a,47511164,63343d1d,80b08cce) | |
2513 | Z8(2eb04809,811b1307,1ea35f12,7614121e,5dfc1a02,28771c85,e418ec25,0c1d0e1c) | |
2514 | Z8(66e7bf78,cc8ac8f0,ce03c1fe,c471fff6,0372437e,46aa089c,a32668b1,c5706bb2) | |
2515 | Z8(dbf6d062,c4015746,fba87a8e,a2cdcb10,fd35946c,a3025ac8,36bb0c67,e741a113) | |
2516 | Z8(3ede39db,ab59169c,9b7e1421,1d9e2bd5,9f4ce05d,034c11ab,1eb33550,285c84ea) | |
2517 | Z8(42afe364,8fbde714,0437d164,266ccf51,40d899a8,a95fd0ee,0a09f960,3d6c1366) | |
2518 | Z8(567de8de,036c9679,72fec915,cf7d7da6,6ad8b210,ed1fec6c,5159626d,afa06bb4) | |
2519 | Z8(047d0157,b27d2fd7,02788995,baf1bf4f,36969a6c,949ba3a8,7b7674db,6b83e67c) | |
2520 | Z8(4c7532ec,e0e38fde,e2e7eb76,01bdc212,eadead1f,ea694993,44eb271b,c72b3176) | |
2521 | Z8(b55b0757,84ba2992,6f0d4902,2a129aa5,e549c413,d78943db,55e68864,a4c8051b) | |
2522 | Z8(28fb484b,5fd07fe3,1cee0791,c7e3cb5a,8a433e16,2d5a341f,7b0864af,503416ae) | |
2523 | Z8(ac28dc4e,41b348ea,4867f571,81199df4,1bd93bc8,5dd917f0,1d7e2eff,2394dee7) | |
2524 | Z8(7cdf7c55,97fbe543,df8cfc98,9b059eae,1155775e,1718de8e,0bcafeeb,f57e9655) | |
2525 | Z8(9a9f25f6,d62613d5,2fff2858,59bd8c30,890e5a68,1dcd7e96,3a407b9c,18af433c) | |
2526 | Z8(353591f0,a2e49a11,420724fe,892e52e5,42ad9e0c,aafc2061,03dba901,92e156a0) | |
2527 | Z8(b7fae92b,845b91d4,e0cfa63e,3b7010d8,2d1729b2,b847deec,56426835,9536ad2d) | |
2528 | Z8(7ebc8d61,72d16945,322e885b,a8f29bba,55a3518e,a797b1dd,d0805454,40d0d229) | |
2529 | Z8(00f1e47f,ba1439af,0ce391be,5828dd2a,4bf0b73a,eef28aad,12383671,0606b905) | |
2530 | Z8(5f3b9553,b5878241,72ad6473,cd4538cc,6bb142c5,5efbd767,221fec8d,4a222b77) | |
2531 | Z8(51ab79d8,2857afd2,fb64aa39,47822e76,699e33ee,f46f931c,ccb53267,bf368bc5) | |
2532 | Z8(caceea02,9526785e,2a910532,5a98ee8e,0cb44051,257801a1,f764355e,b3839e9d) | |
2533 | Z8(94b779c0,5b833a1c,653b83c1,3577441b,d4ce6488,d456ab6a,5412ba6d,e0d740c4) | |
2534 | Z8(425324ef,b556acc8,0b5d9925,b688bd3c,face3e50,26338b7e,ce6c4039,4ad42eda) | |
2535 | Z8(c6f8e91a,55c0fb16,8f0f056b,a4df39ff,c63cf98d,499e1a49,f64fb205,960a20df) | |
2536 | Z8(b1f9cd81,221e82ce,853b435d,085e6382,b106b7bd,c1aa9afc,8acbebf4,06bd4bba) | |
2537 | Z8(9bf4a4d9,351dc11c,1d82919f,5bb6b959,3c2776ae,8d6d7c27,d8d0dbf9,63ef2a26) | |
2538 | Z8(fc94f734,57767da3,dd2b2213,2b88d46d,f7ba9a51,85ee2b2e,ac1f6ad5,adeab1bf) | |
2539 | Z8(9701d6f2,feeb1c62,59c20537,e49a9555,a24db612,72ca9898,904a2ca8,fea97efb) | |
2540 | Z8(61744383,5422b5ec,b5a6032a,60b8413e,322fd0f3,58e16a2f,95e09aa8,077d05cc) | |
2541 | Z8(a252c846,ea1e89d8,6bbf4064,2a493cd4,cd6b5ddc,1dcb2791,f305e52c,6cf68aa8) | |
2542 | Z8(82a5aa1e,3d7a8ac3,d4d04c1d,06ea1c11,30cd1210,aa2d9d94,a8c08a63,4797a28e) | |
2543 | Z8(759ab934,c8234314,4caed4f8,662665cf,70c8f888,a98b90e9,06146f1d,3000e784) | |
2544 | Z8(cd2f3da8,d0074d5b,a42137e7,96234295,2ae13d13,e54cd16c,e36ba645,f52c8cd2) | |
2545 | Z8(b858b4e7,089614e8,92fa21a6,a8640749,d423f1e8,3e8a4b7b,464ff83b,71f74b7c) | |
2546 | Z8(4922beb8,30317100,d1175b84,4a34b019,f7a3d15a,06a38e01,58eee977,fc3f13e0) | |
2547 | Z8(434e1a0f,e3756d3b,20c3f3ba,26f21bb7,6e210a00,6aadcf39,4ee1d26d,6a1f9eb0) | |
2548 | Z8(9cb172b7,88d3c875,c53e5c08,2c8cb9b5,454c4284,b00dfd11,904d0464,439eda07) | |
2549 | Z8(fbf07a3c,02bfd1ea,d47898c4,c8a7d5b8,4992f83c,6a2c5842,ac30dcc2,c60d4b3c) | |
2550 | Z8(1855fa10,027c8f7f,4413cd25,4f0010d6,44c841f2,52ea70f5,b8ab2445,54343f7d) | |
2551 | Z8(21528c07,9ba3fc6d,6dd3fd30,b1621276,2755a87a,71c2154f,c26a3b0a,0b01767e) | |
2552 | Z8(f0b7d4eb,be719f12,07744c3f,b5dd45be,e566ad3c,33677009,fa0cd9f1,6913dc64) | |
2553 | Z8(c756cec9,49848de7,84b4aa2e,f0e5a54d,629cc6c1,47d47c14,3eec7e6d,904c4f00) | |
2554 | Z8(dd143a29,3b0bddd0,30d1d115,cef24a69,8466b26c,b9df93b7,66a4e5ad,c1c5b014) | |
2555 | Z8(89ee14d5,c81f55fa,530241ad,cc9065c0,42146687,b303baa1,8118136c,927e5626) | |
2556 | Z8(b4e80fa4,39af7c44,8dcdf25f,a2079845,074bdea8,e0849840,060637fd,641f37da) | |
2557 | Z8(eb7004fe,46a927e4,2d3acee1,dc7a7c32,b9c84644,dc7686da,fc301d78,82c637bb) | |
2558 | Z8(3525ebad,73676441,647fccdf,6811f1a8,c4852498,f348b569,5bf683e0,0174d6c6) | |
2559 | Z8(a06efded,e2b0de09,53c35401,7093f8ad,0f76ece8,e8d60378,7a5993ec,9f8c45e0) | |
2560 | Z8(8ccb9931,5a531600,c22d1c4a,4070e37a,ddde57fb,a30eb147,8ed86a48,b22b2296) | |
2561 | Z8(d5d05093,e7b7ce4e,1357b282,1fa3a4e8,4fc4a44f,9c047c28,8f395a10,ca89ca50) | |
2562 | Z8(06353f65,d6a3251b,d23aa5f4,3504de0b,242ad5da,e01e183a,694d99f0,76833885) | |
2563 | Z8(bdeaa24a,dfcb9099,6cd36b11,ceeb8d13,ee39cf05,63ec6deb,3d1a2d81,149f5ea3) | |
2564 | Z8(6afaa033,22e94dad,1fcb8d63,cebe7a1f,d0f59db3,098ab739,66f15283,44e103ac) | |
2565 | Z8(61f6f273,8eac682f,c4805d99,76ea5850,64cd92f6,a2fd6d08,6a228909,bca3ff7c) | |
2566 | Z8(6831da14,807c3220,45dac9d3,ec18c96d,c24fd23f,69dabb23,ccd18252,af037819) | |
2567 | Z8(c83e1611,e2bed73a,b66e53fa,72557dd1,1a1c7afb,fa9cd9c1,f43f7e9c,6d78fbde) | |
2568 | Z8(c3bd937d,b0d6b4bc,cb0a5cba,f4907faf,0ce69df1,860a774b,98040d87,538ea0c1) | |
2569 | Z8(418fc6f8,da471fb6,02231b25,cddb4faf,40ee75fd,a00f4b5a,832544ff,aa6d43b7) | |
2570 | Z8(d8991020,f48906b7,10bea83d,85dbf00c,d066739b,dc2ca45c,217ddf51,a59ff340) | |
2571 | Z8(ef7651d9,f1bf1647,f2d54f6b,0eb4ff03,1e5cd0e1,4e2411c6,268137d1,0ced2476) | |
2572 | Z8(c08fae75,4ba7e452,c06dfb35,78e8c9cc,c2058eec,f15f6eec,46ff2c83,a41b6626) | |
2573 | Z8(a6ce14e6,cbc758db,66249a5f,cc55053f,34869c86,050d7993,7fde8c49,246d5abf) | |
2574 | Z8(e5270234,aaa4bf05,c7bab166,d2519caa,3b140f45,393412d8,98f2d50c,407b3e5d) | |
2575 | Z8(3a9b0baf,1b0f16aa,5b48fca1,b582d316,964f86cc,a79a7889,2a28a22b,d497bfb0) | |
2576 | Z8(f9b6a3d0,8527c462,a03a45f6,74986758,69060803,9bed7d12,6b2422c8,613cd5f1) | |
2577 | Z8(48f1d99d,89bfc90a,c24fdb92,bd80a7f6,2ea8af18,4a9b537e,73be392f,cada6a63) | |
2578 | Z8(8a265a5d,5e543099,7119ffc3,abbbf34d,e0e867e0,ef580996,66911152,18ee4fed) | |
2579 | Z8(959e7d0f,6260ba6d,95235401,a1dfce22,4a83808b,ca6d32cc,1503cb19,9f304d85) | |
2580 | Z8(c369b05e,2549c028,2276a7f4,f2a27bdb,77ae081a,3eb3f97a,69a080e5,81ea7d9b) | |
2581 | Z8(c1159f1e,9fac1b60,fd397588,d08ff8ee,74cda7e0,7d9d49bf,749fc5ff,d02b8dd8) | |
2582 | Z8(668c14fc,bd8c0a3f,13ba47af,c393876b,5b780ff8,cc5d3b3e,1dcb41fc,a05efbf6) | |
2583 | Z8(bbef38ad,cd2f0edd,0cb988d7,c02fd68c,1a0fffc1,09a7a15a,be6327f6,bd2d2e1c) | |
2584 | Z8(989be821,7524d28b,81eeeb2b,e27c2e25,5fe06c06,be61d652,8a31f8c5,09f646c3) | |
2585 | Z8(e1178a2e,c5e10291,72b6387a,ed68e0fc,9fb59f1d,619005f5,243b4352,8a4bd5d9) | |
2586 | Z8(12ed07fa,a1de674f,8ea99387,cc12ad0a,bb44392e,e95524fb,f28c2de3,4825c313) | |
2587 | Z8(705d288b,ba82e4e4,cda6fdbd,aa85d7ed,d1cb5ab6,2cc227f5,1849640b,984258a4) | |
2588 | Z8(e15f5080,462a13fa,0182da03,b36212e9,3bc842f3,56de2510,61df0c4e,cf9c350e) | |
2589 | Z8(1eee0dbd,34a9cd5d,68725494,2c64c059,e7fe2ae4,045b1c8a,760bd67d,3771dad1) | |
2590 | Z8(0617b104,94819b05,9785e8fd,5745a3df,42ccfbcb,f459b117,67bb1823,ad044901) | |
2591 | Z8(5054bc8d,4f4c4444,82ea31d7,5c2b3662,90aaaafb,38664298,3881c777,829bf0f7) | |
2592 | Z8(38de2c5f,dcda4a61,f2b8ebc7,afe2edfe,a1fe5fa9,92656327,4706b8d8,2f41f966) | |
2593 | Z8(b88a052b,7c0a5e1d,a80ad130,64d9e4b2,25e90503,0d662823,d12daee9,3002d95a) | |
2594 | Z8(2fa652cd,2c2040f8,58ba309f,3405dcf6,7a8e9022,a41f5bc5,3d5c8534,2cc93381) | |
2595 | Z8(dbb22c17,bee1744e,44ec1339,ca7fb623,26c59e33,b189e1d3,066b6dd0,47ad09b7) | |
2596 | Z8(329820ce,b35b529f,a43b86d2,6613acc2,9160e187,c68e45a9,efa16f22,d2c990b4) | |
2597 | Z8(56688c15,21c5e9b8,bf772dbf,1f981a6b,6a521c1c,6aaa9e9d,cca9916a,2c5f5d1e) | |
2598 | Z8(a2b6e386,c35325b3,7df870e2,9d1b60eb,bea48e16,d034f527,112128e4,bb0f696f) | |
2599 | Z8(7893bb42,2ba849d3,efb1a162,c5ffae81,3a240564,d49258b0,f22848fc,3c8a992a) | |
2600 | Z8(999a07ee,d197ebf5,81847652,3030719f,a4f09e60,74c8ee10,58a09213,5c96b4cb) | |
2601 | Z8(97a93926,e52250d1,af57830e,cb125696,974fe4ee,125f9145,98fbdfa5,ad26c2f2) | |
2602 | Z8(f6a59084,e7aa9459,bf1294ff,9802e59a,e9b05eb1,a0bd9f53,530a19e9,0f52953a) | |
2603 | Z8(5731365b,1a667fbf,2e953616,c23b9c5b,d2f8467e,db588768,bf30c004,30ef44eb) | |
2604 | Z8(3773a533,73228656,d8030b46,f76e387f,34dbf9bd,3e6c7456,d7512ba1,a2a34833) | |
2605 | Z8(b80eb18e,39e6b22f,a3b4835f,92b9b376,8aaa4fe2,80195418,bc970ef6,7dad3cf7) | |
2606 | Z8(4bf3202f,b08cee0d,2a1b5349,3b318536,c60e5893,70987778,28356121,8de4f0cd) | |
2607 | Z8(45349112,4157f31d,6fc656a7,297097b9,ba98742f,7ec7ee88,b8b8568b,42bfe394) | |
2608 | Z8(03a0ee2f,677aea8e,a45fb6e7,449187e2,8ceed919,1cc3ecb8,ba847ef9,a1b50e7e) | |
2609 | Z8(7a1c11ca,a67543f5,f87c9b22,79aefaff,38b29de8,dfda0c7b,c9118e32,f425b77f) | |
2610 | Z8(923bff0f,bb62f54e,2fac7c2d,c5c65842,0391e3fd,4c3e4eee,56f8a9ab,1de7d666) | |
2611 | Z8(f11a2c9b,8e9ad58a,e6609b25,689b9864,b425f197,83a3f9c3,2da146ad,65f755ae) | |
2612 | Z8(e453bb2b,57cec152,917375e5,37b6a77c,c1822f97,bf1f14b2,d5b70003,17190c68) | |
2613 | Z8(2fca6ce7,f6864a5d,830df26b,bd4538fa,d768adbb,9621deea,4d0784f8,71292a47) | |
2614 | Z8(eaf6b323,15b7f882,44a11287,ba2188e0,381fbc19,72096840,b84c6eb9,b0e0df3a) | |
2615 | Z8(d45b33c3,336d1be0,bde280c4,5c735f9a,6c2f6b73,9e5bf751,cce3247b,e0aa7b2c) | |
2616 | Z8(d70bcaf8,63b349d3,dfb08f60,32848ff6,fd02747f,15bdb641,f0516284,9c39c2ef) | |
2617 | Z8(4ab81b22,10f2ecb5,23cb3b98,25a1b531,f8f7f211,2386fdd5,7d71b586,d6a43be9) | |
2618 | Z8(ef6e6ef5,fa63bf04,22c95a32,53023cec,70a95dd4,d59a37be,7adbc77b,a1972488) | |
2619 | Z8(fadf8d51,bbdc4bcf,3c1a0118,17d9849c,65d98081,1b31742d,5d81f6f8,b0d4a197) | |
2620 | Z8(f03e10d7,9f21032e,90c7dc8b,2e6775b9,b1ba7774,3695d7b8,73633046,1400e7e6) | |
2621 | Z8(677a9879,061f3558,42374d6b,141690ad,263bbc14,f14a0c85,2c273826,aa369f93) | |
2622 | Z8(3edf8771,a6e13c6e,acd7db0c,025b3f4c,f919f470,479383e4,80628501,e39513ef) | |
2623 | Z8(13c4693a,7a8f05d8,aa67a26e,768b9a56,b34932d4,f6851cab,403dfa31,c8af55f0) | |
2624 | Z8(e87ae715,06d6a912,d57bb8a5,fdf8e5c2,4c749446,856c0035,e893b7ee,70dde994) | |
2625 | Z8(85ef8c3b,4ec0ec81,fa96d02d,0552992c,01c13eb9,c46462a0,6038ebcc,14521c3c) | |
2626 | Z8(0da26cfe,c33df6fc,c78f6a24,b08d8942,aedcf2da,f849dce0,afddc324,58fa31ba) | |
2627 | Z8(80dc506c,f04922f5,9d9c19db,972854b6,7fb81ee3,aff7871e,eb5180a3,f882184d) | |
2628 | Z8(5d02a4c4,02fbd99d,984f9700,6ef450ed,76d86676,e05da6cc,f314b3ab,bcf17d7a) | |
2629 | Z8(00813c9a,c9f23806,664e32f3,cfc8990e,668c25c7,719c0d9a,d72c3ae6,96aa9971) | |
2630 | Z8(21866d3e,9c6709cc,c270559a,fb23296c,daf69535,f6a65b91,e141e0fb,42668c60) | |
2631 | Z8(60897aec,2411fc04,cdd83b9b,1b680dbe,3b8bc47a,e0e05e9e,98ef790d,70c23100) | |
2632 | Z8(38a3265d,eaeddae9,1fbc8b11,a17194c0,41510b45,d6e16756,48847fa7,04db7731) | |
2633 | Z8(c0ac78d1,865f6833,17728891,3726f7c1,02868257,1c764c4c,715a68a9,cc291f30) | |
2634 | Z8(da31ffb9,f27b7659,2609811a,0894324f,020456d9,9088539b,ee7ffeda,dc587b5c) | |
2635 | Z8(75bbe273,6d94b140,d746626c,f396e9da,92924454,9818042b,24d94723,27f02f10) | |
2636 | Z8(73ebfddd,62312aa8,776c1df8,40b1b278,c30f39de,c22925e6,892b504f,a097ebba) | |
2637 | Z8(503c7238,72639546,81152d80,d8379b9d,a5a2dc03,3b52f823,2c473452,36d3e5fc) | |
2638 | Z8(109a5ac1,a1b9ebba,7ec4294a,f4e6a5ae,f89430e2,2335ef66,2d04773c,4f2132c9) | |
2639 | Z8(1646e845,b8ec529a,abfc155f,541123c2,be718b8e,f43776d6,4ff081c1,d825429f) | |
2640 | Z8(3a6d2bb0,35c3e30e,acf6c48e,c0235a54,393d57b1,4be84484,f2f15206,bf0da208) | |
2641 | Z8(1e551462,058955e9,59479af5,cdbf71f6,a6a76cff,161ccd6c,2a1ed5e6,8479a9f8) | |
2642 | Z8(a3cb8109,eb7b06e6,bf512d65,12d37c9e,7c940527,a5d2d20a,c30d9ae1,33adc5ff) | |
2643 | Z8(19a14011,9e818c12,8735397b,ccc62f55,d94e566b,5682760a,ec78807c,42025cd0) | |
2644 | Z8(39f68651,395c2bb0,ab6b10e5,31c5eb47,d81effcc,2d2c49f7,dddec51c,5f9ee9e5) | |
2645 | Z8(6b2a9372,4a0775de,04327ce2,43c990f6,a6484d53,a78a7ceb,44c98aab,e427d8ef) | |
2646 | Z8(19761aee,be67251d,44f24725,0c7aac79,ecaf6c3a,f228cbe1,951cceff,7177d2e4) | |
2647 | Z8(150a2f4b,43624a4f,d1d6b84c,07079dfc,1c06f1cd,a42a30f2,6e298524,fc08a739) | |
2648 | Z8(7ca275bc,a6e45272,62c0ea01,0f1c0fd0,20e34ab2,e64ae14d,c742bcc9,c869ad60) | |
2649 | Z8(6d7ebecc,af9387bf,2c42942a,ea1576fe,71e6f17a,9c9c72df,1ed1a0db,7269bad7) | |
2650 | Z8(dc1cc271,11f91345,5e0fb236,23ec1a74,3a9f988d,d523ada6,e4b5c74c,a58fd1c1) | |
2651 | Z8(2e9fcb77,d64b2fbd,340516e3,39520cf3,a2545bd0,ff657e45,14a944e2,e81c0be5) | |
2652 | Z8(61d7deb7,e0c72489,387c24e3,d7fb023c,717bfa1f,70650c9c,691cbc34,14cc2c23) | |
2653 | Z8(50b7117c,5585296c,5664cf66,b886a316,f4d29ab3,79bbc199,47f133aa,855c32d8) | |
2654 | Z8(8cff4851,07b7785f,12e510b1,77fbd323,d0d55fb3,81f0fc33,d053b461,9a8b608e) | |
2655 | Z8(63199baf,dc07ae5e,1397254a,1a38e091,682a9335,82442938,faf6b86c,5f5a4833) | |
2656 | Z8(456dbf48,83135c13,7e85a420,750cad2b,b091a93c,6da37ce0,ce6bcd76,2c1e770a) | |
2657 | Z8(beade43f,69ccae3a,796184f6,a09992f6,00b277bb,f27f5661,c562ca42,3caea6a9) | |
2658 | Z8(16d557de,6dfe6971,a847bdf8,ef1b5d52,fac27958,14a2e2ed,80d629fc,615915e5) | |
2659 | Z8(7fd5f9a5,9df4bf48,01b86e44,8f214593,6c6ccf50,18f05c3d,84f5b280,aacf8e6e) | |
2660 | Z8(f9fe9aba,138eb9df,6083feac,5a44e2d7,e6944d4f,1a949ea2,b0fcc85f,52c927f1) | |
2661 | Z8(e22937f1,eab0b925,820ec370,4a8476dd,2087095b,c2b83f14,cae871eb,a238d3ae) | |
2662 | Z8(73975785,e88d65ba,d7d77452,8a3b61e3,f0c9fe3d,37fe354e,ff182afd,d5f20203) | |
2663 | Z8(a5332598,79421d64,8dd4b23a,d8c69f86,f591f891,c1a59b84,e6149da4,e7a2d70a) | |
2664 | Z8(d62a8347,76cad2ea,733c0f35,8b80ac5a,f123de87,4ad386bc,be621d9b,5f49c264) | |
2665 | Z8(21b4a2fb,2fd4f186,615e3408,b2d330e8,2b159a58,483469f1,c198a803,ea6629b8) | |
2666 | Z8(c02f6209,3e27ded8,0e116604,69d12e76,08dc55a4,2e4f7b2d,80f8cbd1,3f79728f) | |
2667 | Z8(f5fe61b4,bcdaa9c5,fb9d42d1,40b2b299,d77996e9,6a8a768c,1bb14798,107d8375) | |
2668 | Z8(da0f7c36,c842a490,f40888f3,529c9807,7c8dee49,7382d4cd,c6063a24,48abbe45) | |
2669 | Z8(b8099dd6,90a03bf8,97c15dc4,22f976b2,01aa00a2,fc467b2a,5f3003ec,7a0a0303) | |
2670 | Z8(ec29e322,a7e38d91,fed7377b,07f39ec7,332c23bc,758240ac,cd45fde9,1b038b45) | |
2671 | Z8(54d735a7,1047c684,a7b59951,f3f3053f,11454856,4ece0ea3,1b112d11,50b38ac7) | |
2672 | Z8(5cb82173,741fa18e,29b25b98,558bfc71,48bbf5fa,37195202,914ff712,eb0ecfe7) | |
2673 | Z8(db1aba7e,d3b922c5,0a271dc3,70a51a96,ac99acc4,dd561cef,fb6db42e,c65c49b7) | |
2674 | Z8(53f04181,ab1f88c3,d625e295,1afd28cf,10fd3082,504b46c9,37c23bd2,1c63228a) | |
2675 | Z8(4ccec845,e6c04c0b,b0af5f1e,517b9d3b,cefdaf16,a3b8fd4d,a7e613bb,657577ab) | |
2676 | Z8(8e511cfc,fb50acdb,b48f3e68,53c2904f,34303bb5,86d4ffce,97364ac9,f95e5740) | |
2677 | Z8(b39e81eb,2f1a84b2,0808a9be,33ac3688,2b24ca55,321aa249,e92aa577,beda85c3) | |
2678 | Z8(9e96a708,a9132578,59b83e54,3715d85a,74291f7a,30878391,39fc1d80,892420e1) | |
2679 | Z8(27e7e69b,b4cc6118,3697793a,5f306865,c7d9ee97,b9958104,87fd5ed2,1d772ffc) | |
2680 | Z8(09cb9d48,8a47f260,ba2ca81a,24a4e88e,66295a74,8132d4ea,5e0310bb,1728a243) | |
2681 | Z8(192cedea,0e991793,6ec4ac58,a6875b89,f91c850c,f6f37b95,5bc43b7e,b52a5942) | |
2682 | Z8(8c2ac657,61fd0946,f8508e78,787ef7cc,266d26d9,30339e90,1ce0acbe,846b017f) | |
2683 | Z8(3fe89f06,9ac368ab,b9f98307,92bad912,a95e27c9,71ce6350,84effed4,59604bb5) | |
2684 | Z8(71a74fa0,21a9bea9,b5cfcc6f,46435dca,8b0fe044,03475967,8d5d55ab,0bd0e6cb) | |
2685 | Z8(fbf20111,832821f5,42b51b22,54aca0aa,722545df,058a715f,f64a3679,8fb5b8ba) | |
2686 | Z8(8f4d6916,9258a9e4,c023d188,2a16b80f,dab19229,d71d0dce,34e1a6cf,856a2b6d) | |
2687 | Z8(ec4dfbe3,e550bb9d,02ed94f1,afee3ad8,fe16e64a,865405a8,7b94a8a5,7736cfbe) | |
2688 | Z8(fcbe7509,ccb258db,89af3603,3a7b8aaa,93aa9f3d,5811748c,40a6f672,94a56f35) | |
2689 | Z8(0a0ea148,4b313ec6,e96dbd92,5e0f28d0,69ad0ff3,ec15caad,e0d81586,546032d2) | |
2690 | Z8(37b68616,1c42a436,269db45b,f90fadc1,c6aa7d2d,744ce7ca,3022d936,6a5aedff) | |
2691 | Z8(8b54c939,15abe590,7000578c,5f6f7b81,d41cf4d2,3de64f17,04b75fbf,5f4a48ec) | |
2692 | Z8(c09d4318,022a2466,5e9f0ca1,a2d4eeb7,13ec71e3,888aa64f,a78344d0,dce4ba3f) | |
2693 | Z8(4a3ba731,163e9b02,a0d5f085,69843e1e,0ae2207d,c14ca55e,119c9442,002db15d) | |
2694 | Z8(31683b5a,96f571a1,e04736d5,cbeaafd9,5a75aac0,0dd2eff9,41368702,484c9bda) | |
2695 | Z8(1c7236fd,aa25135b,3ddb29eb,e1d32ef3,9f73d0db,e15fd187,0c50a3d8,8a3fb6e4) | |
2696 | Z8(ce33df4a,d1c57f08,6b17e4d7,b1e0f7c2,51a4e69a,82ec8497,ad5f40a6,f564cdba) | |
2697 | Z8(b72996b0,a615ab2a,c76009e9,997f3505,5722601d,e2e8d219,705719cc,b1384e38) | |
2698 | Z8(375101f3,82b033c5,107bf2e4,7a11b580,2165d46c,47410c23,bc922f95,af8b5018) | |
2699 | Z8(b92a9557,4b73a717,57018778,441f0813,e188808e,025e60da,983fe53b,49098e88) | |
2700 | Z8(adb47cb8,75770ac2,cc5be076,052467f2,67b64e3d,391f9301,bb263a81,07ffaceb) | |
2701 | Z8(088f88a7,6be69f44,cd3be04c,fa4ef178,fcb1e87d,9b7b6ce2,57220ec0,48d28ac2) | |
2702 | Z8(c7216dcb,e431ba12,52e0bf81,0bd29104,adc9d9cc,9455c285,a9a2b447,dd166627) | |
2703 | Z8(92613e38,860e6971,22997ebc,1b9b0873,dad5d9cf,78add210,3152a5fd,078ccfa3) | |
2704 | Z8(f169ae28,0e0b542e,da502d91,459d9f62,52d33073,d32b8157,8ff115a9,ffb3bc32) | |
2705 | Z8(e4594795,a3a963c5,96f5ef57,2f6110ca,28c3971e,052f4626,b9aeb4ae,e4c4ad8a) | |
2706 | Z8(5c902d4e,1a43be1e,774ccf98,614d0b71,d84faa6a,d72be32e,d53a8afd,b29885eb) | |
2707 | Z8(42f6eb24,9bd4b758,f6bb38b8,8f008b00,e9b1bb03,318a57fc,0a56ec7a,21e07eb4) | |
2708 | Z8(2041b1cd,af2091dc,55774607,ee4c92e6,9e715adf,23c30bef,362ce980,a7d584cf) | |
2709 | Z8(b20101e4,0e94a6c6,fc3bf63c,0d8b767e,44f53136,9ad3bddf,0d8990aa,15711cf6) | |
2710 | Z8(6808d4ca,0e23bf75,932d834b,ccaf96a5,99d7683b,c39b0c6e,cc938122,8b3a4073) | |
2711 | Z8(74a0d14e,b1caeeee,a7dddb9c,c12a6161,750e03aa,5ffdc94e,c68f587d,91b12a78) | |
2712 | Z8(a6240b12,a46245eb,7e37bdcf,44018366,5dd451b5,c771588b,9944fc80,3a769172) | |
2713 | Z8(5c9abe8e,89639829,aba5d5d4,6dd1c3e7,e9e56d5b,03fd1a43,e05c9c97,a21a3ca8) | |
2714 | Z8(b45e6a69,9f945ab9,1e795222,1c58b262,6d5997f9,48291494,64da94ab,eb0ab1b3) | |
2715 | Z8(b57a6374,ea0a67da,b719eb8a,6cd49209,ccc753a5,94d5b21a,b15c66f1,d23f3bf9) | |
2716 | Z8(68013a9c,f1c29456,3ffba60e,1ba92d78,5b1120c4,99daba33,c02dd0b8,00ad48f4) | |
2717 | Z8(9135480e,20184add,718c4e48,eb06ce52,c7f04870,cad26baf,d653f325,467f5571) | |
2718 | Z8(1e1ec4aa,a3cbb5ce,bd37f51d,dd8fdd31,735458cd,7f5d42ab,cf329319,682096dc) | |
2719 | Z8(ac2c3898,33d0d248,01c084ea,97f76292,b9c62d1d,16c27d5f,78b99d7a,2d0958ed) | |
2720 | Z8(6380235c,0d51933c,27ca5762,b48a515c,679b9a4d,10160c49,d31896b6,c2a9fd71) | |
2721 | Z8(da57ec58,81abbdb2,622667bf,aa8d1aa7,1fa462fb,23a605e5,898fcc20,ce6f375f) | |
2722 | Z8(e13f7cfc,684404d1,cd8f867b,78b31917,273c87e8,7992657c,1922ef00,4a20f8a2) | |
2723 | Z8(edb045bb,d1154565,eefa4d2b,50eef811,47a6b1b3,b1610403,12dede6d,e9ab8674) | |
2724 | Z8(015dff8a,78bf163d,26a89a69,08527f69,eca4db17,7f339845,09cf14a3,964a6dd6) | |
2725 | Z8(4c0aee5c,8313d0b5,d08e8146,419a81df,e94065b1,e548497a,2f45024d,ed715d99) | |
2726 | Z8(933e83c7,aefbac0f,a82b5ac1,b0a68b6f,61af8f1c,6afb7fc0,1d20fb8c,d400c979) | |
2727 | Z8(5938b56c,e5bfe3b9,fdf2cb6e,5d4f3e6a,d0da9483,137c1942,f8cf2582,bba7bb14) | |
2728 | Z8(a8253fa6,70ce52b3,f1ab488a,f52c4a8c,a2c2698d,94b7b46e,7dd3492c,dc1fb0ca) | |
2729 | Z8(61dc716c,f3a9c9fb,fd6e2ee0,8b42d0c4,0564b7bb,5ae95e34,507360e7,cd5a2e65) | |
2730 | Z8(25126dd3,d9ed055a,f29c6971,e81d4c23,cb0d43ee,be7a1185,c01122c4,a2356805) | |
2731 | Z8(627900a1,ba71d0dc,4bf6976f,76c14f9e,6f2c981b,2619fb35,9d113e2a,3c4ef84b) | |
2732 | Z8(9ddb7e3f,b446ff53,447daf4d,08ceb8fa,7141b438,5c9982d0,11e83c65,0c697c0f) | |
2733 | Z8(f676180f,e51335ef,2395d531,bc3f4f20,0a68b767,40b51b48,bddff6d3,e8c690af) | |
2734 | Z8(2df0557c,5c2fe528,d408429b,4b8bde06,2fc72aea,2b9380a4,f3a4ff85,8e48a5a9) | |
2735 | Z8(ddf9f7ee,e20ec99f,b63cc257,9ffe8fb0,76b92097,64a44f75,24800835,969811c8) | |
2736 | Z8(d8ab8137,057be1e0,4583dc90,c1c93e9f,102b37bf,3de3c238,778eb0d1,26fe71e2) | |
2737 | Z8(b0317346,353b5083,90702a9b,20d4e067,c656f28a,58b4777c,44f48017,23ad4801) | |
2738 | Z8(36624762,f8379e5f,1568760c,05ff0e76,b6ea671a,4d7e5a84,735304ce,76ecfda0) | |
2739 | Z8(ba5f4da9,0754e772,5b46c84e,276b7094,b03e1cc2,455c8662,8ae3b9e8,495a0543) | |
2740 | Z8(b2c4555a,29af9899,d2e79ef3,b5d7d157,3e350fe8,358290ee,5e801b6a,7f3e3898) | |
2741 | Z8(823dca27,e9bc9284,2424c266,9dda246a,5a71c570,ce14db33,51331a1f,b99fe0d9) | |
2742 | Z8(dabb82f5,4de0111d,9b2bac42,5e8b03df,01ffb8fc,0e3874f4,497ce216,2bd7b489) | |
2743 | Z8(89bb14cd,e7678b74,84a4cfd5,16b4e8ee,62816fa8,376332c5,a0112de2,d075f273) | |
2744 | Z8(d1d2ff69,7a6dd146,1437fd30,aba45951,45d2ceac,e28db2db,2eb5753d,e62dd852) | |
2745 | Z8(eb760a45,a8743e44,a61b26c3,575f15aa,d9f580fa,ee294020,334858b8,0b9425ee) | |
2746 | Z8(3279aa33,24d0b73f,3ff7ad29,2077ab72,4ee3763c,656a661d,661e41b7,d5d7efba) | |
2747 | Z8(82f6752d,44da9534,93542145,922ab1eb,0d085e40,60a170d4,2209fe4f,a330ad78) | |
2748 | Z8(3729f83a,0f74ccdd,5ec1f0e4,31dcc4dd,4ad6522e,7b777265,a31d9198,50de8a27) | |
2749 | Z8(c18ab031,08b8ca8b,10006693,41523f6e,8b89e6fe,02d93560,08c38fd8,139d277a) | |
2750 | Z8(7f363938,fc79f6f3,359749a3,1adf144c,11050a33,045f3880,f77940a1,74b6e5b6) | |
2751 | Z8(083c6bd6,6158f109,8c1d2459,df1cd684,ad66f9e4,7f2cf4c1,339a14e1,32ad29dd) | |
2752 | Z8(91d26e40,5e6c0376,e8a2e874,389bd169,7ca1cf97,a2fdc091,6979145e,3c18181d) | |
2753 | Z8(a5eb6b46,595d82dc,0c0e9978,4400360c,767502ec,1c4c308e,2c8a6320,3c6bcb6b) | |
2754 | Z8(8c2538f9,2b0b9b90,362dc818,d0e1a022,8b78b85b,1c4c24d1,c169dbcf,b51d60b3) | |
2755 | Z8(62ff47d9,1e57dcd0,6db54da6,a09e08da,178e6d83,f6225d36,e0002f4a,15b86238) | |
2756 | Z8(22207026,a3937199,c2eae029,ac77c7a8,6019e93c,1558ae57,d9104941,35c96e5a) | |
2757 | Z8(5b9c76a2,bd564685,c36eef67,55f408d6,55355f91,6ba7c43e,b72b9863,243cd244) | |
2758 | Z8(c332e663,9b714ac6,065c2adb,1e1c7e11,ff39c154,8258b9a9,9d1b5911,97b56922) | |
2759 | Z8(79197da4,33fc298b,ecf5ce3e,322f551e,29584a6e,79917f0b,1a94e375,1950c697) | |
2760 | Z8(9e9aaaf2,f321eec1,04648d2d,71722053,0ba6fbc1,7b6f043f,039ba2ce,ec3596e5) | |
2761 | Z8(fff20f67,5bdef7b6,f007410b,4d9e9d7b,606f7d6b,d4fa23f3,083c5d71,5df2cd54) | |
2762 | Z8(96c6bcd7,eef8caf1,c1af672a,f9bbed39,61ea1176,a8a8848c,e2fd042d,7a27eae7) | |
2763 | Z8(ce83e52d,0fec39b9,62b9447d,d67e18f3,77d9b714,9fc510f4,8e15ae2c,b3d07d76) | |
2764 | Z8(3e94a7e0,f9e86598,0c09cd81,27e78fdb,d968f581,df2dfa26,dac92d7b,af4ed43c) | |
2765 | Z8(91c2da46,ebef374f,b355c529,a9171add,1b5f18f1,8eb0850d,4f52bd67,1b42dd5c) | |
2766 | Z8(6075889b,3e073f0f,eab19a71,53aa849e,320de8cf,6d4f78b4,af1fa39d,bbfc88c9) | |
2767 | Z8(7ffacf0c,104bbab8,3aa19a09,f1347443,8d675e9c,df7bd72b,c2417f70,3e9a8245) | |
2768 | Z8(8cc68b69,1b5df9c0,7ec52e2c,be9fcfb4,0487a966,544e2721,d60e6350,d9e702e5) | |
2769 | Z8(2810195a,f44772e6,4ba3e319,65886955,65f60a50,931ce8aa,f0e3203b,4aaf57c4) | |
2770 | Z8(53d7640f,00c837e5,ebd48b0b,152f72c8,60f23f50,1dc89ab5,c59e6d2b,835325ac) | |
2771 | Z8(6c3574a6,21e0a710,71a3bbbf,65df6950,adb32892,96aad8b8,58ed44d8,3d831752) | |
2772 | Z8(cb009c94,5239d15f,afe6a040,d66188e4,cc9e94cc,82378f2d,221af444,9a1cba07) | |
2773 | Z8(63b114b3,9c14fcfe,bbb15fc8,e267962e,98f7ede8,75467d5a,25dd0683,0a209a9d) | |
2774 | Z8(179065e7,b41b22b5,b78d21fe,4aa56940,df23bf01,14095c69,018fc641,18f19c74) | |
2775 | Z8(3b4638c3,e7d228c6,db473866,42e60415,bf54e4a8,576fe7c9,bac4766b,b97524a0) | |
2776 | Z8(ac61bdd8,86f2fabb,9cbea239,e3b8d8e3,5694718e,45c68177,58624c7a,d8af97ae) | |
2777 | Z8(889f8b10,9ba06405,6c91f976,1beecdd6,4c164dc0,dde90fe8,e1ae90d1,6625d102) | |
2778 | Z8(3b7e5b67,cab6c4fc,6293935b,2e5791b9,65a59cab,d8a1f609,1ecd04b1,921f8f34) | |
2779 | Z8(4869421d,00a81b0d,e83ed8f8,bb1a6827,6cc9e68c,8d02d6e1,92955027,8f6f5a9b) | |
2780 | Z8(41cdfa82,c786c25e,7ffdd56a,098b15d3,28d998d8,1da2e26e,101f2a90,aba525e2) | |
2781 | Z8(31c6d58f,14b34442,6e5c5823,58d689f2,a933ecdc,24ad7b5e,effcb16c,2a92c843) | |
2782 | Z8(55dc3183,956479c9,57a50fee,21f901aa,898d1076,f2c32053,f844133a,d32bda78) | |
2783 | Z8(76c79def,f5278fe0,c4e3aef0,c21a2120,1e2fd619,c9f68260,33d2ad27,dd965965) | |
2784 | Z8(eb1c20f8,9752c22a,a4dd2654,bee4b389,ebbe216e,45cfa25f,994b0905,6c932ec7) | |
2785 | Z8(2eda9a3d,e557b1e4,69dd5710,29a842a2,31276a25,32279e0b,129ada49,c27925c6) | |
2786 | Z8(f882e2ac,e5963b3c,0c7bb52f,fc840a26,865e3ac5,9993fcd0,121cf72a,b545c72a) | |
2787 | Z8(c9222bee,a376dd9e,a0fe034b,c2fe582c,9755753c,561f4a6c,4f4bd8b6,666a0780) | |
2788 | Z8(ad564fea,2b16da9c,75bd3616,cde3d2e7,be440d4f,fae696ca,e4b29215,d7ca1adc) | |
2789 | Z8(5860bc10,a1e6f9bd,baf9db0f,b8113a91,7f4bd4cd,2460a9cf,51307642,28cf9aa0) | |
2790 | Z8(90882946,166aea6e,a774a6ee,c422d005,e693e87d,12575791,0659ebba,3e645e5e) | |
2791 | Z8(4670d859,6fcc2185,44147d35,c452479e,e68f6fdf,63f9b0e1,48d9d5cc,fdab80d0) | |
2792 | Z8(6beaf824,1c759f65,9324728d,bd8056ab,e7053715,e16a1d48,6e760d30,434ecbe0) | |
2793 | Z8(8f746c5c,225e12c4,d0edfafa,d724cd96,c57e0de1,ae2a6492,833a0cea,88e59eb3) | |
2794 | Z8(b712756d,4ac1c0f2,a3bc24ac,f6af9a66,936dfb00,6d541837,2e407e1f,c3534651) | |
2795 | Z8(1393e5e7,dfa1539d,0393bdb6,de0006a1,aff34003,6675f9da,c08fdb43,e301c24d) | |
2796 | Z8(7a13870e,633602af,8662bf72,c26f9ff0,680b686d,3b7aec87,b6dde0c7,9464eb9a) | |
2797 | Z8(462c8733,d25ac32e,91a1284e,2354ee28,731bea6d,483cb9f8,da4eb473,6a7b1cac) | |
2798 | Z8(82d13f94,c1fe05ef,2893f33a,bb8486db,5deaf7ad,f070c1a9,4413f45d,902d11e7) | |
2799 | Z8(9532a491,aaf89f15,099faa13,bedf794d,b522fcc0,82bb4aba,b53798ce,8e80a982) | |
2800 | Z8(a5a668e5,e90a72a8,0004ebcd,8b8b2388,afc7389b,1a98c25d,587fdd9e,80bc42d9) | |
2801 | Z8(0270d419,f8c0fc20,33b375d4,4ac13ea0,ad7ebf2f,35f7906e,7672e77b,ee9ca31a) | |
2802 | Z8(2e283baf,672839e6,fbc968db,09e877d3,a489c3fd,f4943a65,35d9a1f9,470483b6) | |
2803 | Z8(bbc195bf,ba8503a7,6e083bdd,6f932771,f12807da,8e725d40,c523987f,029b2813) | |
2804 | Z8(ad6c4971,51602236,1c020f10,81d998d0,97e95701,a1be0d65,03f91cb1,afa52910) | |
2805 | Z8(84b53b76,94f6155c,34b4ae18,5d2c49fb,b82fd80f,631b4715,0836dc31,dc098d28) | |
2806 | Z8(f8cdfa3c,1dda0686,04bb4b2f,1b4f5728,2d228630,c1db5f2c,10022d67,536ebeaf) | |
2807 | Z8(138fcb2b,cdda6bad,5a00cc71,35831b14,d05e8809,4a498ea2,1953bf6a,e1d6c078) | |
2808 | Z8(2848362b,d0d85a44,8b72a7be,6303cd97,6f659baf,9054a783,3e8fd85d,a1fdd8d5) | |
2809 | Z8(8f19e53b,2b5771bd,25816c1c,8c9f0733,04ce7c47,f6a28d81,08644ac8,b2b7caaf) | |
2810 | Z8(69adfa3f,142bd147,94e110d6,5c8402e6,a4979e63,c3ac6bc7,8882553e,20132a72) | |
2811 | Z8(01b3bd8f,f8d33c19,74d3b5ea,ce96677c,98992629,7acf99b9,cf839836,27d37e58) | |
2812 | Z8(cffb9f85,6c41d914,62caad36,f984d4e3,e7181b99,ca6b25c2,1e887aed,17d4f008) | |
2813 | Z8(7d69cf4e,6d020b38,980e5f34,0f318132,0eceddae,5cbff485,10f7a4bb,d8e74524) | |
2814 | Z8(a034ab8b,66372b87,b13e1af6,a9272703,40f2bec8,2ff33b8f,464eed37,69cdfb94) | |
2815 | Z8(b02d517c,10b5056f,0675aaff,18728cf6,30a39845,0609c0ef,6a51975a,fcc66520) | |
2816 | Z8(2ddd24d7,21149bf3,8bf918bc,c7409172,e3bf8191,41581d5f,a5a3cf40,7383c87d) | |
2817 | Z8(f489bf36,eee6a84e,89b42956,97fecc91,5e647bd6,548416ea,6e856bb6,0d4ab22b) | |
2818 | Z8(eabd03cf,e95a3ca2,6f9ee838,40587d47,ba0880ce,13545583,8b061311,e583a16c) | |
2819 | Z8(ea8b6c80,b4a4af9e,6a12ca0c,d7bfd0cb,477219d0,309731b3,fd996df5,469f56d8) | |
2820 | Z8(b7989352,f14af0d9,43a6d57b,31a07275,5b1ec477,c51738a3,b9ec3a2d,0ed9afad) | |
2821 | Z8(52067ee8,7af5d8c3,4dabc9e8,5de2fc47,58eb4e3e,f2f981e7,ba2264ef,0cda7569) | |
2822 | Z8(ae379af3,8f843de6,ff82c489,c02d7dad,37333f59,c1970215,ba9e85e1,737c3a8f) | |
2823 | Z8(e02b6307,7d1b7267,17c85bef,cb0b1597,6ae6a5c4,3caebf55,bfb91bc0,fd61893e) | |
2824 | Z8(b4a5c93e,477f0e59,e6c4f9c3,0719a761,418570a3,3d9c5b49,ca2a0510,2ea8f417) | |
2825 | Z8(e50c3277,5edb832f,25a5af9f,1d9ff844,9d48c097,2c6ffe2f,42f85b3c,38ecd4be) | |
2826 | Z8(b584b53b,bc64c7c8,2e3bf4f6,f314fb16,fd6f5022,e9e5957b,6e8e2a43,8621b128) | |
2827 | Z8(eafc328f,90f315e3,26cefb4f,205c906e,c6fb0149,c5fc8835,cbf26056,76f7088a) | |
2828 | Z8(ce86a30d,df4d01d9,5ef83340,a234ed14,6cd007e4,db9f19c0,b88936b5,b0d8667f) | |
2829 | Z8(20d7649f,345f8a4c,42375964,3fa085e7,08c776e0,c6537f67,d0913c0b,72522a71) | |
2830 | Z8(9eb8e439,ef6e478c,ad0d7eb9,d3104591,e9b3c850,155ebd2a,4c68bd5a,42dbf996) | |
2831 | Z8(978a8194,5590d2b4,59ec0a43,2d537b68,cb0da98f,32a22fd3,9f64c8a8,81b79da9) | |
2832 | Z8(0be07223,5942778d,216885f9,c42d7b98,9e1d3a21,f21af731,b03d0f27,40113a3a) | |
2833 | Z8(4c4e779e,17f0b8e9,ea2d34f1,8528389e,01226a1b,2369dea3,7bd13de5,1aab9ef5) | |
2834 | Z8(b6db7a5f,12adabc4,20c100f6,b23b5479,d20dfc56,a54e2efa,acf4b400,7590ca94) | |
2835 | Z8(95c70166,faa5fc85,98f188bb,be0e841b,0b8a43ec,dd14a7cd,bb12c425,6f498dbc) | |
2836 | Z8(6f71b9d1,d78ebe45,f3cec11d,cb944558,e06d8ecd,baf7aa8a,45998ab6,b2c0c21c) | |
2837 | Z8(60456dae,a94425f1,84f22667,861e8c8c,310b6873,af154022,0498e2d5,ac5f69af) | |
2838 | Z8(a6e11801,4d3c874c,1799b81b,f5a2753f,229774ce,916bce87,b1f6d7f7,d827c7cc) | |
2839 | Z8(0fb4d504,87c40cfb,8bc0abf6,2ce2e730,41b95f5b,5e9d6cc3,369d1ebd,e62f304d) | |
2840 | Z8(34e29a9d,d9aa67b1,5b8e0413,cc357a12,6fcd9db5,78cb9152,0cabe806,e215d180) | |
2841 | Z8(9a584347,d07f4124,b7df0fbf,cfafe4a7,233b4ec2,2128595a,6f9359df,8acd2de3) | |
2842 | Z8(07c13726,9cafd990,a5cfdbdb,c30af077,3e659f52,ad7f916b,c0639407,a14c8dc4) | |
2843 | Z8(d07c1ee8,c51cc17c,f838f626,e230c892,6f36a101,0ef480f6,dbe7d200,9f7511f9) | |
2844 | Z8(9e27bdda,4de36e50,cd10874b,7c3513fb,43fc16a3,1fa5bb66,9dc0229a,a8752870) | |
2845 | Z8(0eda163a,4350ad27,7d97cbf8,e9054a61,32dd2691,9ab36339,934a8284,a15033c3) | |
2846 | Z8(c910fabb,c4a49feb,943b73bd,ded03c09,f791da2d,bf58cc91,d2f6adf1,6edcf906) | |
2847 | Z8(d0a53aee,64f5c0cc,179f3a41,47a0a83f,26d0d4d5,ba9aa43e,e9026030,c4f1c5f7) | |
2848 | Z8(4113a267,a78a6df4,79d27ed3,4a305463,1e81ae4b,0fa5e9b5,ae2ff41f,5716f76e) | |
2849 | Z8(c1339300,1b38deb4,9a163219,cf142472,a405275a,42cf2341,26fc00ec,e7a45556) | |
2850 | Z8(dc586052,3e08d81a,da67f64c,1316953b,6c5752e0,a50d01c6,bdacff22,7d33b304) | |
2851 | Z8(f4bf5a54,ffb3cd77,6435d18d,e0217ebb,5d13f71a,fe4e4b38,738b8478,fe7b2d0d) | |
2852 | Z8(8cd54ff4,38676d0f,48e7b575,05e93340,e38d9461,19abfa01,466c7d1a,0a17c381) | |
2853 | Z8(3709b945,2516136d,af95757c,2a5f911b,154ce075,a345a8c2,5dfba3b1,40de02a1) | |
2854 | Z8(1483192f,e63d2eaa,b9545425,a44f45f1,d3c3ef87,42509bf0,53c96eb8,b067d886) | |
2855 | Z8(b38f3e0e,9b0963ae,4b917df9,aea8ee8a,03a9f5d0,b7691cdc,81acfc27,4f8a5538) | |
2856 | Z8(2cef965c,0d14581c,99957582,d616ae87,b3b9db94,c65c9598,aca524a9,9c8c94d6) | |
2857 | Z8(0452a048,f785614e,7a4256f2,de07defd,6da2f656,0278f4fd,730280a5,e1cdfa52) | |
2858 | Z8(cffb2cad,325948bb,26d70c1d,d43de355,9a775b00,5caa2dba,62f002f3,5a9622a0) | |
2859 | Z8(9eef0692,14009f04,48e65abd,4f3755ba,fa949af3,d0f8c346,8b7ac9f1,9019f4f5) | |
2860 | Z8(84bd7d37,146c6260,e931e139,97cae39e,c4e8b543,20c61d6e,ebb6bc96,bdaf93a8) | |
2861 | Z8(ff28e4d9,05fbc893,8ce5e846,44cd1b3e,105d5836,0b9b2aec,af106256,473e1010) | |
2862 | Z8(b66708fd,5fdb92d8,0dc8d6fe,ddcc673b,7643d6c8,6581fdc9,da88105b,da4d15a2) | |
2863 | Z8(a7a46eef,284a352f,a4f59891,6168cb15,2c99de69,2c18c870,566043c4,f36b3d16) | |
2864 | Z8(d01e098d,4756eb39,90cf3016,87050ae4,f9e09d05,b47fa79f,b10eca95,690de2cf) | |
2865 | Z8(37b60998,437be0c0,8d96482e,d4b9f3a8,8f11746d,8567842d,75840827,d8d47e5d) | |
2866 | Z8(e75ceb2d,96080452,5ba1cc3f,a28cde8a,3568d779,f242dc61,f45cfb6c,2a02647f) | |
2867 | Z8(1acbe823,62da8daa,0dba279d,365836e9,2bd8def6,662846bf,cb89d477,615bb08b) | |
2868 | Z8(abbe7553,d9a01605,7d31b512,13a3e19a,44d94ee4,e0469c1b,f8d3dd59,5412a33d) | |
2869 | Z8(2d495611,f6a2128b,c0705971,7f80fcce,37b6e778,82e1233c,82032647,1252f5c3) | |
2870 | Z8(e255580c,e8d24efe,e4f89aee,2fd21908,fc943425,35faf731,92696aa4,6f7d797c) | |
2871 | Z8(6b415169,989675a5,781ea549,c6f1bdc5,2dba2228,7cce1a1e,08c73fa0,f9e1b338) | |
2872 | Z8(cfa54d09,54569c2e,acbe97b5,16ca315c,c587a86a,b090e999,c3f2b082,b1ac5fa1) | |
2873 | Z8(3fe0e335,19ec389d,3e497bdd,4ed08c11,4b2e09d2,0d4bbb08,60bceb52,10e2abb2) | |
2874 | Z8(09878159,885869bc,2937ae37,e5b72e2e,3bdeef8b,4d2f33b4,8959a2c2,125670db) | |
2875 | Z8(ad59b4ed,fd99813a,6f254236,bfa3e6c1,930f18b2,fb6a2a98,f35a15b1,f5bfbe95) | |
2876 | Z8(f3378b80,35fd05a9,d66f8405,49a220d5,de7146ae,f91a74dc,424fe2fd,687d82be) | |
2877 | Z8(ab696d48,7a48ac54,1c90f7e8,46724491,f1a78984,ef948a3c,4276d942,2af28661) | |
2878 | Z8(99f414e2,e83df521,18783932,e934078e,2c07f089,af0a1b37,a01b17e3,87ec24dd) | |
2879 | Z8(0f50edcb,57831ddd,f5f42367,31447178,5f17bff3,e29546d5,77ed7e32,92eabe89) | |
2880 | Z8(cd87896d,73b24753,b89b9c24,4d00e74e,4f00c74b,7eec7007,b88ea2af,0faa8cd3) | |
2881 | Z8(e8bc8bd5,bcac60ad,dd95915e,e4c91686,9cb3aa84,a27dc1d4,42d89afc,4a4f251b) | |
2882 | Z8(750f5bc0,7c053d55,e9b5eb61,cb33b992,7e416ef6,0c4a3480,e258807e,82e680c1) | |
2883 | Z8(914b19df,c8dff8ec,53c01b89,7e58508f,eab1046e,091f1651,1b501a09,075bf74e) | |
2884 | Z8(dcdb2d43,cfbfed23,7f0c222c,b14a5792,60de8a25,1e87141d,70d1f0e0,2f0ee0e1) | |
2885 | Z8(ac0ea292,d730302e,397c4d8f,81b4f9c5,bf482bd7,5b83e11e,7adb95c7,484bdd94) | |
2886 | Z8(a9de16e3,38d9c127,922d9d22,ea03a07f,cb7306bc,19cf31e0,94b3f82f,ca870d45) | |
2887 | Z8(229b5ddc,30380b61,75be285a,26c01b90,7f3cb2ae,de1d1167,1fa7e858,a556743c) | |
2888 | Z8(8ed8bc1c,1e11a374,2e646929,9dd6f5c6,22cf000b,08cbf907,e5e7973e,62a39ad6) | |
2889 | Z8(355d51e3,df5dbe13,4661edc4,aceb0a39,2ac558d2,72ee4b8f,7c3343fd,4e6ad7df) | |
2890 | Z8(a02aa01f,3bcbd8be,eb75c113,2a42a009,73c16279,1ec8a187,fbcca458,bdb75556) | |
2891 | Z8(ca883405,fb86cd77,2aacaa5a,e051242b,73093588,6e3d9374,7c852f84,a0e1a0a8) | |
2892 | Z8(24b83823,9903ea68,466822bf,c7c6db30,eebc0309,78d23a4f,39ad5e4b,20e43a8d) | |
2893 | Z8(a94d0de1,744ef929,cbd4f9d2,36dfa120,e6845137,f3b96f32,53f9cfa0,906217ff) | |
2894 | Z8(54e49c38,40920db1,ba83c45f,0bd48d9e,d9ba4696,4c092e0e,77a86b6a,54baffef) | |
2895 | Z8(693326a3,44badce6,f0dd3580,824c9b2a,34fc86da,dacd36b5,c498f408,2dc4f65c) | |
2896 | Z8(b435327e,c4c1a0ec,1c21cf94,d85f8ba3,63d8196e,f1cf3f9b,ba51bc80,ddc72a04) | |
2897 | Z8(34f5f9d1,cf2a0a43,0a1fb245,aa74f617,6bb9fddc,9445109c,3716c973,05abfe95) | |
2898 | Z8(ed89adea,061d5e8d,57ad2c44,5a9decef,9bd441e3,60751740,b5060f5d,1e15681a) | |
2899 | Z8(a059c9f9,457835a0,92cad68e,f84f07f6,6df5bf56,6397cac7,f6601a34,bda850e1) | |
2900 | Z8(a9bdec25,4ab05b3d,ba1842e4,f98d1768,4d5c268c,48d0144f,6742ee4f,33d79fc8) | |
2901 | Z8(aa2b095d,a4076872,0adcd0a7,db86e59e,ee004b5f,477b988e,29ea8d34,5b6ef3fb) | |
2902 | Z8(185ef97f,35aaaf4d,630c486f,110812f4,13f8429a,e772e350,d60ee5b2,bb7e799c) | |
2903 | Z8(b035bf38,ba515f92,49cbe723,b8992c13,9f29e360,9bbcbea3,06915971,1deced7c) | |
2904 | Z8(48d059d2,3d6bc29b,4a32e9f6,2aaf66d3,66a6b104,23aae730,80afd8af,07c27974) | |
2905 | Z8(525330f5,0bff6c82,240c4baa,a9a65e25,f5b74b38,93261398,361241db,25e3a52c) | |
2906 | Z8(dd8021dd,cf10862e,03f1d701,80f76ff0,1e7af9fb,9486eaca,87bfa96a,2b761068) | |
2907 | Z8(d1fbb33a,9f1a266b,d0cbcf01,f4ed09bf,f753265e,eb3a87c5,7b25f161,678e824c) | |
2908 | Z8(6fcabe86,43dd87c6,a4466651,d9f4c24d,5264fd97,934df9e3,7a6023ae,db7afc26) | |
2909 | Z8(bb5a8917,8884d576,ca1d58ea,97c20e9f,20588246,1802c32f,44955891,d2a34b70) | |
2910 | Z8(ab7db9e6,7da88f32,f072b430,322a172b,fc0c83a9,a01ac0b6,13923e0a,6d19e59a) | |
2911 | Z8(58c076e7,f1b85686,d3cdb8d2,52c605d2,ba4e5b62,0459e7f4,3f510e4b,f14966c4) | |
2912 | Z8(67c0f1f7,f74fbba4,2addbf6a,c6f9d363,a78178f1,f7884fe9,4cffeec6,b34beda8) | |
2913 | Z8(f8152ca3,4fb495e0,5073acc4,4da07cca,42244ac7,2a3dab0b,8caf5bb9,b58fc47e) | |
2914 | Z8(d4e05a7c,525dcab8,c39ecf52,7ee62df1,2cc450fc,6b96d199,296d0d5e,15da5f99) | |
2915 | Z8(4aeded74,2f114b43,a7447a3c,55423d67,c6ee9cc3,6d11e432,758b95b8,07e7207a) | |
2916 | Z8(7aa6c92c,1094dead,b7ae6dfd,315438e4,d9a05df3,fab12361,42769719,c639d7b0) | |
2917 | Z8(fb2a694a,73ba67a4,05995d97,3c7a3482,a96e677c,f76e7efd,4525e94a,09162caa) | |
2918 | Z8(8aef8eb6,5d41e584,17a98a60,99d20154,87b23bf3,9f6ae612,c25f07d8,942edf43) | |
2919 | Z8(f419f690,fb7ccc9e,58b544ff,b9ffa6cb,33c7a4ec,5e05a794,9e1e9e0b,29db1de5) | |
2920 | Z8(737ba69c,f7dbc12f,71f49660,a10aa47b,ca44aa8b,6be20256,e607c389,24dd7618) | |
2921 | Z8(09cdcef0,1e5c0cfa,00cc0bdf,7a5d0ccc,df5e265e,27e318f7,480672c9,14c0d43f) | |
2922 | Z8(46d6485b,e9651f59,0f56b5ea,4bec5c8b,34a0c919,ee64627b,48b7ce61,300c0372) | |
2923 | Z8(7cb825e0,7132214c,272fc944,01325ada,9aa885d1,dbad6346,a8a78851,85eda194) | |
2924 | Z8(363c028b,651508d2,ea272261,d1d73a2e,904f6bf9,237edceb,595539e6,6de06a97) | |
2925 | Z8(27013885,efd83dee,15862e2d,fc140408,f53f7132,5fd44606,0a6b44bc,2676266d) | |
2926 | Z8(7e30a926,5622b2e6,d5c47413,8ae3afea,d10e8c9e,c0220924,eaf83cd3,5c19bb65) | |
2927 | Z8(8b6735fb,c2d8023e,71d96cc7,a6bddee9,b765f740,72a94311,19276865,dbcf8ece) | |
2928 | Z8(21d2b57e,d4fb23db,8d617a05,4c71285d,ef5a375c,fd781091,49513ff9,0f8a46ab) | |
2929 | Z8(334a700e,ffad98f9,1dd30c06,291af134,24968172,65c19a22,15917ee9,b177804f) | |
2930 | Z8(c6366e60,8948f982,044fe69a,89629cbf,ffb1fd20,cba4e4ce,5af3eca6,b8cca47e) | |
2931 | Z8(0724156f,464bbd51,b6ce5232,c91d86e0,1cb5466f,4098c6f5,916f4c79,4e50f2ef) | |
2932 | Z8(a4eab401,e4995642,a5e3bbb3,7142e289,0937d41f,9902bc48,69070d26,f9375938) | |
2933 | Z8(18006dbe,376701e4,06cc6eb9,15271a0a,01102b39,750648b0,f6502cb4,fa115e8f) | |
2934 | Z8(d4e51945,a0d1bd85,27c578c8,c2e061f6,41095b6f,1a11a4d7,4b10b41c,9bd0b931) | |
2935 | Z8(a7792989,80bbd59e,905abc00,328bf05a,908638c1,96c1b21d,87622f2a,72919e2a) | |
2936 | Z8(726e6729,62755a9f,2e9493d7,ad1eda99,1dde7ebc,adbbe7f6,78b43650,cf9a5762) | |
2937 | Z8(10ee9fed,cb0f0e2e,b81de811,9031e2c4,6b1fd8bb,e7baaee8,4c9ac0a1,14c8cd01) | |
2938 | Z8(0b796f15,2728dd93,6fe903fa,9704889d,68f8bba6,f5dcb53b,a3a0d75b,5f8935fd) | |
2939 | Z8(3227648b,76007e6f,a9762390,58112c51,5048e983,fce91fb1,09f7ea9d,37c5a7d3) | |
2940 | Z8(7bc60151,ba6d4fd2,14949515,bae4ff3f,3bf647f2,6ed68340,de3ee596,a6c848ed) | |
2941 | Z8(675baf0c,a0cfff42,db361c4e,e445aede,1c477a67,cd9e99b6,287eb31e,42f4342d) | |
2942 | Z8(c396313b,49de1bfb,eb07cd45,0d9aa71c,ed748d45,2bf282a6,557b6c99,29067b2b) | |
2943 | Z8(b1a879a1,0792cb6d,024c27c8,62450b0c,2c9ad95b,cc610c47,743e5013,8944ca99) | |
2944 | Z8(0cf3fdc4,d3d94a80,52620093,ee8f7418,e1487d39,53da2aeb,4fcd50b9,ad31ce7a) | |
2945 | Z8(cd11dba2,121b94fc,4198babe,165e569a,84347ac6,5bbf2daf,9d55db6a,eb04c60d) | |
2946 | Z8(65617b8f,23ad4834,8b480a94,6f2e5e4c,7772b3e5,56d02df9,70fb084b,e1f105cc) | |
2947 | Z8(189228d5,7f243fd8,ed823b6f,c32a6acd,ff5d47f0,888cd649,715b993e,b99d2d20) | |
2948 | Z8(c9b9fe61,80e725d1,147e9688,0eba4488,f77638d7,d167994d,c30d2707,edd25224) | |
2949 | Z8(2e451dac,f8f63e3e,138c1970,ff4bc9e7,8e9b436b,0b2fa503,6d2b7068,0e30a696) | |
2950 | Z8(3bbc1d39,32b7a73c,0c49178b,fc604aba,f936f647,43e9892e,194040f3,2ca4b348) | |
2951 | Z8(a76c9708,1a5d6263,30c55c60,d8e15157,86a9777f,9f4f62a3,2f3f61e6,bf895e71) | |
2952 | Z8(833f9b60,6a4c5122,a99ba136,fa7b4f4f,9af9d763,774ea8af,f3ab249c,ad7e6fc3) | |
2953 | Z8(c7b9423c,06777b37,aa6e2d68,575a34af,6cb4b435,cbd7b74f,252dabd4,8583e3b6) | |
2954 | Z8(f8dc7888,4720bb7c,851ed91c,1b4f22fd,37df42e1,dcb59519,99e40152,e9a3a985) | |
2955 | Z8(382e98d4,8b585186,4495e0bc,5b9f3ddf,844a7e41,77c697e7,f2c00072,ec4ef5b9) | |
2956 | Z8(251c04ef,60dec5d9,317aba73,06d70099,f82eb4ca,648f47db,ce5b0420,4f0477c1) | |
2957 | Z8(75759116,8dc761a2,bbe588da,36d40002,a9c5fd5c,1d07aa6c,61fbdfe1,01cd69e1) | |
2958 | Z8(bf171234,267e234c,9f485354,096e67c5,93f6c08c,fb8aa06b,e5a1efe9,beeaaa85) | |
2959 | Z8(d8c4439e,10162c63,b75090a4,8959ab8e,ecc05889,e2a627be,f1c30e3b,2010944f) | |
2960 | Z8(cde24be5,bbbc39ec,a8b66a5d,4bde9075,31a6de38,ab0a0047,ac1f5521,23a8cfbe) | |
2961 | Z8(da63d849,c03b20e3,2056a027,9094272f,d1f5452a,8a44e200,3968f1fb,c250dd8c) | |
2962 | Z8(cfb092e9,4d2e3752,621a5083,967943b8,c9166e5c,049debdd,bc42645a,bd28c1ca) | |
2963 | Z8(e13286f9,68a34c8c,039e1fc5,ea10f141,70c13b02,4e035f29,4c6d3884,38360d8c) | |
2964 | Z8(d7c95ab4,55a06cf9,6d7f1602,49041446,c31655ac,807d4a0e,bbda9053,75684de9) | |
2965 | Z8(69c049d3,bd3b60e9,b51f3ea1,fe2ddb75,b85160c7,e163280f,d4841926,fa9a927d) | |
2966 | Z8(203b7032,469571c4,c2c11011,b56d7809,48685190,4397092a,398ed421,1ca42a0b) | |
2967 | Z8(df0fd894,92b2f87f,d6810ff3,c05a3e45,296dbbef,ff9c882f,0759bc5a,53efec0e) | |
2968 | Z8(0d6a325a,8437e866,cebdec3b,58cce9d4,10124f53,bafd822c,552ceff4,0f1213af) | |
2969 | Z8(6c8d9999,dd265f25,9e2b2982,4bb9fc41,7fe90463,1c78252b,e00b3527,d548bbda) | |
2970 | Z8(8b81d54a,3c887a47,af908992,c086d09e,211c4a0f,eb5efba3,8c5af565,a5552cfe) | |
2971 | Z8(2b161fab,888b4848,0fa72ede,c979c54e,cecb3e59,85d70e05,f28c47b4,5e1c21b9) | |
2972 | Z8(542d3414,9fbe5ecd,5e079884,889df948,f11f755b,1e7833c4,345310f1,48cd0adc) | |
2973 | Z8(4d0ec4ae,44008fff,15e6cfaa,910eb993,2b6d0460,aadab932,161b8291,dc7b6e51) | |
2974 | Z8(ad03388d,bddc5451,968317bd,de0735f5,5a375fc3,6de81896,e0c0c2af,262604e8) | |
2975 | Z8(32462c0e,1e9be548,9c48feab,8049886e,cc62f502,ea7ce1ba,ab3c9b1e,95f7c3b0) | |
2976 | Z8(01df36fc,94006423,ebe78c69,958ed2a9,611493b8,41cb1c45,d55f5dbe,61cf98e8) | |
2977 | Z8(8cf8f734,773c72a0,5a509320,fa5f5111,e036261c,75e43ec8,ff867e87,3e1a26e6) | |
2978 | Z8(9df31413,845df54f,d7b70f13,b51447f9,db5f734d,ac2d7320,fa51842f,537c57fb) | |
2979 | Z8(91e63af9,5bae7f8c,993d53d4,8c9a7498,51968628,55947c60,7bd51988,ccc85020) | |
2980 | Z8(f6b36da6,41c65d4c,c7366e25,6003359d,d2ed36b6,97594296,550ba77b,d2e15f8a) | |
2981 | Z8(d0857af8,01478ea1,5819585a,0b8c5538,c37088e7,dfaf7862,bb06b24d,5e511288) | |
2982 | Z8(40f88b7a,71738bb9,997d8eaa,c892ea71,b5fd7ba6,5f6ecd27,9d238df2,8d2d75ae) | |
2983 | Z8(8b6f72ba,a032c912,a40c42de,ce246737,667bc6da,d094d6eb,10012cfe,4c448b73) | |
2984 | Z8(e9df77d0,e0a7b50c,0b22dc16,4f88d34a,fc2a54a8,b5e5db35,d4acf6c5,b2e01473) | |
2985 | Z8(945945a7,43731ffd,22ea5f09,4499c099,77d1d022,a73f3f92,14ae6232,a6e33e9f) | |
2986 | Z8(93bb3e11,f1a242d0,da9f1f2b,a5ffd7e1,4eb3260c,2cc9e42a,3485911d,f53e9551) | |
2987 | Z8(b4380195,f15b9cf6,d83932bd,9def7d69,9ae75b42,a70b8815,6aa89d87,a35200d1) | |
2988 | Z8(661e9b5e,fe8b9a19,fc2970ef,88b73070,b5467b24,97a45dd0,23154d6b,98208564) | |
2989 | Z8(9d0fdea0,39fc1345,2fb0ecc4,937e9ebe,7ebcf61c,968b3d85,33447464,8a47fcbf) | |
2990 | Z8(7031ff9e,56eeaf2f,3633ddbb,cf764b36,82c3f6b3,9b2ff617,6639b97a,a2b25b0b) | |
2991 | Z8(b88b7bca,1276768d,82efa174,ce2a61cf,d1bb8621,84652722,1b9d0860,cc2bc145) | |
2992 | Z8(0c58d361,d4b72631,49e5b1cf,804a36aa,e9c2bbfe,1c810ab8,9965d370,05681489) | |
2993 | Z8(4ebf9b9e,8c1e0227,b7c00a32,f10f0c8c,c7335625,097de10a,212b15ec,3763dd66) | |
2994 | Z8(d7c07019,5dcefef1,13705b04,874b5ee2,03ab412c,5aceb1db,7f1adc9f,944da243) | |
2995 | Z8(a5400d1e,1dbeb865,68cdbb61,a27cf32f,9ae0e69c,4dd47cf2,fcac3f5b,c01c9f5a) | |
2996 | Z8(066a46bf,138d5a87,295b8947,b63505aa,ad9c7acd,8b472dc0,8b821ab5,b0918a3a) | |
2997 | Z8(778729ae,800098aa,52c72cdd,e2f1414a,98013ac9,de471951,b486f0c9,c1a2c4b8) | |
2998 | Z8(468433f3,be17ca5c,f8bd3b3a,9e415dd0,7efa1e64,ccbe58ca,498c35c4,3aeab7d6) | |
2999 | Z8(fa8c445c,ee0bed67,702b4dcc,dd039c81,5f3efe2e,2910812a,26086f92,716739d2) | |
3000 | Z8(00120581,4d26d32b,702d669f,2f1f5874,bb9d4d58,0e2ed156,93ecd048,3bfef344) | |
3001 | Z8(677538e9,69067e2e,23824d52,482988a5,be44aa96,9ae01881,20a3328d,bca60947) | |
3002 | Z8(a06ed10f,a0542fda,744ea04e,12f55098,a100e9db,12ba2c17,5de54595,65dc1168) | |
3003 | Z8(55cb5147,11baa11f,347f7b66,b399ca41,e5ae7aa9,85883bca,4270b97b,9d4584b3) | |
3004 | Z8(ae81d895,8656767a,67cc16b6,b78d7691,305940c3,a252b102,07004373,bef79803) | |
3005 | Z8(e40060a0,a3bc6755,63cfbda3,658b7045,cfc74367,07e19dd6,265b33a0,c0a13446) | |
3006 | Z8(439e7807,edd01bb9,0092824d,1e7a168b,d25500cb,6704a627,26b8bb81,115a44d2) | |
3007 | Z8(03e2d33d,fa66d1da,82b2aa21,c8715df6,e03b3a3d,5911c66d,4e44157e,9b682586) | |
3008 | Z8(91cf3f89,15160c7b,99ff6278,3bc08322,8d85fbb2,96862baf,3ae77c97,61296af7) | |
3009 | Z8(99893f23,28c8a32e,69781781,3bd98d33,3d9780aa,3270a3f3,a5953897,c5e05951) | |
3010 | Z8(04b82965,edbb719f,203a293b,daa5347e,8d069a90,7518bf57,6f65242d,b16aa64b) | |
3011 | Z8(858fb4e9,a2b618d4,9f266a7b,b5091681,8d0e1f43,0412c78d,69a9e192,8b121fdd) | |
3012 | Z8(fa9fbfea,5419cb00,6513f467,d93324f4,6b4405be,07f30169,94b8652d,b5188cd7) | |
3013 | Z8(a09de94c,3324391d,2d06238c,94f71ca2,35bfc43d,631dfcd1,a53c731e,8945a316) | |
3014 | Z8(99321a65,858dd82a,0d256148,2a00c6b9,ca0b54b8,9ff4df96,4dc4d900,cf7d56d8) | |
3015 | Z8(b09c6090,d591a67e,54fbd6ce,decedaa3,be7ddfb3,2e4b0c5e,2db4e4dc,3fb92934) | |
3016 | Z8(91bd8729,31c83aa0,48d8487a,843efdbd,4ebf02ea,acfd0ec6,c682aa80,d3be8d8c) | |
3017 | Z8(6c7424db,8ff53cd6,f2c0a968,a7457b99,a6e27773,e8fabdfc,4858bb58,568d0b6b) | |
3018 | Z8(010637c2,2147646b,27cb06dc,93274a07,1195ec2f,c53ebab8,f9fdf1da,925bbd83) | |
3019 | Z8(2e8666ad,f3c17291,3ea5b62a,53f10a42,903f6cf3,a35f09a5,a7fb07c8,b554ce99) | |
3020 | Z8(c8e28fd4,2a6a0f69,656c0043,a76e05a5,2bedd1ca,bfe45d71,0953224a,aa96b19b) | |
3021 | Z8(202f3871,e7e85874,65526f61,30917e7e,05ec8e50,aaa16998,c62d838c,0ba7d782) | |
3022 | Z8(efe8700a,3158ba53,b699418a,0c5b7381,6ba5bfec,edbe0e10,faf985ee,ec3f0d72) | |
3023 | Z8(d28c908a,a2bff952,4e8f1373,1af929cc,c9d8510a,0945189b,e2a7a514,9d778cc1) | |
3024 | Z8(bfbdb80f,732edac5,fca71999,e86ac4b6,64cf7d59,5984f97b,ae2e3895,eaedf354) | |
3025 | Z8(29dad521,0dc97c46,b317c326,41dc0852,9be45d5f,dd83573e,3b104b55,37a0fc6d) | |
3026 | Z8(55831bc1,0acfd370,db738bea,d18c20e0,f6b102d0,da47e16a,a079c8d8,2bb41fc0) | |
3027 | Z8(4e840101,688292f5,54772134,821ca958,6c436a00,96b5ab73,9e9d116a,9598a615) | |
3028 | Z8(70bc7239,c5792e88,801d8d31,eaa3ae10,23636603,b15e037d,bdf5363a,591ce745) | |
3029 | Z8(720a040b,93b88f0f,7519c557,55088be2,cf38669e,8a2a9188,f8ed0d2c,fd16ea94) | |
3030 | Z8(b0fed025,c671a2e8,975be84e,1f9f13c3,3fb4c1f6,95f0da7b,e3cb19a1,52669e67) | |
3031 | Z8(388b2789,ad398128,d6097a8a,20b44b00,6a3d3744,0703f1e2,fc06815a,00a8ef45) | |
3032 | Z8(26d07950,f902a73c,634c83f8,45fb9d35,d6d65e6c,cb284d2a,f101fcf6,6f8678f6) | |
3033 | Z8(035de03c,2ee2ef8a,2ef6ada1,ad576c77,f5d57c4e,4286700a,1e783014,915298db) | |
3034 | Z8(5350b4dd,56680c69,4117f412,9bfa3a21,370f1333,f7bd3e4a,3c7cfcfe,cf4e4776) | |
3035 | Z8(3e88fa73,ead0a1d9,80cf17fa,46d33348,20537c5d,29eb43a1,86402160,97eb3280) | |
3036 | Z8(65185173,e89d8e6d,097ba7be,caf9bf04,256e7be0,1ac6ce9d,57cbb50b,d20e906b) | |
3037 | Z8(f34567da,996f8985,afc39694,5e178392,ea8c8e98,b42a24f7,d9207c3c,278c4203) | |
3038 | Z8(bcc509b0,7979d7b9,98903df3,966fe843,be47686f,48885dde,34e2f50c,94e764dc) | |
3039 | Z8(62799046,808f5ba7,f54cfab5,76cd573c,b00d72d1,8bc7693f,2215400a,60921620) | |
3040 | Z8(804650ff,83d8ccde,c21e262e,3eb9f382,031deada,f29f8cb5,1266dabf,cd75779a) | |
3041 | Z8(b025d6b8,ad6535b9,c7460dff,69495b3b,74721dcf,1cc75cdf,a0dee2b5,71a91bba) | |
3042 | Z8(da3850f2,e5485810,420d40e3,426e8113,a5d8ecc6,f6128e97,3b151682,10e56d03) | |
3043 | Z8(d125f315,7e494f47,42dae8de,cb569ac2,7af1fd1b,aa2f3802,7ba49a47,3d0ae619) | |
3044 | Z8(578357c3,ddf6ce8a,476e586f,ee81aeb6,af4c7514,381e5eca,1faebc83,cafd2d5a) | |
3045 | Z8(c9fb1ac7,2124e8e0,c1b93461,565a3f56,9b9da690,1652a3b2,0e334f34,ebd13bab) | |
3046 | Z8(185c3b85,609ba7ea,1e2c03a9,efdf72dc,0a3a4e1f,221b47fc,ee93c90d,5dcb2828) | |
3047 | Z8(8f263ae7,800f49b1,24b68f54,b561095f,689f36c2,b346dde2,65f23582,6c73d698) | |
3048 | Z8(0bfdb869,9c41a7ad,e08dd903,7e3f225d,9bf1d7c3,c044844a,a13d30cf,a8896734) | |
3049 | Z8(2019ffc0,ae041a80,274cb80b,a67022dc,d5b736ef,7ff16054,53220ebe,60f9e42f) | |
3050 | Z8(b3d76a43,a52c0b75,1edb7d9d,b0ea7cb8,38efb3dc,4997787f,263bb8e3,4efe568f) | |
3051 | Z8(816c95bf,c938ed77,8fd9941c,76ce6764,28d985eb,9a204a42,5c81b7c1,720634a3) | |
3052 | Z8(7dc7d8ff,15e43ff3,9dfe33c4,bee88ad4,21bd89fc,732809f3,1fe9e44d,0fefbf47) | |
3053 | Z8(5db17d5f,97aa8786,6378f78c,a8414a92,e00724ef,50f42edb,2eca3790,fdddc733) | |
3054 | Z8(b0de9b32,4b5a5f99,157b9801,dd561043,824c9338,95db7fe2,b6921d48,5cf614b8) | |
3055 | Z8(06ff74b8,148c0692,cf6717c3,1af65de3,345a6b37,fc930a17,bc457086,dc8f36ce) | |
3056 | Z8(16b8c180,dcf82f52,975ac1ef,73d1da2f,c9565067,275e1cb0,2ba9ceaf,27b01824) | |
3057 | Z8(41a23b21,071fbd9d,7386560f,5d5647fd,b66ad4a5,c97a49ac,f1250324,29381c69) | |
3058 | Z8(2b2dfd47,619375dd,06536830,c8a61536,971bbda7,b7282831,f0cb06e4,025e4f5b) | |
3059 | Z8(d765dcb3,69e659a1,8ca62afa,e8a469ca,cb740615,9bb5527a,cb9f4bab,b91f299d) | |
3060 | Z8(02212fae,0bf4ee53,96ac9bfe,c6b5c455,d5525c4b,6e997d67,9f023fca,b36f8dd1) | |
3061 | Z8(2a2c3cd9,de904a40,eb36f95a,aedeca8a,1b528309,442fa9b5,948c78c8,275bb57d) | |
3062 | Z8(2bdd88e0,853eff7c,762ea3f6,ebccb9d4,5a685d2b,d17638d8,ffb3317c,09a67004) | |
3063 | Z8(97423234,f0b73b71,0143c41e,2f87ce69,39447a09,c9241a67,aa9c469b,41ecc7c0) | |
3064 | Z8(df22572e,5c55d7af,77676ea1,826feff0,2de4c405,3652c90c,f3e404c4,e20fe838) | |
3065 | Z8(de57bf57,8a0396bd,7b9ba83f,b4296d9d,64f600e9,59373a5e,dd30beef,65abeb16) | |
3066 | Z8(aa501e66,05dcb038,b63cf8a8,79524f5b,69e233c7,911fad67,53a9ceae,908757be) | |
3067 | Z8(c585b9ed,bf59291d,caa42e6f,68545f1a,b2771a73,56bed22a,755520ac,3310e41d) | |
3068 | Z8(fe5e6850,1440e5ca,bcdab7c7,a0f62f8d,94ee82a8,1339d722,00abe010,9601cd6f) | |
3069 | Z8(730086a6,b8ae0ab8,da757ea9,49734009,45d9c9ab,a285ad7c,11a4ff34,718231e9) | |
3070 | Z8(29d13f2f,cf2cd257,74364967,826e5292,3462b18e,2977121a,33a2a591,8f5373a7) | |
3071 | Z8(f26e5613,5788ce23,d4f72505,fae12a2d,3c058f51,9d035b07,be52f8cf,b8d14d48) | |
3072 | Z8(34d692f7,aaa28e03,e8d298ae,e277cc10,9b772c64,ea53d222,94ed8bf4,b5b1fe61) | |
3073 | Z8(ac19f4fc,3fc07583,495b697c,c35e6f05,6cf181f1,8f3dba54,78d92c61,ddbe98b9) | |
3074 | Z8(6a3444d1,95db871b,bc1f4bab,5df51063,598bd8f5,560d48d0,76f6ffa6,e7bd7096) | |
3075 | Z8(915e6a39,39303bef,06ec2a20,6b4826ba,89a75de5,f5d8e318,be83d580,992dfa53) | |
3076 | Z8(289ab106,cbc4d2d0,73ff649e,be1f10c1,8617a282,e6a36b30,cf383168,7321a97c) | |
3077 | Z8(40951d9b,afd4bb1e,2f9dc889,5ebcfced,20c96f5e,8853bbbf,be858fd0,3de6d6ef) | |
3078 | Z8(b7aff58c,a2ad6403,d85b0871,b268140d,e58b6088,ac9d7639,d9225531,d062a9a6) | |
3079 | Z8(f38aa569,54dd8046,4f767fc8,f24f4f29,4feece8f,060fe2e3,2fc91629,dfdc345d) | |
3080 | Z8(96934cc0,781942c1,e308bde2,29535179,00e54dd8,df52d8d5,73ee2e4a,63d4b8f9) | |
3081 | Z8(d123a8a6,85a99cbb,4ac00738,9f4c7fd3,6c77c06c,1422b16e,5e72b0ef,929e9e40) | |
3082 | Z8(a471e317,fb52e736,86848536,ca07fe82,f5436bfb,fdf95967,9330f095,0cdaaed6) | |
3083 | Z8(78792c33,3085d1b1,a94ab1f7,c6916edd,d7d485d4,b4ceee9b,efe6998d,12ec0a89) | |
3084 | Z8(e72a8add,82eb036e,5ed80a21,c0ccc7fe,4966ba33,8c6dbe84,7a522e09,0bc32ef7) | |
3085 | Z8(1a021b03,a4e673d0,f674174f,f1598dc0,2c80c820,7404e150,cfdd067d,bac814ff) | |
3086 | Z8(984c92a3,caa32b9b,80529b80,00e3b96b,c5ba0cba,00d513f0,0eb88f1a,c92e1dd9) | |
3087 | Z8(6e4d25e7,83f2e73f,ac5e2eb2,db819899,9dfe024d,565675fe,f483b033,400ebc26) | |
3088 | Z8(acb01b8f,6c56768e,3aa54c66,a8a9ed9d,552cb269,e5a69730,1eb31453,9a43ba11) | |
3089 | Z8(278eae12,c4296240,c27656b2,3002b50b,d618cafc,3e729c99,3942c09c,71e7b875) | |
3090 | Z8(4a5c58cb,f70f0a7a,e997c6f4,952280c7,d090df6e,b6924768,6f13cf2b,75e812dd) | |
3091 | Z8(ccb92fca,f1e4302a,47410993,cd9374e0,7106c445,3cf17277,26c539fd,fee880e4) | |
3092 | Z8(8b451eff,b6fe32a8,1b67de2a,67b9e75c,d6ef07a9,d0a98b63,14e3cbf0,b09cd522) | |
3093 | Z8(01f69b1c,75ebe744,92e48271,03c36f5e,6975fcbb,b0b0df6a,15ab829c,b412b07a) | |
3094 | Z8(04ba2f1b,09304920,7e3cc92f,eb623590,c9bc8958,50704d95,a907024d,0b9c287c) | |
3095 | Z8(e23e9bde,d981b276,488063f7,f603e75e,c13ef384,3af0934e,e7bd7ce8,9bb75a4d) | |
3096 | Z8(d82b01cb,251b92c6,cfd818b1,0f80a7c0,7b8800f2,bcd506bd,1e059a5c,5cbef7a8) | |
3097 | Z8(ebaae95e,2fd3bef3,0c0dbfe1,5d77f30a,eff58423,9fdc1b2d,e82c038c,1abd1a79) | |
3098 | Z8(abaa8d61,9cb9d3a3,2ce25d7e,d640ca8c,033090fa,b4faa517,9b9577ac,7e88afa8) | |
3099 | Z8(12bcaaee,0ada618b,24d090f5,aa411417,936c1975,9323eabf,2fb65687,cbde8ba3) | |
3100 | Z8(cd8884f0,e5265406,79ef126b,ce9bec6a,dc29a2a9,25be2754,d4592442,0f0b86fb) | |
3101 | Z8(a6bb76af,7978789d,abf37628,eeb5c231,01acf5cd,80493e69,bb627cb8,2124c721) | |
3102 | Z8(e323dc24,04fc20a1,ebb08520,12603f3d,ce1cdefa,222ff0b7,f0d7e4b6,a8b3d1d6) | |
3103 | Z8(43e1231b,ea98a3a1,197d0f84,7f4da506,24464bdf,7dac1194,ca6cfbf3,d6fdc95a) | |
3104 | Z8(42a2f452,456cf6cb,dc468415,96e58322,9c48dc89,77af2a47,daf6ef85,036ed785) | |
3105 | Z8(ee92edbd,8db8b57a,45b44a0b,d3a86cea,903fa6a5,54aeec10,96da36c4,4be63dff) | |
3106 | Z8(0a9f8fb6,f5d855f2,11e5f94d,39502958,ac6b15c3,a1eda073,77fa2227,27052c6e) | |
3107 | Z8(e008e018,c8665508,722df837,ca05f6a7,8dd1130b,56215316,bc8a795c,f4fc679a) | |
3108 | Z8(ee5831f8,3a2bc900,ebf054fb,c10240e1,2eaf30be,b8a0ff8f,39adc3dd,978ecc75) | |
3109 | Z8(519c5359,e2696070,72220392,275176c3,e5c7a0ef,cbe13175,9175eacf,a0c966f3) | |
3110 | Z8(72ccb96c,b3610a4f,a08d6754,386afe7b,7a60e637,7c958a0a,0fb4468d,c33e9fbc) | |
3111 | Z8(054dc3e4,d09f8777,57231dcd,e93a0b21,ea691ef6,8742690f,223cd47b,e21a903c) | |
3112 | Z8(959608dc,14efbaad,3b473af4,a15601dd,09731a86,39983c8d,b81bab08,ffdba646) | |
3113 | Z8(7254b4f1,e038f804,37118e78,81f1e264,ed5b9785,2f7179f2,a2dd458f,650b99bb) | |
3114 | Z8(0f3aeae8,ca94f051,430d11cc,b130fd1b,2901732f,e4f09ac1,d9e82e13,806f3e9e) | |
3115 | Z8(84da59e6,902d930b,2b36a1e2,ea5f7b4f,f12562d9,468420fc,2bcab129,a524c405) | |
3116 | Z8(ee337e77,a6b77c57,464ef9e1,6f8f207e,6be78925,6cdb5d40,38d28db3,bbcae60b) | |
3117 | Z8(6de1599e,e42b3d87,1fb08a99,a4091b30,6ea5a74c,4dc785b2,23eb2c1e,a0707dc2) | |
3118 | Z8(dec35338,d666b7b0,bae5cb5b,0b362fc9,26ebca65,22c7eedf,83669603,9fd97bea) | |
3119 | Z8(61649f52,1f3080cb,1baf44e6,2f23f67f,0747c947,b0c8788b,877ebe0e,224dc993) | |
3120 | Z8(5aa97e23,f202b38a,6814ac26,11d4f268,231c2c2f,52e857cf,5e461b22,5e8360cb) | |
3121 | Z8(ee11f0c5,c1cbb950,793c972c,20217edb,f79927d1,f664d0ae,b0668b7b,d1e1ad20) | |
3122 | Z8(e6edfac7,4fa94078,bfdedc3f,54758ab8,ee747068,1d0f9c2a,a17761f0,f33daea5) | |
3123 | Z8(80a34140,35d84a19,2c1115b1,0961f5be,0573b94a,7435532e,4423d13b,58617603) | |
3124 | Z8(87312b0d,54cfd8c4,29cfc2fd,104fa8c5,1c40e5a5,71af55d6,078c1dbe,222689e5) | |
3125 | Z8(6c4343fa,47d2d80d,87e0bbd1,9d9232f3,a76df00b,91cfebf6,255c3d23,e565bfd8) | |
3126 | Z8(59907fd1,0adb17e1,3833c93d,fcf7cd3a,1ecb9ae4,50f370c5,391c509a,632f5953) | |
3127 | Z8(05b60a81,3f853ac0,09301a03,a932f088,99dd12c5,f6737641,262bb572,b97bb62a) | |
3128 | Z8(eee23790,671e24fa,4aad5fee,0d92e59c,d11d8f5e,b4a7fbe6,35e308a6,47603b0a) | |
3129 | Z8(0dcee4f6,37f98f9d,e31a6f58,c43d08de,d4d044b6,837a1123,0426506e,171261d3) | |
3130 | Z8(562962d4,7e22814a,02ba169a,e812bf25,7c649cd2,8b6cabb6,7321750d,2073f4e2) | |
3131 | Z8(acfce43a,4ab2a841,bc26ed5d,28f4aa1a,0cd3cfbc,4d4feef0,59ff55fa,f20c2a2a) | |
3132 | Z8(56cff010,56aec095,cd26bf67,a5da2ad9,b67243e6,2fe62195,ec210060,84a32cff) | |
3133 | Z8(07d6db47,747faa70,f00316c9,a2653d94,1c023d10,031f11d6,c5854b89,dc44a727) | |
3134 | Z8(35750226,470044c5,e18d55af,0b6fa655,f01224cf,fc03f8d5,e36e201b,73d44dee) | |
3135 | Z8(23ff126e,a60d3be6,2ae801d3,64b2ba82,7b8ae956,e4e576d3,e816b5b7,c4c70a8a) | |
3136 | Z8(fef4b3b9,34f03333,f7775447,3ff81970,a95af69b,d3f7838b,880be4d6,37b6bf30) | |
3137 | Z8(e4828b58,af2e6a38,09972377,1fbdde09,59529e15,292d2fee,9fbe23e3,ce684ee5) | |
3138 | Z8(2426794f,03ba72c6,23964238,dbe6a006,185046bc,f8947ccd,db9db7e2,a423bf69) | |
3139 | Z8(d045782c,4b055c37,4bf191a4,e5588559,1d0d0c93,5700c0a8,75b1b9bd,d1eb09f5) | |
3140 | Z8(bbddb631,f1701f07,b83f7282,5e145f60,76c9b5fc,0aa98996,afc74d3a,150a4f2b) | |
3141 | Z8(958bf3b2,9a6900e3,23124f57,06167ed8,72fcca8f,d9a96e5d,49930ad0,56d7b3c9) | |
3142 | Z8(db01655e,e886479a,9253fb6f,701a4b96,07aabc28,f31bbbb3,509ece29,ed00435d) | |
3143 | Z8(17d097b9,c880f133,a597392e,0d1f9b28,2b97c779,119e8468,ae78fe5e,78a3e76b) | |
3144 | Z8(e9b02dec,530718f3,9b09af39,1af25a91,63743d3e,0da736bc,8a1c8229,f5f2ac92) | |
3145 | Z8(f71fbb0d,7c84cd4d,7b770931,14fee532,66ae73c3,3875022a,2e23a5c6,a31b6209) | |
3146 | Z8(2ba441f5,fd200a8a,b6ad7a81,69576e3e,e8d133a1,58436112,9423f791,5731da9a) | |
3147 | Z8(39129f8b,15c2c5de,1c5038b7,3944ed86,6a6166da,f3edd6f3,904cf330,6048e67c) | |
3148 | Z8(83d79386,95d8d529,cca3129f,fc9d655b,3962ef3c,25ba8362,a310b736,476f7bb4) | |
3149 | Z8(acfd967c,f2469124,8517a664,d3955b8f,d9ba6196,75727dc4,e0b0c562,511427ad) | |
3150 | Z8(6cea0d01,93e86f4a,60aedb58,e23b665a,8c251e95,57e73a30,86fb8978,ab5e44f2) | |
3151 | Z8(f8c83742,b0300016,a20a7f2e,edaacfec,44ca4738,3edba997,c8fa2b4c,58de48c6) | |
3152 | Z8(26b5c811,92770e98,d4e47091,8c585338,41a1de8b,89c21f63,5873ecb4,2cb87493) | |
3153 | Z8(162a205e,8cfea891,e7726d01,945289ab,84a4ed61,9da1847c,5d47bec5,7ca9ed20) | |
3154 | Z8(c3bd51c9,219847d9,1bc79d4c,9216e4ad,4bfb14af,9e147b28,a094da06,00c8e2bf) | |
3155 | Z8(752d4d97,9f1587e5,bc1fe24a,ca2c8585,013d9e25,88545ca9,4361d713,e31c4bcf) | |
3156 | Z8(e887c13c,6269e046,d9c4ccbc,6c3152ae,552b082e,25eb07d1,009bfd63,b0e296a4) | |
3157 | Z8(fe25997b,3f27d1a7,4dbe7ff6,5cd3454f,86fe6a66,9d218353,9ed334ef,c8ffc273) | |
3158 | Z8(6bae5b17,9000b3d4,b66b47d7,6e8d4bb7,cf08ca7d,04e55267,8f348f28,c97e0fde) | |
3159 | Z8(90635f95,79d66031,56008fd8,920c0cf4,e2db0c59,7174b123,24a5201c,0e474423) | |
3160 | Z8(031d3202,e174784e,2e817c67,866cc559,ea1a7be9,627f656b,ef9dfc08,8079d53f) | |
3161 | Z8(33e2d150,bc4c1215,db416fe3,3edcfdb0,ef1798ac,27d544be,993c81f1,82ea78e3) | |
3162 | Z8(bf27686f,e9e68682,104c24cb,5e954190,d78f8a43,351f26b2,0f31ab1a,90995e4e) | |
3163 | Z8(abe5f40a,9159eba1,42adba8f,50ce79b2,9bc73a97,a2b559ef,30221d9e,b371c92f) | |
3164 | Z8(7654aa32,769613e2,2e9e95e1,e4519420,d74f21ea,fcbc373e,34df73b5,cfc1759c) | |
3165 | Z8(6ee5d844,cb7843c0,6d5905c9,5e422322,67e3d4a0,a1652ce6,07973078,85c9144b) | |
3166 | Z8(4c5d0b1d,bfa544f0,59f3d60e,87c48698,10b01da4,585246ae,183af30a,7b2691e6) | |
3167 | Z8(e161911b,8e9d4ec8,08f22c02,45d3312c,7e1baf6d,249fff26,e4823fa0,885a4c5c) | |
3168 | Z8(19c16b8f,9f637cf0,276f720c,e0b9bd3e,0ad39e57,ffe9c0dd,1fec3185,f3854f87) | |
3169 | Z8(e8788a0e,56f4c167,ff4f7d40,ab104951,08165517,fed6a1ed,e6143fda,16367289) | |
3170 | Z8(0a3b6cb7,1fe80a98,09f22683,04759f52,c2a0e0dd,0c598626,f9e0e3a0,dc169639) | |
3171 | Z8(6dd29b32,e45282eb,7c88d0c0,35949d51,7e50d832,c165a911,eca7f605,fe118dfe) | |
3172 | Z8(cd03620a,093e1c24,730d232e,81a89672,70a2a15e,2fca8a81,9c8f7b00,09d5d113) | |
3173 | Z8(c2a0875a,84f5fe25,b0411d37,5ee5b509,d55ce1b6,c4384c88,ad338e16,aff86144) | |
3174 | Z8(e3696e4a,be64dfbd,0998f07d,6c96b6f0,f5ffd3e2,b255b5d8,a620f400,c0bc3330) | |
3175 | Z8(a9d43ab1,4e7888a5,9838e725,c6525338,e0e96310,76115644,d73e7291,1406ee81) | |
3176 | Z8(f4663370,f6bc702d,7e2f48d3,86e5f67c,22e459f8,0250f623,329ad737,b49bd120) | |
3177 | Z8(e16c0aac,00c32017,45fdeb1e,7f25ad41,d4b1f52c,81e0c760,fe2077da,a60f95bc) | |
3178 | Z8(0b2e13a9,c576d9e9,a5eed11d,f6f378e5,736a68e2,7414c638,2c6e64fb,25a11bf7) | |
3179 | Z8(a185879f,6efaf126,1b077046,77a6a858,57a54301,916b6083,08be7474,8633b54c) | |
3180 | Z8(c383d408,99f993d2,46d17523,78cbc8b6,f326c264,439f49f2,b4a20e9e,023c1de9) | |
3181 | Z8(09b04cdf,92457948,0610e4e1,5b254b5d,c079faf4,e3cbf0a5,ae6459fc,b1337100) | |
3182 | Z8(e475e5dd,a939c623,2ad78545,07281f4e,f43632dc,733f9492,ab9df290,601b4832) | |
3183 | Z8(1db1148b,f7e89d58,0af175f7,e7d242ec,4bff0b49,926acdb4,d3056f77,028265c6) | |
3184 | Z8(42f93b37,b01f24e0,807a566a,37cf9cc6,939709fc,7d48f09a,b77ad652,9ef3f673) | |
3185 | Z8(5f867f97,a5a794e4,fa2ef4cd,85ae6fbf,32c889d2,f0a84319,16085f4e,3f9937f1) | |
3186 | Z8(4967da23,707e20ee,dc43f46d,cffcbbc4,af06eea2,ba1eaff4,c48a823d,2f94e4f7) | |
3187 | Z8(62cadaad,87905774,c24c666e,ded9ae25,199ad295,e1b00573,31e361f2,859e63a3) | |
3188 | Z8(959018be,69cc030d,ee653966,7ce36425,dbdcdff4,d0b64c4f,62c08bb9,1761c664) | |
3189 | Z8(9ebd8c0b,ac39c38e,bae48e2a,4131bc58,93d94c8e,7521a60f,562c90e4,cd902068) | |
3190 | Z8(14577762,d25c060f,91cb65ff,0ab9b877,c21debf7,d4b9ca64,dacb4a98,36705d2a) | |
3191 | Z8(04db5e84,e66d8056,99ff9bb8,612ca330,11ede701,48a34967,490d26be,02555d6b) | |
3192 | Z8(f033e201,ee7b4fff,d85bfe2e,cb118b03,19a38dc2,39dbfd91,bf96ec31,70457baa) | |
3193 | Z8(d20d6b50,c922064a,631a8349,9b527157,8fc1c11f,4ba875a9,37908938,a5519ecc) | |
3194 | Z8(032f043b,e5193221,5cdce7ef,c5e84d84,30791612,560a0112,cf98445b,a8023399) | |
3195 | Z8(5fcc8b90,86b45f3c,b70702db,76c36225,027bb532,70424a5c,dab34c9c,ebf591d8) | |
3196 | Z8(dcba30db,398c03c6,491f5f7b,c903e40f,ae981c12,7f88858c,2e50482d,984d08f6) | |
3197 | Z8(bfd97c74,9913930a,ba2d1937,ce78fe44,06de30f6,225c9f09,0ce13157,21056b5e) | |
3198 | Z8(0780aaf5,ab2adbe1,6e0cbacc,0c45a68a,7f752ece,e78efabb,335f1318,93598a5f) | |
3199 | Z8(44845118,bb2c9bdb,e2c381db,6ebdf5bf,70c51c45,6695ec8b,66fd5428,a2e40181) | |
3200 | Z8(fb349a21,bdcf353a,0845b51d,d42812f0,3ae1faf8,b2a0cabe,bee2723e,bf5d2bf0) | |
3201 | Z8(0f09dd0e,c453c244,8d6c2f45,8f1bc235,dfb54671,d27e6707,a86a825c,245d64e2) | |
3202 | Z8(9b5979c2,50f1d507,2f03b1a6,526badf7,81a08cc1,af95ab12,f0d50165,202a0c59) | |
3203 | Z8(276a764f,232252f9,b2128b50,0d8dfc71,b97f920b,87283535,303bbf29,71a68de0) | |
3204 | Z8(bdaa67d1,851454c1,0cb9948e,3a29f486,b87c9ca9,5c774fbe,6d5e65fd,c0e6d51c) | |
3205 | Z8(82eefbc0,1346ff43,345f2b56,f820d44b,603fc15f,e4115009,fe6f90a0,964d6462) | |
3206 | Z8(dd55cfec,c53df51b,6cd95824,1f707fff,dae750fe,7b691af6,730a6d64,c75cf0dc) | |
3207 | Z8(455f0654,d9dd0245,90cae083,d8232e1a,8ecee101,73cab9a5,6f817f0f,55714b8e) | |
3208 | Z8(c4731f5e,88332f8e,deb4a7ed,b21ddfe3,168ba3af,48568dc5,1fae0dd0,5e924609) | |
3209 | Z8(9f8b4ef8,dedd77f9,fe4e0b48,b0e52504,4589727a,406e9c55,d46d964c,d6a6412e) | |
3210 | Z8(029fb0b8,277ed871,6c4f76db,50904192,72215145,3cab3d70,5047d632,17b16be3) | |
3211 | Z8(44d4bdbb,1b20cbac,4270b138,a6cc9803,7ca7ce75,b0b78ed5,563a695e,d44b9ee5) | |
3212 | Z8(b771f0fa,7dd55d18,0003fcd7,4c243440,4116e216,5d055f7d,6f98726c,a9f0e582) | |
3213 | Z8(d832021d,efc02465,9d85e121,0b995c90,d5fefeea,e19127cd,77b40c94,76f13acb) | |
3214 | Z8(9a8c6ff6,8a6d4596,ced0ddef,0def8809,9ede288c,b4a5818c,3749e187,b9c03c02) | |
3215 | Z8(7879c15b,6cdde013,5ee56208,5fc0ad11,1fed6329,f38703fd,98aeee88,f3386cab) | |
3216 | Z8(2f86b562,6f7287ca,090c9933,f3df85f6,ee27d8e7,e44f7055,83921bfd,111fa4c1) | |
3217 | Z8(a1283c2a,292b760e,d357064a,be7632d0,3be4f4ee,17cbfc49,ea4ebace,93a032d6) | |
3218 | Z8(ede41b2d,56c05811,8f025936,f77aa1c9,5e50c26f,c7d9269f,0e62d47e,d1c2733f) | |
3219 | Z8(c00ff2ed,1df127aa,4e48f6af,bcaf1138,f09d33d7,8e8e4926,76a8088c,006d76a9) | |
3220 | Z8(0945cff6,b665ea1f,76194796,837f5d54,6a2ce379,1a6ba6f0,f1078af7,b4528089) | |
3221 | Z8(29d7a089,5b8682d6,0dd776cd,bc017e6e,668c1211,04a5e750,f5e94b5f,aa555c5f) | |
3222 | Z8(8a5202a8,8e7d1264,ab46a41d,5f06ce0e,8b14f7a0,03a81df4,a5c701e3,d385ed33) | |
3223 | Z8(8b16a2e5,687ae1a0,bf233c95,6f23be51,8204a564,0fec210c,3c5c3dcd,e71be4e6) | |
3224 | Z8(e85edc26,560e48e4,4fa28d73,d2718926,d5cd4c73,000aa48d,18dead09,9e21f621) | |
3225 | Z8(c1f3b573,cfc43229,e58befef,76131e32,33b3032c,ee5aec13,b72012e5,70b92b4e) | |
3226 | Z8(e000ca7b,5a2819a9,9f4f5fdb,042e3987,f829707a,df92d22c,33653234,9697ec75) | |
3227 | Z8(680ef8cb,c501f18b,e8f02c96,0e0216ef,521f3908,f9db80cf,be63b27a,7e61f76e) | |
3228 | Z8(1a43b91d,ff0ec8c4,9ab595fb,f0f17963,bf7e5000,a6249d6a,1c1cdccf,110a2bc7) | |
3229 | Z8(55034fc0,7cdc6e13,576f2cf2,87430593,552d4939,2289c242,12c806b4,e2dcade3) | |
3230 | Z8(2ed7eaaa,1cdaec4e,4b31813f,9ad590b9,382f2b5d,e6e284e5,d8f0f937,9a675671) | |
3231 | Z8(c1911583,f145b052,bb1bfd61,1b4d6be3,38d9ef09,c91f9540,230c1dc3,a4b3a09a) | |
3232 | Z8(2aacb9e4,0b56e35f,e6fff065,aac15edd,9f72c762,79dd2d63,4a00ebcc,ff5a9ba6) | |
3233 | Z8(935f6add,c4c88194,5b4c62ad,8fdd25cb,3d5b7ccc,891cf5e1,659cd5e1,b5ed08cf) | |
3234 | Z8(d06abe26,8128c411,a349e897,f9bda387,cfcf6f26,cc4ee9c9,ea94d464,1f01561e) | |
3235 | Z8(4a0daaf3,00adf1ab,dc63d648,bfbbb9ef,7b43de85,f4d470fe,03dfb11f,d7d47294) | |
3236 | Z8(160d81d6,2d237453,34e79648,97e30ba7,04f49fe9,8b0de8b1,b9d22c91,e50c9d1c) | |
3237 | Z8(34fdb35b,5b34f837,1bb60051,67b04b88,16fe251b,0b26fd70,34efe2e4,f1ba9327) | |
3238 | Z8(76535724,4ea04b1e,93c90efb,b99896f0,224d0376,bd7a493c,872b8445,bd8f6445) | |
3239 | Z8(b38458a8,4e51f561,8887fb00,14474910,6c3dcf72,8d5cf1b4,b2ccc5a7,39915a38) | |
3240 | Z8(67ec4e3b,56d23545,f8534525,bab8e493,e661ac9c,1f7fb979,eea01689,34e15d5f) | |
3241 | Z8(065f9b44,7f18d767,9c16c362,4b18c328,709e077a,9e78a37b,90a3c285,52f53c6c) | |
3242 | Z8(c8f8ec92,f36ddb5b,02ffcbb7,97747ffd,2055801a,fa0cde52,c9fb8a36,79bfc8ba) | |
3243 | Z8(1a8692aa,5d994f56,c0dc5c0f,e60a3314,25e4842e,4019e737,dd7478e4,4c1e6c7f) | |
3244 | Z8(e10ea6ed,aa9f2e1f,1ac31219,2f8b6c46,9c4d03fa,6180d09d,caef2ad8,67e66dfe) | |
3245 | Z8(0e6ed9b9,92dc9603,e99911fe,06be5479,a024ecdc,a1b7b03e,72334516,1d8c775d) | |
3246 | Z8(cd6bc9d6,516509dc,79a6a98b,d644b3ff,145b85e3,7e754a13,24037ec8,6e8fceec) | |
3247 | Z8(3bf1b9e5,d44192c5,98f15ca4,620339f1,8fba0352,6e7623da,29194141,e124ba4d) | |
3248 | Z8(59849e44,28cc7de3,10a5c496,59f1ca03,ca495b24,8461b5c8,f0915073,a6df2721) | |
3249 | Z8(06610145,48bcef57,35621eb4,87830fc8,05da0d8b,73ba1458,76759cb4,ac0a8c9a) | |
3250 | Z8(9c2c4eda,fec1c59e,b4427e12,b4c2e891,e545d76b,f173caec,c1c698b2,2215b5a7) | |
3251 | Z8(96b5b649,0baf051b,bc59142f,c507be6d,b518ae12,5a295490,3270b92e,484e8932) | |
3252 | Z8(4c47a480,bff80038,d652c3ea,7d2582e1,35ac3860,5d8680a0,98374510,87d95a82) | |
3253 | Z8(bf3ffbbb,6de0bce3,6e1873e4,6b9275f6,7a3a6ceb,3850ab70,4c004c18,ffb2d99a) | |
3254 | Z8(14a1cf78,01de6525,b3878380,05892047,bd842e6f,904abfd9,a1167160,d30607ab) | |
3255 | Z8(996be2e4,517b0b93,582dc037,3ef93c4e,f1c8133f,4ef58187,073cf460,76194694) | |
3256 | Z8(55d0ab03,f4af9b2c,6bbc3a97,61390083,8f10b0b5,cb9f968b,00d9ad26,50b41df0) | |
3257 | Z8(74153e41,a7daf1c4,559ff1ab,aa2dee0a,266a9f32,8f474f0b,b7217238,b51920ef) | |
3258 | Z8(38cea67a,97fa77e3,ab3e0214,d61ebc1f,154cc1f3,dec2aa66,4885cdcf,59b30967) | |
3259 | Z8(c3b0a84f,9ca2d9be,08bf15d6,2c777f14,b19847ad,e2c90c06,c6cc44e5,22e1be80) | |
3260 | Z8(e3b3264d,10d1c106,fe6393aa,175b0b9d,daf82315,722db653,09f0bdc3,4302bb24) | |
3261 | Z8(b9f08fac,c270e77e,38b66870,17d902e5,7d0f9e7b,ef44894b,28844376,e03dc424) | |
3262 | Z8(f6b4cf6f,9f96f8eb,78a5e6c3,dc99cf0f,77948144,f90d2346,0e7d2504,fef25603) | |
3263 | Z8(0c6e4fac,28947b48,6fa68497,08063f6c,4d582b45,518c8d1f,87dd8bae,ce83ca6e) | |
3264 | Z8(3ded8062,7690e0d3,110d3333,d424cccb,a0691c9f,8491b74b,dbbf961b,bf8ca597) | |
3265 | Z8(b528c4e5,87831a89,25c506f4,e03b31c8,deb32601,c267d481,cdd0e613,a3577811) | |
3266 | Z8(6e1aa6ce,2b20dcd8,95b4622c,58f8937a,2ad0e689,2a2ef558,315a24c9,797777b7) | |
3267 | Z8(5b8f2a5a,1b7c0a29,66bb1810,abe98aae,81958558,5ecf8530,fcb391cc,a0ee86c1) | |
3268 | Z8(4681c431,4c4be55e,53faaefb,20ecfc21,a97b03d8,46781eae,93d3a877,2ac45527) | |
3269 | Z8(8b83e1fa,d5f74f40,4afba6b4,038a9ed4,bd187ae7,eeea49cb,dc6326e9,b9d8a0eb) | |
3270 | Z8(211ae76a,ffb00a55,4f6f4588,8a861c50,b41a7a11,10367d40,a668f918,73fcdfef) | |
3271 | Z8(c22ef1db,a961a13c,5a77fb4d,c3c2602c,78aec24f,85728f35,90ae43a6,544a3875) | |
3272 | Z8(f0b2d6b7,9920cd10,62d4821e,95763947,33449cae,e5eecf9c,420606c3,1719a471) | |
3273 | Z8(e55be920,818b2cc0,9e9a55d6,26b1cb43,396daf48,61379a62,5e401b64,d65d988d) | |
3274 | Z8(6f40cee2,a6b5b07f,25c20877,c1145c7a,54380361,634bd886,c4e7ed7f,885517fa) | |
3275 | Z8(85e630d5,e4c78afd,d8735255,1b66600f,0e9a4760,c22ae6ea,fa0e9fea,c79c9e84) | |
3276 | Z8(7ce167fd,b636c927,d59a9917,56aa061f,b8724096,05892927,b9a769f6,bbf1344d) | |
3277 | Z8(cd881354,22041a46,72542533,71a1d60c,8ac117b4,a39d9dd5,28d2ce91,15432387) | |
3278 | Z8(48e2a3c5,9203d9a9,6e7f69ab,34db510a,2cd704d8,607733de,29154aa7,f384c842) | |
3279 | Z8(ae9ec3d3,a865d115,8b83f017,a0f6be73,4c7598e6,95e39376,ee43d440,7c748bc3) | |
3280 | Z8(d96795a4,9294db13,6364afc4,067705f7,b9efc03a,3d2cb687,5abc687e,ed8183f7) | |
3281 | Z8(bd2140b4,e7f0e937,f23b4ce7,6432ee53,1f3827c3,161bd5a6,f4a78c87,68e4461b) | |
3282 | Z8(1176185a,18a69dfb,32a89105,deaf117b,33746e9d,96d3196c,3816bb85,3d1b228e) | |
3283 | Z8(3f59f82a,593f4ba8,4f86b14e,acd08499,7c364293,7c3f8956,6cbfa457,7ff3e620) | |
3284 | Z8(28b686d1,a1c0e367,62b67af9,fed3295e,7e2e7391,7100403f,f553150a,bd9864e9) | |
3285 | Z8(e3ac48b7,62e7da84,64e0c290,3dd8fa17,183dafbc,1413d3b8,4f5540c1,9fb7cfb2) | |
3286 | Z8(00ab5d7b,da5d1341,6999e284,802c1083,0431f795,be287953,1c1f19e9,8e01b147) | |
3287 | Z8(b1d262d1,a4e5da07,09e7f615,c21e90a9,8b30b320,595fc4c4,30ed74d9,6efb4050) | |
3288 | Z8(1c9dd97f,970efd5e,d406ee38,b67112f3,35b7bc32,d215c40d,82d96baa,96ae1526) | |
3289 | Z8(f2eed99a,f40e0024,672311b4,e9a0daa3,9b3c4d61,968ea93b,0174c330,fbb562cd) | |
3290 | Z8(b1148b65,254d755c,27d5507b,27ed24a3,043545f9,17435b25,cc2773ec,ae1aa7de) | |
3291 | Z8(76f4b4a4,419c67c9,d806f787,88691d37,90b1a165,07288378,64df2765,a19c7c82) | |
3292 | Z8(ceff8802,dbf2b465,0b9f3d9c,14c7ec37,91410931,af5fabc5,c957e169,3af3e809) | |
3293 | Z8(066241aa,fe847877,7d54dec3,34939e6c,6cd589ec,e8795af0,91f57914,41b01ac5) | |
3294 | Z8(856b32c0,21f9b82a,179910ad,2470d945,bfde968c,0e465c1e,bdbd386b,32b3547b) | |
3295 | Z8(e0ef5170,2047db49,1d9810ce,0b9c87ad,c2d5869a,906b4cfe,f4f71be7,25d7fbbc) | |
3296 | Z8(0b540d0e,b0bb7715,cbf1ee35,8a63e752,30059855,4691d3f5,89973e96,c58dec41) | |
3297 | Z8(da2e37b0,a6da947c,86b17659,9a13d0b8,760674ae,d1e3cdfd,97f604dd,5cd8257b) | |
3298 | Z8(d396c0b9,a7abb4fc,3b4418e2,9784d5bb,6404fd30,58cbfddc,8c5522e0,58ac744c) | |
3299 | Z8(0a38ae5d,06c1e882,3b2529b6,a6d2f12c,cbb990d8,e316ff97,78412080,27207a18) | |
3300 | Z8(3ccc7dfe,d2c444b6,a9f6b0fe,be631180,7ef54272,dda820c6,a4222017,813abfad) | |
3301 | Z8(1dbe2a60,2de557d4,2f170cd4,383e2330,ce6cb17e,aa74ddf1,08683125,dc2e90b2) | |
3302 | Z8(b2093588,8db83717,7c2bb947,71ce5047,fc2f4108,c902ff2c,426fffb0,c0c72099) | |
3303 | Z8(c2dba36e,e038791d,27c77d25,eb3b00f0,83d64d20,b205f6bc,bf4b1d62,3b51a9bd) | |
3304 | Z8(1ef0d2dd,5e4d6c83,5f583cac,9bf5c702,e599349b,cb8cf949,fdf5cb9f,8aa51438) | |
3305 | Z8(ff91b34f,1eeaaa09,7fe4216a,95871991,e7fd29a0,19ee6fe2,73cc7ae4,bc1567cf) | |
3306 | Z8(7a2f8479,bab31bc4,56833ef2,ed8c18db,538a8025,5c2389ef,a2f878ea,58e44038) | |
3307 | Z8(6d6b393b,b9530eb9,d094b384,c7129d69,7afd85cd,b7fb4e17,69ef68c8,2014fc9e) | |
3308 | Z8(5c4c3747,3f4297c1,b5b55c63,074b5a3c,b4ab95fa,da06cb5a,2e4f7a15,605cb03f) | |
3309 | Z8(37151d49,d26dffda,1869bee9,d7adc727,1133d57a,23e155b8,7b5b370a,8fafd081) | |
3310 | Z8(d7f6161c,f336e231,d1da82aa,f2a435a9,7e8fe030,b2cddd01,f98fdb64,567c6874) | |
3311 | Z8(03b76a46,a48b42ae,d469e90e,c6cddcf2,c94222b0,319fc670,a6bb804d,84bf96f4) | |
3312 | Z8(335cb072,1f175952,75924165,8f743bd7,13e55433,e9fb97f8,a01b810c,fc4241f7) | |
3313 | Z8(8c76603a,77249f43,d55e4b88,5de9d76d,9c9bb98a,0a46ebf2,57eddfdd,2c4bd824) | |
3314 | Z8(f463f117,88d1a024,0554a960,8968fab0,fe607124,485583ac,f9f60e64,a296b2bd) | |
3315 | Z8(372fd0ea,1326e92f,056d01b8,6cb8aced,ad2af42c,964eeb27,7cde9156,dfc786bc) | |
3316 | Z8(96a06692,11786973,252f4312,5533046f,3578d48e,a7c13720,49df291c,31ea7acb) | |
3317 | Z8(8a49e666,9ab1f191,4fda32d5,c5400be1,e09a22b6,00ca356a,957c8a15,bf92f6d8) | |
3318 | Z8(b2cbf7d9,fbd173f6,d74a7486,94869d04,1e84877d,59ea3bd9,3a8b2ad7,ddb3804f) | |
3319 | Z8(bd9c2b69,234fe71a,645ade00,5e45a8fd,26c9fac8,18c1794a,a99bbfc3,9376b166) | |
3320 | Z8(eb63b6c2,5ffb2c1b,cc24aa73,d1d81194,dcd4b26e,c26d23cb,f03c8bb8,59d04018) | |
3321 | Z8(4805c144,df545e0b,042cdc40,73a249a6,330b517b,918ee488,9cb9fea1,e3735701) | |
3322 | Z8(8ebf87a7,f57adeb4,04d718f7,c5a638ad,e8b54a8d,d21d35fe,4162e92f,004cc7f3) | |
3323 | Z8(28935de7,d2e8a79d,b79bdca9,36b63082,fe650e08,c3d395a8,55e7ab4f,95b5b57e) | |
3324 | Z8(c94f4639,86dd290f,853feb7d,9e6540b9,b5010d28,f3ffd35e,d5fc9b4e,5b310927) | |
3325 | Z8(c2251793,8a5216d7,369807d2,426b3191,630f3257,a55369ed,36a6cc03,3ae2b401) | |
3326 | Z8(2b193a93,b43e591c,27ce08c7,0d425e24,6b0e2f9e,720df0b0,cdfd7884,d14d88b0) | |
3327 | Z8(6c860d1b,41961ffc,b2c12bb5,c049432f,d499e987,e61ea278,82b71866,34446b41) | |
3328 | Z8(aef85fa9,a027f8e2,775c8d1c,a8a390ac,e20e81b5,3facca70,5173a83b,e3148b51) | |
3329 | Z8(079519f0,8a2f0d7b,c1c2dc18,70dc5f79,f81bfbaa,3b6e619b,73060d21,8b41faab) | |
3330 | Z8(ccc989e0,663eebc2,bbf39a54,3bb289c9,8cbfb470,6066092e,415dc5ad,015402e3) | |
3331 | Z8(881d1844,3edb1999,9ece38df,dc16eed7,1e024ee0,518151b4,0d3bfb7c,7e005f36) | |
3332 | Z8(be2dab47,86efc81d,c6570f6c,d3578319,34eea96a,10931714,d6e39ed0,bbd7bbae) | |
3333 | Z8(6052a89f,83e056b5,7dbe41bf,6dad5d38,d56c2d97,f56f57be,e33ce7bc,864b3e68) | |
3334 | Z8(0719b540,d36b719f,0e2296f7,e9893ce8,de1d0662,64a7d918,dbd96297,b69a7c3c) | |
3335 | Z8(29bf4b2a,a124ba97,9ca86656,739a9532,affa92d3,9db52517,5a791432,9b55f4e2) | |
3336 | Z8(4ff6d051,e48ac777,88211b72,050af89a,3e40759c,5646e536,35227403,241990f2) | |
3337 | Z8(8af08023,48456078,b0fa317a,179ec78f,6d695618,e494e334,ac93691e,9f2fcb45) | |
3338 | Z8(b72ffe39,66c1cf0e,2edf7292,7ca71356,c9af32a1,b2cdfa9f,0d9f4299,0041ce7e) | |
3339 | Z8(7b7c9e7d,ddc24efb,bb1b4623,65964d7a,bf093dd6,45ac6efe,92f33c20,d17ed003) | |
3340 | Z8(635565b9,c8916308,7e22281e,ee5a274d,3666afb8,dd7ea11c,ce001b3a,6e20ba70) | |
3341 | Z8(35778a9a,a79ef85b,ae6a829d,5a07dbe9,279286c3,55100386,c14fd637,f6926b4f) | |
3342 | Z8(e0a8c0c5,dcb79263,41c8516d,d55fd5d5,7d58cc50,4721e5dd,3bff7fda,adc7279c) | |
3343 | Z8(e0dc5dd9,dd11b946,62025438,0c646763,b793a99a,10d26442,0f761663,77482fd0) | |
3344 | Z8(c4e18443,0f6279a7,77a55929,75d3de28,7ca0cf84,31eea43e,6b816bf5,2bb2a923) | |
3345 | Z8(6f68fc45,523b14b1,65dc8782,b028daa2,52118787,a93964c9,48c45c39,fdf3a498) | |
3346 | Z8(56b69e33,2674de3a,dd6cb4e9,a6166489,5c7e1523,bd306209,db0d9b89,6cdbd5c5) | |
3347 | Z8(4e470eef,f631be45,f33519b3,64b622e7,3ec8e703,819072df,d59c7fe6,f55a959b) | |
3348 | Z8(45c816a6,a07e8535,a7586999,56c37346,649a0bcf,fb09256d,83e4a95f,a2fe5d1a) | |
3349 | Z8(3d7fa055,6bf63e2b,d6ba9546,146f0a56,575edc1b,5bfa306c,31368143,24a52bf4) | |
3350 | Z8(f9215cf5,d3088453,ee792582,5bbf1d5b,80de406c,ca0d04a4,7da3edc7,07326636) | |
3351 | Z8(db7030ac,f67d8ab0,0e99850e,0b581d00,bfd1023c,575d622e,ba179c08,9ee85149) | |
3352 | Z8(4c6e1da2,e1896ad4,a76e2045,68c867a8,2bdee0b4,9a829a29,20c8aa55,0735c756) | |
3353 | Z8(49c0d166,e5a18f39,b03321d8,8bc8c613,67e5ab85,c390f217,bf07a8d8,cf36aa5e) | |
3354 | Z8(07f8c19f,6b39680b,61651e69,b1ed73cb,4fa8e837,a96f7875,3f469c75,efd3eac3) | |
3355 | Z8(4c4cc0f0,b3e779de,5f4e7c13,959061e9,cc8593c4,a4c2696a,a30c657d,831679cc) | |
3356 | Z8(a4d69dfe,7196c636,92812689,57917769,92c8112d,a21ddd8e,28a63a77,c47a6edc) | |
3357 | Z8(1f90c7c5,0f88ebe1,e0ec86c1,abd312d2,1f0a3497,05a97686,f4f5938c,bf86c52d) | |
3358 | Z8(ac882f09,dc5e1e2b,e3c2be1f,f642a458,a32a8614,2a0659e3,a5d201bf,df1e03f1) | |
3359 | Z8(2d025790,56ba61a2,1b6a0e73,129f2100,b3771471,4d88ea03,5b02a5bd,0b71f0e0) | |
3360 | Z8(6491312b,8a983a00,b76b1116,72da0cd7,9ec9fdd0,364eac08,df80068f,864bc793) | |
3361 | Z8(3ae7d0ff,d7209b06,59f666dd,02aaf5ca,6cd21841,6e9d09a7,95317baa,89f3a6a9) | |
3362 | Z8(a65efc6c,02678ad1,4f0b77b4,a5849458,0b08247f,764e4864,7a5990b0,4ed3ef88) | |
3363 | Z8(b03f5b51,dd2bfcaa,5676a03c,125cbf15,41e84291,f5f85a37,756bfe82,978baf66) | |
3364 | Z8(aae9048f,47abe149,1c5e06ac,85b6c0b5,f99cbb95,9a4e2bb8,9869bc88,c061475b) | |
3365 | Z8(04602120,08e3a9cb,b340406a,f480395b,a12b481a,de0fe3f5,e417bfcd,40907dcf) | |
3366 | Z8(4630c9b0,f89a116c,b09518e0,d5cb84f6,bc44c8b7,9abc761d,c43df93b,dc0736b4) | |
3367 | Z8(e6b808da,16ffbd27,57c81144,ec59dffd,d0c0fbdd,51f9d24e,2d37748f,07e7d943) | |
3368 | Z8(8653cbba,e1625f47,0745eb80,43075525,4ad5ed82,45147ac1,24425fa9,dc1da2a0) | |
3369 | Z8(dd3a3ab0,c91df13c,234a99c8,cf216008,c63db788,d6eeb599,479c3c31,dc6cbe5b) | |
3370 | Z8(73f3f7bc,406d5b6d,b32c5b97,991bb7b5,af04635a,c5c4d259,7a8f92a1,f0bf38e9) | |
3371 | Z8(80d84b69,6273fad9,a621777c,05aea84c,7d2021b7,c18ffd86,367e657d,661c9a5f) | |
3372 | Z8(2f8628c2,34455321,4fd128b9,8b3c1e72,e7afc246,19725c5b,3d8daf05,389a3653) | |
3373 | Z8(6dc72801,469f47c4,b1194b4f,52b61fbc,2e186ae6,64d69279,af1a4915,12063b37) | |
3374 | Z8(1315515b,f4e35fa7,9911c966,e0b4b0f9,51328da9,895a72b4,3cdbf085,bc0d5211) | |
3375 | Z8(cde8fb76,8490e5ec,2d54e4bc,4e80a33e,7f77939c,e1fff33a,617ff84b,af3a3db6) | |
3376 | Z8(141fa8fd,634b0391,92ac5663,f90170e1,e00019ae,dfba5fb1,54beed7a,94f416bc) | |
3377 | Z8(9acbb1f8,0fab5c6e,e2f189e4,408bfd42,a9514a78,60edf001,739f2d6f,b7688b7e) | |
3378 | Z8(25924489,19b9cd53,25187b9a,1b401ba9,f0beafa6,951d4331,59b1acda,0ecbc1b5) | |
3379 | Z8(f5df288e,cdac0254,3783f2dc,76f90a07,452a8022,fc165c96,84879d2b,2526b782) | |
3380 | Z8(193ec27e,92e19be8,beb2397a,d8999700,2702e919,de4e11d2,b7e99b37,06add8c9) | |
3381 | Z8(9e1b8d29,e9824441,7874f244,f4b00a40,aabfdca4,acaf85ea,0d4cc54f,ebe6b8c8) | |
3382 | Z8(fe85f485,06bb8a99,234fc00c,dfe549ea,9d20d237,ba5fa9eb,669c4277,99de8b91) | |
3383 | Z8(058f6841,397322c0,64c81277,6605a3eb,32a11f8f,db51a05a,adcccc02,eceba96d) | |
3384 | Z8(161d6821,7656a0ad,f6b75aa2,31ac2233,c6844e50,c75fda8e,ac84c0b0,63733e16) | |
3385 | Z8(ef45ec9e,5cb61b19,a374b3eb,f640e5d2,9c30d95e,81716271,669764f0,5651fa55) | |
3386 | Z8(24036f0d,6abafdb3,135b0e9f,0bd30128,665fc593,2ff57351,7299a793,e9f7b9c9) | |
3387 | Z8(fc560ee4,6fae75d6,30981539,04147b4a,bd6b63a7,08d5489b,294b324d,c2e855ee) | |
3388 | Z8(ee6ea129,ed8142a8,510e597c,9e32e6bd,f70c2e5d,c1bebe67,201d6abf,c5566460) | |
3389 | Z8(36fc044a,cd7f7719,bce64d18,aa2e23b0,749adef9,aaecb789,ab5e7f2f,f843bfaa) | |
3390 | Z8(60a0f32c,6bdf355d,1f4d65ac,6452913d,dcb03035,64be1d89,f3f81f60,54e1aff3) | |
3391 | Z8(1aedadca,ef73cb65,4f8189a4,16a50bc4,7cd24ad1,1818e5aa,9de66898,1b326765) | |
3392 | Z8(844e3232,cfe01ebb,8857ed9e,5b6eaa41,ead2caec,af14cbee,ed4c92c6,28d0f7c7) | |
3393 | Z8(e5f37fcc,0a962a22,64693ae4,303ecceb,180aee96,d9a80960,a9017ec7,f664cbb8) | |
3394 | Z8(aac9523e,a980aebe,e97724de,2c8ab22f,edddf3b3,9ab644de,87f4ace1,b81ef47d) | |
3395 | Z8(d7df19c7,3d295919,e750fcb3,089c9f39,02da03d7,9a0f3567,49c21518,7dae2c97) | |
3396 | Z8(b8510eec,8513f128,aa892f1a,b648e6f5,6b571617,65bd30dd,2086a5ac,4d1e7b6e) | |
3397 | Z8(d5c6db93,92a85ffc,1385ca97,017e074e,7eb6e047,6907ec0c,0a3e663e,98100846) | |
3398 | Z8(0fb97e22,502c1ad4,9144fa5e,49974b0e,dc226ee7,c2e83fa6,f49ffd2f,d847e14c) | |
3399 | Z8(3744e06a,e1a37d18,add417e5,10890336,685e6626,d972eef1,e1822bad,8117dabb) | |
3400 | Z8(6f39b9f0,6927af3c,b730d786,acae12aa,5c8c1f55,15996216,925a4791,16a497aa) | |
3401 | Z8(bf72a56c,e3bd2524,10b5ea77,57eefd90,ac4c0ee6,45bc50c2,2be61a30,bdeee682) | |
3402 | Z8(faa15561,63963d9a,81ba98f4,a48f3c81,943f9527,c8381cec,351d4d20,cee1996f) | |
3403 | Z8(09548d01,a15ebd73,570255fe,dc624df8,18b2d60c,8583c567,1935335e,e2778056) | |
3404 | Z8(5493cb8d,73ba4c3e,8dc11bbc,a5d109e1,64fc5978,bae42292,dbf944bb,d5eb595b) | |
3405 | Z8(b31e05e4,67be010c,df2a299b,d6092164,eadc678d,3e6cb07b,e7af81cb,f00f9feb) | |
3406 | Z8(dd0c4874,e300c536,45f9ef18,be35271e,3d137bf1,711fd392,cc9795c8,36efd196) | |
3407 | Z8(55f62826,48699bf2,7da4fe33,10b3bcb2,88393d58,c24bbd03,c4521fb3,55560ebe) | |
3408 | Z8(7318c070,97b5344f,9d548d41,eaee5346,19b4a1c5,b2d28b83,f7f3d109,1b870034) | |
3409 | Z8(58fee59f,08b4e034,aeeb8204,918f5f1f,a7362fe5,da8afc86,e9fe9b96,cc31375b) | |
3410 | Z8(407c042b,af47ab2d,8c4914fc,f1f438e9,7dcb11cf,a75f2558,ea3d4d9b,365a1123) | |
3411 | Z8(ec7b772a,82a096c5,8a304665,f7311357,c6152618,0ff764bc,35b3b662,8ff11b74) | |
3412 | Z8(0b903466,dc733022,70ce2fa7,25304d64,8c3bb629,4989a980,85ac35bd,345fbc62) | |
3413 | Z8(219e46e5,63f9b00d,9ec03089,c911afe8,6f57c4ff,9f766b5d,794bf554,835b7e22) | |
3414 | Z8(9cd0fb0e,b2ba2766,7ae30b91,3e216a48,3766a453,11557ed7,ce935969,b305031c) | |
3415 | Z8(c79aae79,ec3f7589,2a762541,c17bcf1c,5aa2fa46,a7e01c2f,ae5d4c46,c46258d5) | |
3416 | Z8(90847ea1,a3340143,65fe1f10,03a28358,010293eb,426d39f7,be4d6bf2,777f8e72) | |
3417 | Z8(83089938,58236984,5a48508b,7dff077e,e7b3e0f3,cb072b3d,df127681,cde8cf48) | |
3418 | Z8(2921d02b,224b1b33,388f4127,a6ee06fb,c1d8d051,5fe3cb84,52e3909a,3f8d69d5) | |
3419 | Z8(64bbdfb6,73588015,47c46b2e,92a4790f,efa23215,c836e2dd,743c6f1c,4edefd78) | |
3420 | Z8(63e516e9,978b5d66,9cd714c4,7e69a349,7694a8cd,d2165d79,c08385f9,378006c7) | |
3421 | Z8(9314d667,4d3bc55b,659866c7,a6564e06,e641b6bf,2d6452cc,60ad4bb2,a5d1fb02) | |
3422 | Z8(21e63146,836f8500,8e4ec160,a129bfa3,15d12e38,e4bab3e4,2807da8f,b747c1d2) | |
3423 | Z8(b10977ee,f445d4da,07d0a9ce,7a0e4054,c01fe63d,3f17e752,67222a71,b1f22ce1) | |
3424 | Z8(3783ebb6,ea29f33a,6a5c3f7b,ae6eef50,23c8dfcf,6eb7d446,5b86cf4b,9665e367) | |
3425 | Z8(851c26fc,97de8586,a6dbf047,3fd3ee19,2da5b29f,2b1c9021,4fa06252,72d4385f) | |
3426 | Z8(c3833763,6ec3e2e1,82c6442e,6856e222,b155fd88,1ee65d10,f24d28b7,5b0a9a74) | |
3427 | Z8(20752c27,ac1d351c,669063a1,f4e11304,cb2c91ae,4d868da4,ca2d9940,76bf5e52) | |
3428 | Z8(f2015df6,508e33c5,b208080b,820eb267,6f4798b8,a6c225c0,fbe59c25,b40fe2cb) | |
3429 | Z8(3f4feffd,8606dcb1,b2adce1b,9f5c29b4,66f8d3e1,ae4d2f82,128e2381,5f82d83b) | |
3430 | Z8(b17f432a,4b6cd913,08e10f54,cdff0fc1,ecabf8ad,c152597a,9c0dcc92,91451f52) | |
3431 | Z8(7c7d6332,0b41c1ce,48f79f31,0c7f7ba3,9ccffb78,74e20b0e,bfb75a5a,7a6e4c2b) | |
3432 | Z8(019634f5,59d19110,08f75794,8b6f497e,9bff242f,97630c2c,cc5171d4,c2c60d16) | |
3433 | Z8(2d38fb43,89146eec,6fc36bd1,a788e2ef,776f5141,193ebce2,a2f4c4d9,0c9b3ae4) | |
3434 | Z8(358edd9f,adc8b9fd,8c6484ca,ffbac4cf,b52b8282,e2c0a97e,835717cc,d8235068) | |
3435 | Z8(fc5b4495,a687d2d6,2c36e856,3826824f,f26a263e,aaff03da,b64fa038,a10d486d) | |
3436 | Z8(7a723110,c4585a90,1803be2b,d55d70c2,dd603f4f,c82fae01,05da6977,3314af3b) | |
3437 | Z8(55dd534c,41e9db8a,564f7902,6fc6831a,4b332f08,bf771542,01d00b92,e4cd0224) | |
3438 | Z8(78b5bd12,ca731fd8,35fc335f,4f715f8f,dbed0580,4c07fbf0,acf4e5e8,3b563438) | |
3439 | Z8(f5b5f85b,5e4d1dc0,5498ff9d,8d2eee1d,4ca484c7,f7feb2dd,61f1e2fa,71b39c0d) | |
3440 | Z8(1614c069,b0e19649,2031ce0c,89cf97f3,5141c2bb,85f7e594,fd95bbb0,0cc4b06d) | |
3441 | Z8(d3aba1a7,61a9d102,f339109f,e556b012,f69487cd,3d8c13c8,677550fc,eb06723f) | |
3442 | Z8(d9382254,debcdb33,f6b4480c,cc357526,2c0dd60c,f627b884,2438841c,c74e4ae2) | |
3443 | Z8(253c2658,f72b4f71,28f8ea5b,7079217c,b5ab5ad7,ea879675,9e5bee01,9583dd50) | |
3444 | Z8(65ed0c1a,5177c5da,7bb4c1d2,def1d47b,1ada435d,502138b3,d8d5820e,6284c7d4) | |
3445 | Z8(7f493abe,9941e4b9,d9bdc7d7,c901d779,554006b1,e8881213,66e8ed52,8bf6efcd) | |
3446 | Z8(9d2a9f60,72d76f6e,88217196,48de863b,77c04b02,d86faef0,b778e24e,d3a189b0) | |
3447 | Z8(78a4b51f,1b78d543,548b05f2,486881cc,4beed6ab,62f38f2b,a4aef7df,46e3c64d) | |
3448 | Z8(ab4c890e,bfcd3df4,23178a9f,1565e648,de37e7ea,ceba2b9b,cf1873de,13445283) | |
3449 | Z8(0381fb9d,21b762ac,33beeb26,5ffff250,cdb8e3fb,0a9e7be5,d4c8945d,b411e16f) | |
3450 | Z8(60357fdc,b1c853d3,43542d98,4757348f,30ab3308,88d82e06,8d8bfc7a,225cba7c) | |
3451 | Z8(de44138f,6808dd09,f6daa08a,fe5b67e6,93b92780,6c1f80f3,9a836ae3,a93fad5d) | |
3452 | Z8(666bda02,de914233,99f416e5,ccf4608c,43fa2a66,e53af166,d870a4c4,a316d3f4) | |
3453 | Z8(f4e7f206,f33d2f06,2d60d930,4b900eac,c7702fcc,e3d60b47,902481f2,789e2902) | |
3454 | Z8(da2afc9b,e9bc15ea,a2089bd9,d9ac60a1,3533ea2a,6b49b95c,9c93ede7,70fea71f) | |
3455 | Z8(2cfd6563,80bbc0c5,d91130af,207747a0,4f96cebd,f6a52267,a1d56a00,6a0b5fa5) | |
3456 | Z8(59185d86,8e2c5d0d,e6c6cc08,941e27ee,8bdcd2a2,2400c277,95ab5592,6dd35b74) | |
3457 | Z8(555f1577,aed3e7d7,aac5e8ea,72f511e4,9d1b49e0,84ecca6e,53b6a29e,cfa74a52) | |
3458 | Z8(5b2bb4d0,324eed99,7fc163ee,93a31d75,bb29ce85,83322f4a,ab3d7cb4,22975699) | |
3459 | Z8(e7fcca82,46fb2174,8c58ff1c,c3ddfc50,d04e94de,40adcde6,fc10b148,f7c994ce) | |
3460 | Z8(b4845d37,a1803ad1,ebb25c69,44f3830b,d5fbecb5,b197aa0f,937fde3c,d9680ba2) | |
3461 | Z8(c197a308,0ead709f,8b53b2d4,fbd86a58,7b32ea38,dad85ced,f30b1d43,7defd013) | |
3462 | Z8(114fe877,769d9137,1fc4f287,179962ff,8669ab70,00b12b98,9d00be52,12136ac6) | |
3463 | Z8(a823e91e,9184c39e,13ce2305,bb48291e,0d0f6320,92122d87,5fcc462f,7794b64d) | |
3464 | Z8(0d92a896,99785a4b,ddb7ddb6,7a2f3b90,73c89f93,c897136d,869fa241,b0e183e4) | |
3465 | Z8(d474f849,59f6d145,6ac0dcae,3d1c400a,49fd8278,fd4f06ae,5e4f8019,f1002590) | |
3466 | Z8(ddbd9d20,8009a3fd,354659c6,65f005c7,0b38910e,11769e7f,68b0ef6d,4f064571) | |
3467 | Z8(18eab72c,e72b4cb4,1f4f13de,8751179e,5082d9d7,791b514c,62d010a2,a052410a) | |
3468 | Z8(5228bdf8,cd28b9f5,e944ec3b,b2b9fda1,702c2408,7a801380,fc7a6a1c,04a14159) | |
3469 | Z8(41151f0f,b81dd140,c2358875,1f2ada72,767caceb,71da3180,39c7a57e,6bf4156e) | |
3470 | Z8(d6d387fa,966053c3,85c315ee,ec54feda,c2feebb8,432b8bda,5af8a4cf,4f5d5376) | |
3471 | Z8(1bdfc5ac,c469bf34,affd4119,052e12e5,733e129f,00e28c6a,24026e65,063b94ad) | |
3472 | Z8(80568719,49e45d88,ebe8412d,a36141cf,15b24aee,e3d6c51e,744c8a9a,9199875f) | |
3473 | Z8(6a04edb1,261729a8,ce514ea7,44a6cbc3,69ed7cc3,8817d2dc,893f7534,9ffa1400) | |
3474 | Z8(d48640da,34857205,ba1592d6,b8c10878,221ab0f0,00cf8ec8,8a12a532,9f34e04e) | |
3475 | Z8(a7a47efa,038e8bc7,bc90ba05,d8a5ecb5,63858ecc,b8e1c8cc,c73b93c2,827310d4) | |
3476 | Z8(42a26ac9,96e1deb2,98f04e1e,b63ae3f4,8c4d0aca,38532ccd,c763e962,68769ec0) | |
3477 | Z8(a102fd37,6bb4590f,2305d566,a513d723,804efb71,5e2bd475,8a0589d7,a186984f) | |
3478 | Z8(67dca50b,19da2da6,c5640310,48a6da3f,0649ff60,90094d5e,e280c057,c870e68f) | |
3479 | Z8(6d377e19,6051283b,f8e53a58,8731792c,1ad45139,f889655a,2ea96f5c,a98e7eb4) | |
3480 | Z8(b138ea2f,385c0ed1,9abfbee7,7149d74b,66912ee2,d125c745,a997c052,a147debf) | |
3481 | Z8(0bb9c619,1c77c05b,a5f15700,bbf663f4,04bc7328,3cae6a50,8a689f24,70e88eae) | |
3482 | Z8(42994778,8dda9bb5,347b2516,a5a7f18b,13dab2ea,b2f3db55,2992e3d7,ce81f2a4) | |
3483 | Z8(102db868,63cca6fa,ca9b13c0,ba43fa97,ea868373,f290bed3,8c027270,0cd96dc4) | |
3484 | Z8(4b4fb85b,d5019902,06d67d81,99e239aa,576cc8f3,f251f71d,5386b130,4372c17f) | |
3485 | Z8(74a29d01,24763c14,727dc4c1,9497d631,7a5852b6,654928a9,c05837f7,a87220b7) | |
3486 | Z8(937e38ea,4e53279d,0b023d43,9d12361b,73f921e7,dce9e47f,6ca154ee,aaa17f59) | |
3487 | Z8(a83be356,6abb7dc8,72123154,2fdf117a,792c28f8,0e17175f,70c037b2,660e1b75) | |
3488 | Z8(aac7f45a,fea566a8,b39dfc9a,258696e0,7a086b1f,4fc00282,4e44eca1,d4782a41) | |
3489 | Z8(b9322c56,6663dc6b,60e9b579,1fc2138c,68da1ed6,6a858888,f5c8bf15,d36ec5e8) | |
3490 | Z8(28efa015,3b8a79f0,4f4ba995,da0a9950,535feb30,6c62f313,7a5fe012,777e8010) | |
3491 | Z8(338c5a38,2e716ad0,61054419,1d3c343b,2e762b84,723e7ab4,830a98d3,93c38e63) | |
3492 | Z8(0f858b11,16a24d08,ecb3390c,64eb4cb0,626a79aa,fc4548ff,9d6aa870,2bac2c0d) | |
3493 | Z8(15453ebc,a701355f,d6c342ee,ca2a3bc6,be6ca7ad,0ebc3ae7,fef4dfdb,a67a7ecf) | |
3494 | Z8(4da4394b,89d6a0e7,bdbe26f8,a4e3eb9d,0fa2a98c,eaf034e6,7b653b16,994ffa77) | |
3495 | Z8(b69532b0,74f40cf4,24ba54bc,ea3bb719,a726a53a,7e711ac3,771dadc4,01e6e881) | |
3496 | Z8(a832d771,5c12fbc1,7e4a4bac,79ad0016,b6f9068c,20baed48,e8aef327,8af87313) | |
3497 | Z8(4c892785,0cf694ec,8f6e82fa,6c2e0aa6,146c1a56,da84e9c9,7b14283b,029ceef5) | |
3498 | Z8(3fc79fc1,c177b3bf,a1361edb,e2e7eb32,125b042a,6dc86660,a2afb901,6c1d5f04) | |
3499 | Z8(fbe80f81,2ea9800b,68c30665,be682f2c,8b2f764c,a5499b92,0fd77750,6aa0b8f5) | |
3500 | Z8(7fb5a54c,91b964fc,e8d4ce8d,3683d895,7b429b59,2632cd59,bf880628,801bf1cd) | |
3501 | Z8(7427b7f8,29ffa438,2c43caed,a928993b,6ad5748e,9a6ad5f9,2971a477,01049254) | |
3502 | Z8(2984c95c,2f6031ae,d09f06cd,aa2a6e24,8b16bde4,f8537b03,6b2b4461,c88fb5f4) | |
3503 | Z8(20e749be,c19ecb17,b1e9010e,649930dd,c6af2cda,9b18a787,602292f4,ba07524d) | |
3504 | Z8(22d169b4,8a6e2e61,b67b36c1,462b85f2,f4f1a289,6de1f549,d3e587af,f47f3044) | |
3505 | Z8(b39e19f1,66df1718,626b3e54,d8d49d0e,780d603d,ec59ee7f,cc466a47,826aec93) | |
3506 | Z8(90f9a939,ec7c482c,d4f01abc,82bc1a66,ce342d45,a2523247,852e364b,e8d9cacf) | |
3507 | Z8(adf2db6d,393e4170,60e0f036,16a45a0b,3e14bd7e,a25787a9,bda649c1,27c39743) | |
3508 | Z8(968366fa,853f035d,34d4e94d,f60ff228,f9d05dd7,cbdf5f19,f7648bc3,dea8ad30) | |
3509 | Z8(59466820,44282bee,3e839f1d,16d876df,796f400d,71fbec38,1c8ee629,62050b1e) | |
3510 | Z8(f4ddfcac,d8a6edd6,a7bcad2a,f2b3abf4,ac3d7779,9d82356f,51581e1a,b08ac97e) | |
3511 | Z8(67dddb23,641a3888,ff7a246f,ee1d8d55,85d5298b,98e86851,fccfc4e4,ac4a06bf) | |
3512 | Z8(cebb6fa4,c342bd09,24a4fbbc,e57e6ef6,02b4e380,826f9d50,d3d7115d,df88214d) | |
3513 | Z8(a08a81f9,48b49953,00863964,9ffb047b,1fc12fd8,1d81722b,1408adae,fde7dc93) | |
3514 | Z8(080b605e,3329a4aa,b91c8042,d4dacb65,ac2a8410,374bd953,a221dc10,515f8b28) | |
3515 | Z8(6dede440,3a51a899,8cd35976,a446eb01,f80267fe,8d76fa03,e5261cdb,ea5ed3d8) | |
3516 | Z8(ed0d9006,53bd35ea,a1b25f55,eb7f07bf,27279ab8,141e8d48,f26e53ce,b269cecf) | |
3517 | Z8(2d9e915f,40656769,9cce6ac0,5625f474,04e64543,5820f080,86b5d248,2e5edfb6) | |
3518 | Z8(61f65a5f,ac9f5513,79f42a82,6975797d,9f6e957d,ded4c491,7bfbe355,f97e70ad) | |
3519 | Z8(6f863f53,8800fc97,51f59c1f,bd28878b,89cc5d7d,dbab0a56,4b1984d2,09f80db1) | |
3520 | Z8(1f883dc1,0b3d46e9,872e8984,4ad3a69f,373a68e7,d6b50da1,459d7ac2,095890c1) | |
3521 | Z8(442f56a8,1adcfaef,1651fb1a,d45ad971,afaaff4b,12197fc7,1ba57aed,a3524e61) | |
3522 | Z8(a4198bf0,7d3db354,44212e48,7159cdb2,a17fc867,31f022eb,5661293d,2a421338) | |
3523 | Z8(3cdc6e62,e87e6536,a070a258,2297fad7,0e016e83,af2f6f63,ba7446f1,0bf7f2dd) | |
3524 | Z8(b3877a34,97160bad,fa2941ce,f572f914,591f31df,d16b80a6,cda7976f,a07f0d07) | |
3525 | Z8(bda873ea,cf3a8080,30ad3848,447e2bf7,fd49196c,d47a2501,70b5c814,9a4d1823) | |
3526 | Z8(9e82fe20,361414fe,02066304,0fcce0af,8d6b4902,03094453,46b3182d,61589e9f) | |
3527 | Z8(235abc9d,c74c1fa8,a6c3f3a1,d73716dc,e2a08c1c,9ff2144f,e08ae6cf,f3f58f7c) | |
3528 | Z8(ae455170,27fdf08c,24558516,c50e5f2b,0717f3c2,1a2b38f6,5ad4fbc6,a3940673) | |
3529 | Z8(20e8de09,1b61c760,3b4d1eee,78001b19,2a8be7ed,510f7742,7b8b5803,e7903810) | |
3530 | Z8(9fba107e,edfa3fd8,b4be7d15,a3da86c1,dbfd475b,510d1080,63b7d0e5,feb60c00) | |
3531 | Z8(f8296782,45c14f7c,c00b840c,e09309da,7de53638,25c2877c,c821276f,157bc44a) | |
3532 | Z8(2a71998a,fc3b1847,0523fa57,99421581,0e5b18cf,6ea02556,c060b470,3d3d4a19) | |
3533 | Z8(a419183b,925d4a44,4876aee9,f301dfbf,2c3131be,e79b40f6,2da99587,49d3649b) | |
3534 | Z8(4f7fc5e9,52627c89,248c7cd3,993aec89,5ce85065,4a1d6e49,10ec31dd,223425fd) | |
3535 | Z8(13c4e909,fe0bd666,cd79d96a,8a466cfc,9f2eceb5,b402cded,d8179f34,72568612) | |
3536 | Z8(8d04ddd5,522bd50f,e7e30d20,b891c9dc,3b3f49f9,459439a2,2f162131,e0e1e1ee) | |
3537 | Z8(ccf5dfb6,21be7d52,35ef4646,78feaedb,fed65311,88baf0b9,6d36bd02,32c38866) | |
3538 | Z8(60015701,6099b702,de78aabf,37ef828f,a1fdd738,0ab71ba8,9b2a0d0e,144d9edf) | |
3539 | Z8(9722b323,aabdf7fc,a409089c,5fc1e8e9,e75c29b6,81691afa,cef3ee5d,5aa3d1ac) | |
3540 | Z8(a0ac04b0,70bb64b5,833ad974,d1ffff36,446df649,017d35d5,100f2292,074b4543) | |
3541 | Z8(8a50537d,8fe292af,2f08ec23,50ca5e5d,430a4ece,548d0f97,b95d2fa7,a14842d1) | |
3542 | Z8(0b92b930,29ca5049,0fe0156a,e1318900,825aa5b5,f8cfcba9,630aabf8,fcb5445c) | |
3543 | Z8(9a0f5d31,1c166668,7304a96e,bb93c230,078c9f55,647bda23,3753e8ff,15eac029) | |
3544 | Z8(56fc200b,cadee2ab,192f9045,01d9c811,f46c518c,ef046684,45bb2352,54e58c95) | |
3545 | Z8(ecf53a43,dc827246,c1cc65cc,4e8e0570,32832176,4adcdad5,e3e3f9ea,53640b1e) | |
3546 | Z8(bdbe5ebf,deee024c,61a4a506,ccce3cf3,7efdc1b2,87642e3c,60b1f57a,c4795e52) | |
3547 | Z8(96270959,891c654c,769a88c3,a628bc72,a88bcda5,04b2a8d1,860965c4,80f42da2) | |
3548 | Z8(e0b600fa,cdadb41d,779666c6,8cbe391d,9d9b8fa1,7a4d362b,c4b1161b,5fc1c961) | |
3549 | Z8(a2be4ccf,eac2b0ec,7e6a5d0f,b8dd4fd6,ba13e23c,31a36bf7,1ba6eb6d,ffbddd7a) | |
3550 | Z8(f937a44a,e3463f88,78e73179,0052e7bc,450af890,072ce84a,88311445,9089f9fc) | |
3551 | Z8(30a4351d,c55167a1,fa3f8b05,4c3db965,41a834c6,9e3e5c31,ce8d2f34,6e386a9c) | |
3552 | Z8(1edfe4e9,269143d2,7be878a3,8db83ef8,237b75cd,cfe22795,6a22392a,f69e73a5) | |
3553 | Z8(697f008d,e28ee23b,872b9211,c27ba0fa,b55197f1,10eb8972,ad4232d8,32885c70) | |
3554 | Z8(d17f3700,0a90c686,5c1b804e,fbb9e046,74d7e87e,290f5e65,ba0eda6e,7f0a3d59) | |
3555 | Z8(7ae4105b,ca86b8ce,f063c526,47baea9a,56c14628,9004afd9,b5cceedc,acc468a0) | |
3556 | Z8(e8859e70,ea85f38a,cbc0c2ab,09c952b6,c23e6e90,dc4f858c,d0725a90,f074d7f2) | |
3557 | Z8(537de54e,203211a6,0b7b3a9f,4a3913b2,00a065ee,3159bd0d,efdd1af8,d9cee46e) | |
3558 | Z8(d0924492,4587ad9e,380e9e6c,18b990ed,f8ffb310,fc189f47,35cbf567,ba71c4b4) | |
3559 | Z8(2c36072d,fe431c71,5a84f66a,8a9fc2ad,f7245ffb,44397ed8,caea6bc4,332258b9) | |
3560 | Z8(3475bcb5,2e9d7db2,91f2d154,98d33054,48eec31b,cc0f2498,60065a60,fdb7e599) | |
3561 | Z8(252505f1,4b9419d2,267726fd,eaaba8b9,92e20407,230a017d,dd6e1094,6d4bb33b) | |
3562 | Z8(6d25f3f8,5606638b,94625ffe,cdee81e6,3ed8a673,12c39322,95425aa1,15a06324) | |
3563 | Z8(004bc64e,1caabb1e,7f862031,b0405a54,d823f33d,55f54469,22ac404c,73372e85) | |
3564 | Z8(21ada446,76c8145a,f93bc046,04f6d1e8,bb9b3017,67bd1edd,9c1c7847,43a1fe4b) | |
3565 | Z8(e129d1b3,2faf1bee,2690fdaf,97289b37,f9cb1502,e2d87860,a130278c,60bf06ce) | |
3566 | Z8(946ce444,c2e9735e,c4cfe75f,a389b800,3550dc6f,4a7776d4,3fe59cb4,b245e477) | |
3567 | Z8(e52b1e88,486135a9,0482f361,40af30ef,7eed607e,a268d3c8,7c4fb7c3,b42c6263) | |
3568 | Z8(2890b4e3,6901b449,24bf0b0d,2dc907b5,8b467931,f2f3ee5e,8c168473,5e6e0401) | |
3569 | Z8(45298fe4,63055caa,a800a985,bbe6a9cc,7e224591,693de78d,39f4435e,7d8ab12d) | |
3570 | Z8(902f1948,589f4e80,50334198,467d34be,91273ee9,3255bd4d,9cd4114d,78592c7b) | |
3571 | Z8(d80d90cd,eae86fce,ac80776b,ffa08395,d9177d6a,b2c656e6,93e895df,216aa2fc) | |
3572 | Z8(0a71fbe1,d4894e72,ce4e95d4,cf210c4f,2dd10905,4ef42a95,17013ce3,71ae652d) | |
3573 | Z8(9740d3e3,3984ca9c,8420cec2,d0846dcc,b9b9609c,f2ea3294,2eb63b2b,e835cd1a) | |
3574 | Z8(5e2e6968,71eb5b2a,8359fe73,df5c400e,45c7600f,d26aa746,d95951c8,b60de064) | |
3575 | Z8(9b5e950b,6816a569,b38a2548,2007c1b2,0744db44,cfd53cad,bcc8b67e,1dc872b8) | |
3576 | Z8(329a75ea,f7eefdb1,8e423a2b,f7a839bb,f0cc5e25,262d0a06,eab9c1e3,91fb17ba) | |
3577 | Z8(2624e455,01499524,7ebbf090,d2fde5ed,3772103e,eccee225,4c1aa2b5,bf35e5ae) | |
3578 | Z8(9d79764e,eb63b668,00fef95f,b847830e,ab74e469,ca9d69c7,84d74fa0,5fd2f477) | |
3579 | Z8(37b35679,292e2232,1f00301e,3f253087,65fb7d99,cd788a57,824124f2,7d394584) | |
3580 | Z8(acbdd961,af0c6cd7,c3ec9390,00d9183c,5a5ab4a5,40910d03,4c92e776,55654be4) | |
3581 | Z8(5b8ac629,1bd25f3a,f777cd08,6beaa63a,7ff31e60,7bc7190f,bac4b9ae,5b59c410) | |
3582 | Z8(e933f4d8,6b10589a,aebbfcb2,2a26dd52,a80bfbee,8d2dfe75,a197e480,ac5f4325) | |
3583 | Z8(2f77d094,614b8296,8720e1cf,52d9ba2a,0a28692e,a98f6c92,0a558011,f6970078) | |
3584 | Z8(42f8985d,cb5c8e5f,fa25b4b9,76981dc5,09ec1968,99cd7685,c6f4e9fe,5f2b94cb) | |
3585 | Z8(fbd45424,7785d99c,f451b5f0,a1a010da,af450832,c4be8de0,01808cf2,a726c840) | |
3586 | Z8(dff355fb,d59ccb50,d04f1049,182f84bc,971aa007,2a45b755,09c7031e,08d2e8d4) | |
3587 | Z8(302d6db2,33b2a5de,d3206c8c,66d50802,6438ae90,acd087ca,c1ae5a33,52d49063) | |
3588 | Z8(6d58c886,5c4b1af8,37d42920,0bcffa4f,c9a38d35,e348f131,86817382,33035112) | |
3589 | Z8(384c1f3d,dcdc8ccf,c27be72f,67ae9bc3,c125df63,e735a48d,ae78a68f,a29bbef4) | |
3590 | Z8(b7e5c202,a738f7cc,047e1cce,1425e52c,9bbefe03,94fe561b,6858c9cb,2b441c21) | |
3591 | Z8(5df5a5ef,abbf9405,59184987,d65f720a,ad9692c8,b51c30c1,4cb8df58,8c9a269d) | |
3592 | Z8(c24ba012,7b7a81f4,851e68a5,dad107c7,fecb43b1,7545a94d,3b931cba,1e3ed9dd) | |
3593 | Z8(e36059d2,81171dac,5ed41fee,87270128,2c5f774c,b1166acd,e59be72f,1f8e56ee) | |
3594 | Z8(cadbeebb,473def00,8dd3c28b,86396afd,dfbd9572,514574eb,db35e58d,54ed0d7c) | |
3595 | Z8(aa833546,8c20377f,0c198654,b90edb3e,752496d0,a2184e30,779f5218,68d2b4cc) | |
3596 | Z8(970f3e0f,453f1e03,3912c6d7,00a9077e,1a89ab00,ac106d39,1b34860f,e615641a) | |
3597 | Z8(9dcd1915,21a90ced,feaf2b07,55288761,4ba22bfe,a85898a6,f8b5ab7d,8a8cbfb3) | |
3598 | Z8(73d7de7d,c9139ce1,a4a4568c,1fc94472,1e63c97f,7ff71897,4f108478,87744d44) | |
3599 | Z8(96af44bb,24dbac03,3d32d32c,d2c1f8cb,1a52af24,0c12f106,22f691cf,0f75f59c) | |
3600 | Z8(6f1fb081,796447b0,ca8df490,f50bbd12,14c1b011,29cf944c,69a12579,062a8b42) | |
3601 | Z8(dc87d1bc,a98b61a3,9f106a31,ccabed31,cc169e62,2ef2bca2,a9d955e1,92aa615c) | |
3602 | Z8(983071a0,254e41ea,3cfbd511,7a2376a3,c35cc304,97ca8e09,edc279df,ada9b5f8) | |
3603 | Z8(212e09c2,4fe1fffa,37329e09,c922bb09,777e2b20,3b9d6f7b,5cdbcd5c,399ac4e2) | |
3604 | Z8(28a11449,4b2abc04,dec77c9c,327a4c2f,c4433986,936cf8ff,4368facc,912205a0) | |
3605 | Z8(c62b9aa0,6fe36cba,8d95a131,b91c77bf,3cb6e1be,44f40266,3ba8d1ac,f02dfd39) | |
3606 | Z8(0f0120e4,d81a0c88,8553f90d,9d50211e,b823d383,b760e65d,e8e54c76,e0f8623e) | |
3607 | Z8(c7292b07,b4fbd3e1,e263a4a1,d12c56e5,9ab6dd7d,f851849e,ec783cf1,f39028ea) | |
3608 | Z8(0dc08f80,f55471e7,12345ed4,43d6b9a8,e19bb7b7,182fc7b2,ea57304a,ead2cd07) | |
3609 | Z8(d0d28eb7,5418a47b,2d7018a8,28f84ca9,2b0d2cb2,7fbc56de,0ede895e,3673c026) | |
3610 | Z8(d449e604,b14a1e0f,dd268913,148ce328,eecc2a06,0e0f108d,d19e3225,4f293537) | |
3611 | Z8(c3854642,50a343c7,6c09a496,b0f87fb6,52ac41b2,8adbd078,9e62591d,d2dc182f) | |
3612 | Z8(d1a8b83a,87584913,eb3e2e45,ed52b0f5,8423513c,cab4d7c5,ef8bb5ff,8416ea57) | |
3613 | Z8(a31a83fe,533d09ea,f9151f2a,4411f9d6,185ef6fd,e379d081,3209d8f9,25d15d9d) | |
3614 | Z8(361ebd29,d9c91e28,dba363c5,6ac42c5b,68bb1661,ede6d6af,9d3dc123,afd84c1c) | |
3615 | Z8(d4073969,c6cde809,3f41b976,2362da44,7484fe9c,8d13743f,ec28d887,e595f56f) | |
3616 | Z8(487699c9,fb51e77b,7024402d,552217db,9f87c739,2583dd22,6470a93a,03e76ba5) | |
3617 | Z8(a5633400,a6bf3e2b,b2c41e96,4551d9fd,83a5dcdd,61b4b601,9ffda6b8,89a9151c) | |
3618 | Z8(120f6c9a,f13d90a2,afa44ff7,4024c741,e82b0360,82cba50e,f191ea87,6bdbe5a6) | |
3619 | Z8(827a8825,96612551,5b7e4f96,eebb1293,8516a779,b2480b9f,0ccc6e64,e003fb61) | |
3620 | Z8(11c2cf70,4fb61526,0aad15b4,c94c9e22,142631d1,fc2920f1,3977d08c,cc29c284) | |
3621 | Z8(f57fc2ef,17ae64f9,7d535ebe,c7d2b38d,4db51d2f,66d855f2,e5cafebf,ceda6897) | |
3622 | Z8(596aa5e5,9c811035,d5b88dcd,093a81dd,7aef7c6a,8f59e1a9,1152c8ce,8c1a25db) | |
3623 | Z8(89c0e6c8,099bf63e,e6f4ad85,dcbd9c2d,de75cfe0,973cd96c,47fc10f6,b0ccb277) | |
3624 | Z8(b58cfede,a8898045,2dbbc8cb,ba4c622b,ef2b5cc6,d78f6230,fbbaaa3d,015469dc) | |
3625 | Z8(077faa48,9b970acb,f6887929,5b6a9cd9,f997f12c,0ff06942,6c4835f7,502370b4) | |
3626 | Z8(a4813b16,4921e2f1,63ce5c1c,f37d1f3e,8afee107,f394f1a7,cc80db27,fed10d8a) | |
3627 | Z8(42eee6f3,5262a2c1,da7add1e,3b773f5c,91245759,0911374a,9248777c,42c9cf54) | |
3628 | Z8(f34ef07e,7e40e99c,f665e7a4,49f4473a,b4dbcfa0,66228e0b,9e9172e4,d32a2cfe) | |
3629 | Z8(0372f823,a55cb7d1,52163b9f,9784bc15,ad012aca,aee6469f,7dff4543,34b0f2aa) | |
3630 | Z8(e6b62ce9,8ccb72b1,d27fd01f,80ccb899,796159b8,5b043ece,bc193b1e,329edb5a) | |
3631 | Z8(f383e5f7,dff48934,9991c584,247f2246,07a4040b,bd7f8c04,ed22d4ff,d6486959) | |
3632 | Z8(d3b7568d,167d24e9,302131a3,5b42ee46,610d6dbe,a4963165,81bb476e,783b547f) | |
3633 | Z8(4ac8eeec,e3527284,de6ba45d,02cdda41,5096861f,270c8f42,33dbe816,5f60a4c1) | |
3634 | Z8(a59eac91,c80b6210,e10d359a,a745eac2,dc2e5483,30976893,1114ad60,155f1f88) | |
3635 | Z8(ebbf9626,bc1380d4,a7960c02,93fe4334,4a0b7ab1,bca3e797,ee5cd8f4,911e2495) | |
3636 | Z8(645cceed,e98a7a43,93f8690c,ba68cfe7,dd7fec63,21c59b02,b870e1c9,b8c4e7ff) | |
3637 | Z8(8f7f74e1,577ef3db,27b1fee4,e7bdc4b1,a441575a,0e88c8a4,2406b198,f068db07) | |
3638 | Z8(089bcb78,72b98143,e3875039,83a27f97,7315386b,43714d47,98f17b4a,9c0b5877) | |
3639 | Z8(3ed55abf,c2a48fbb,d7c12e90,70cc9e36,8a8a24d7,eb006d9b,69209c2a,ea78348e) | |
3640 | Z8(d36c2ce5,32fba94b,91aec466,57019f2b,021aa0ae,4c80cddc,d8826194,9fb39eaf) | |
3641 | Z8(deae7597,84f068a6,115eb61c,695ab745,5fc75809,2f2d0d03,89188f16,63e25e12) | |
3642 | Z8(c6ef5eea,5c51b54e,aa9402f5,5f8fd9f4,62b9569f,6f37db93,4a933d16,4c1cabd4) | |
3643 | Z8(f52a2313,ada7860e,05a4a3bc,ee40dad8,cc7f1b9d,1d0fc3f4,0fe4b316,f4b72a65) | |
3644 | Z8(4805a40e,815e5ca1,fdecccd5,94ea7ca1,dd26b406,f8553b1e,2ca595ab,00ad6c5d) | |
3645 | Z8(ef79bd4e,61962ee7,6310bab8,33e5eb52,5a411cc4,2867c3aa,6f2b9623,45607157) | |
3646 | Z8(71d98fea,a8f88bcc,14b2e044,44dfaa9a,a3a50c65,a7dfc2f9,7d507294,e76030bd) | |
3647 | Z8(65a7a5d9,2f672e09,9af670e2,8a7fd704,d11aad45,a1a33f47,ef4e1042,82b077fd) | |
3648 | Z8(27e385e7,0d1e0f39,7159793e,6e0ff553,1c134a40,d9655f1d,115d9a4d,e2e8bafa) | |
3649 | Z8(b4765a54,fb1928e7,55a2e4c8,9ab73f47,04f23425,347115b8,a1b3eb19,ee618e02) | |
3650 | Z8(fca6a07f,b0d36ab2,69085f56,d75f9988,c1b2696e,c602f5dd,5b76c47c,513597f8) | |
3651 | Z8(7d93875d,bc0a0c71,9c0c8328,3a0163f5,ca042a30,12a37dda,7dd90c25,237db5f7) | |
3652 | Z8(d4db5c6d,9680a2f1,878af916,f1e667ab,6bbb9463,20ead69e,829dad3d,b6ebe349) | |
3653 | Z8(8cd4a9b9,f66bf830,1e5f55df,7732b2ce,0def00dc,022e50a9,499c9396,c249f347) | |
3654 | Z8(818e9e74,7280dc98,b3f1a316,02adbd23,a8f24d54,1ec9016f,60c04893,ce90f461) | |
3655 | Z8(e02839e9,6f973e40,6915cefd,a2f59c8a,6fcb5a2a,de0cc00e,e0ef1efa,e8d5cca2) | |
3656 | Z8(b3660d7a,e4e0886e,2e83b25d,4e1edfb2,fa4f8c07,b1f19022,74bd0f2d,1325ace4) | |
3657 | Z8(4dc4a27f,9307f63b,00f912f6,6f6d706d,e6754124,bd0544b0,b3bed437,ee3a10df) | |
3658 | Z8(4381adba,d77f699a,5ee38403,c7dc0ccc,0877983a,8e8f32a7,952a54ec,758d8cc1) | |
3659 | Z8(d644dde7,0b928c7f,b6f632e2,23692d91,64f7c493,3154d592,b3760ace,91b53d27) | |
3660 | Z8(a9ca3fb6,439b4fcb,5d6e2a8b,09a88b6d,842dcab7,4610b47f,2a1c8c74,25033928) | |
3661 | Z8(eb246d71,4e583caf,2eab27ef,44e42d5f,7a682327,51b2474a,302d30e8,ba227812) | |
3662 | Z8(59871702,e35c2c61,7850195f,c62f1c79,20a416bf,190b35fb,9c222bd0,12564858) | |
3663 | Z8(de179755,b1f3a6de,6e9dd3d6,947dd974,e245cba3,d4cb06b4,455a7ce6,4e21b866) | |
3664 | Z8(77596f5f,2cc3914b,6f6dad90,4e551d4e,4bc3f82a,d228bcfc,18af315a,31d86de5) | |
3665 | Z8(edc8b061,3bcdac29,59a1f802,8ea4a61c,4693179f,00357787,cca11095,c14823d7) | |
3666 | Z8(f41057f0,5e51bc2f,129aab8f,d6186ecc,f54fa91a,326213b1,4d713b3e,bdac8396) | |
3667 | Z8(f4298b3d,91e17b05,a7b00ed2,f1f222ef,348164c8,8fb0c1d3,4adfa2b3,e559f20c) | |
3668 | Z8(c002b683,9c1c67c1,288290ef,446d3119,999cf3f2,acdaa2f3,b6b78734,ceff2b44) | |
3669 | Z8(d84e83eb,1086ebde,577ba0b1,6a1a57ae,bfe2af66,53dcc011,df6bd592,740fa243) | |
3670 | Z8(f25ed5bd,78e0c43b,4a05f02e,fcc14a01,e53ac818,923c9416,6b960094,9afdf883) | |
3671 | Z8(ddcf31c2,2b2bc78b,4f42591c,53de09f8,e4079dda,21e9f481,bd9824f8,3bbf8022) | |
3672 | Z8(06eb10ae,2b550288,720c74ec,83155412,a368c101,badb327b,dbb12b2d,a8b4f746) | |
3673 | Z8(4dcb1f3d,116edfce,58e03cd0,a5d97b31,b0b7e538,d2c503d6,a0fb21dd,e3f043b0) | |
3674 | Z8(0c21b10a,a99fb1dc,410d2a0a,00de55d2,8c4c158d,bf95dc52,6cefca7e,c5bfc544) | |
3675 | Z8(d7dc4746,c6280cd1,9815f155,6f0e955e,770363d8,3658d1c7,05800221,07646e9c) | |
3676 | Z8(e25a7a30,14d6acf1,3384fe68,89dc571a,a4ec8a69,9efa5958,dc5a7afc,7492660a) | |
3677 | Z8(ff027ff9,66d61a5d,7f2b759e,bfb972e4,87a6e499,280aa457,e706b930,b619d4ec) | |
3678 | Z8(458375be,2b5ae464,57573aff,5569dad0,fbb56450,4354320b,ee262d89,c50e16ca) | |
3679 | Z8(47c41c74,5ce82396,51d822ba,a1cc5392,4742d2c3,beb2aa08,08bc6714,60234a5e) | |
3680 | Z8(b01525c2,13534f10,d189bc14,1dce156b,1333611a,1b1e5481,6d863398,f531ae63) | |
3681 | Z8(282d64fa,1df0bd60,acf83117,0238eb08,5f8c9eda,f5a177b7,cb8e0472,e63d3aee) | |
3682 | Z8(7aac2e97,5f68fbc4,88a3329d,ca667aad,95b4daca,98fa3442,ab7f451b,a5e940b3) | |
3683 | Z8(02feb3b1,c6030a80,93861b12,b1828330,b872a1c1,5162708a,cfb96575,8aa5d126) | |
3684 | Z8(838acc46,817edbdd,eb9ed434,03a45348,f34196c0,43f366ae,e2e7e5ce,9b7744db) | |
3685 | Z8(b5634f95,f962e5da,01712cc5,c4dc847f,9122f2b2,20daf9e1,581fe125,2a392e17) | |
3686 | Z8(ba918552,4c096b6d,80127883,f3bb951d,d7949d18,16d0a422,a21e02c9,4d3a6ea8) | |
3687 | Z8(4e88a691,2c8c7e90,747e2301,905e00a9,e0af05f1,ece13dc1,9b3590dd,5ae87fe0) | |
3688 | Z8(0c6dc234,7ae10092,db9426fb,e828b048,48ed2c69,10d42061,d947e226,df786115) | |
3689 | Z8(91578803,23acbacd,e27358fd,6f27fcca,74eb2784,ac4f9ba9,f4c89c13,249f75b6) | |
3690 | Z8(d8127e82,a90c225e,e0570aff,34d1a0d4,284b7de8,299458f3,8d4b1eca,62c9ea50) | |
3691 | Z8(4c500623,e46415ed,f9cd7c0b,6089563f,11b99c80,390e458c,4c388e73,2e950f92) | |
3692 | Z8(04173472,c73e2d58,6802e5c4,fb3049ff,18a114a2,77e75608,ace26965,f02e2b7d) | |
3693 | Z8(d6159234,85a9476b,c6aa7a91,3ded029d,4591db06,30fd9780,54210710,64748add) | |
3694 | Z8(1fc4bda8,1a1cda87,4b82afdf,c958eabf,dac1677b,74b61381,0f16409a,a90c8577) | |
3695 | Z8(1073eab6,bd37ebfa,80d81997,9177e89c,625b2ecb,54a72659,7929b88e,f171744f) | |
3696 | Z8(73aca178,ea82131a,20afecde,01f42622,f27f9600,6ed74010,e0dcab4b,4be44e6c) | |
3697 | Z8(cdbe3f20,1b7135d5,1c31c059,9d767d18,0f6e67fa,55aea6a1,dad76e16,c6bd2855) | |
3698 | Z8(c4197a43,6621b3ed,8863448f,e3cca24a,d49f8f0c,082ff617,3a10912a,dcb4f3cd) | |
3699 | Z8(24806456,62cae4d1,78892a49,ee3dc019,de814369,041f69ab,2e80faf7,e0e842db) | |
3700 | Z8(eba137dc,adb093ec,90637f71,172a016b,1f0b4a69,f2040651,17220e64,7b67cc71) | |
3701 | Z8(c36405b2,2f3f5160,2a719f9a,218b5198,c76a52d0,c9d9503d,c9e780ce,64d26aff) | |
3702 | Z8(598799e1,2af6c81e,b0765d26,31d363b1,2c569cf2,cce37369,0d4bc042,bc714aee) | |
3703 | Z8(a944f5a5,d02032ed,ee9d2408,de3717b4,3e6b2c39,0ea7ae92,26911948,321bb972) | |
3704 | Z8(9bc04c2b,3be1dfd9,c0c6c045,90867aea,aac7d5b3,0a2e31b5,927d6420,58ee5ac4) | |
3705 | Z8(cdd3a1a3,6d25d409,afc4d313,6efb0d52,d28447f8,2bf06b80,9126fb1d,bf5211c0) | |
3706 | Z8(763f7dcf,fb510a49,55187d8f,0d9ca41e,05a990f0,01f3e80f,921e0622,ff281864) | |
3707 | Z8(d6886516,84cfe4e9,1519687a,82120bc8,6e4bb175,b9dc5207,52b71dad,11b34067) | |
3708 | Z8(b85d01e2,48849857,1991ba48,e7fdc522,a7ba1508,423c8397,13df8e03,bca6ca97) | |
3709 | Z8(638a0e5b,1f84187b,cc54246d,d3f1e316,49acffac,17f36543,b3824494,6ffe58e8) | |
3710 | Z8(e054159b,0d82366b,81091d86,eee46e3b,decf45f9,eacbe2be,a171ea79,04c47015) | |
3711 | Z8(ea8a6a21,c2ca6dab,8d9e3d2c,9b3aa5b6,170f2970,dd240403,1a02e414,5e37913c) | |
3712 | Z8(3741a61f,539eaa35,a8f236bf,7483c07e,df48c549,eaeafa55,28c26268,066d6e05) | |
3713 | Z8(21f637ee,f2e8646c,9e1988a8,c4c43552,760286e4,5a4e021d,291a0969,792d9edb) | |
3714 | Z8(89e35fd0,7420a26f,3c87e052,6c7d6b4e,c91c2ccd,733570c0,fa8a11c2,cfbb5d3c) | |
3715 | Z8(ee80ed49,4d4d6d55,559151a2,a09b3c0a,57861192,69f5b45b,25470e04,210c9ca8) | |
3716 | Z8(0da83c13,22e519fb,8e6b6b85,908a815a,4a9bffd8,de9bca61,f5e77c44,4eaafde1) | |
3717 | Z8(c10aaba3,63b3288a,c6d1b459,b7202ac2,f95a37c5,549a525d,3195a948,60781ec9) | |
3718 | Z8(49a98401,4ec37817,b6282889,837b3c3f,aa6b8475,82face54,9266bdd8,12ed5756) | |
3719 | Z8(91f5be6e,6692af4c,bdb3839c,6213844e,8dccf1af,10bde956,777969db,969aebeb) | |
3720 | Z8(d4e65fc5,77012615,06141239,e9574068,6ef42d78,c048751c,4b06cf6c,e2b6e620) | |
3721 | Z8(93d9996b,2584a3cd,e7ed1fe4,c921f028,f9927f2d,83dda375,c840b2cb,6eab9fa6) | |
3722 | Z8(aa21c65c,243e24c0,7319958e,4129446e,e3c501d4,5598b8c2,16223348,dbe5f40f) | |
3723 | Z8(4d21417e,6c6864c6,f2b6a52a,82e2d9a9,f5bd8489,35dda92d,cbc8b330,b02633db) | |
3724 | Z8(7c4b0087,dd761818,b578f14d,48457f58,167a69fb,604cc802,faf4ad61,8eb492c8) | |
3725 | Z8(b3980e69,c1d30cc0,9c5c57eb,a6c53f4a,93b15700,41083d2b,8362dd01,80812390) | |
3726 | Z8(a802d4b3,ab59dd6f,19b34b2d,5f0816d2,21fac244,6a1d9147,59799cb5,d376e23e) | |
3727 | Z8(7b7d6aa6,60a30290,996dabc4,b0973b3e,98462f7f,99c55ee2,46501792,3b157524) | |
3728 | Z8(eb167257,ecaa9d21,124ed480,a6d279ce,9c8cc900,d3d6545f,33b680d2,d8a44ac3) | |
3729 | Z8(40c80840,3270655d,20bd685d,13b27c6f,00240faf,a536e81a,c929f61f,b080e63e) | |
3730 | Z8(57e29ba5,48fb66ed,adf10907,c4227486,f8d8dc6e,ad4e8b19,c632116c,1b9bb59d) | |
3731 | Z8(b37fbfa5,d36d6aac,92621107,ec4673ca,b2874554,a70c08f3,f0b719d9,8e0ec924) | |
3732 | Z8(b5431b88,f89c4da2,a58be887,e748b2f5,afbe8329,c048cb5f,9c74baf1,5193a884) | |
3733 | Z8(9231fed8,aa703019,690ac817,ac8038c9,f55ca27c,9a864ab2,b9951a6c,3397b4bb) | |
3734 | Z8(5e2b7652,1443e0a6,f5c9e2f8,664876a4,254ee773,7a50ae65,90ed25c4,871771f7) | |
3735 | Z8(03581bf6,02cf4380,67df8c6a,61d69624,519348c5,9812638e,1c1c4933,852459d3) | |
3736 | Z8(c1dc9c03,870bd45e,22151c0b,662c4319,a503b0e3,a548b27e,15fa63f9,c0de97ae) | |
3737 | Z8(498cc5e5,c5a3ca08,2399fd86,78d984a8,f39a69f4,2540f65d,86bf76a5,abe312dc) | |
3738 | Z8(bf6d2bf4,fd61e0c4,40d5d651,8844f642,7e665574,57c99b20,fa6724d2,61714ba7) | |
3739 | Z8(cac0cb89,fbd409aa,c45383cb,98426a99,44e1fc34,fd9039f3,b77e43de,301ce849) | |
3740 | Z8(eb4ac384,a2ceafef,a7f55c09,f0b4267c,3cdaf3d1,db4d86f4,8efb09ef,82425308) | |
3741 | Z8(99f52a54,6c7800e9,bd93e541,d661716c,0c75a4e9,a2891880,c4068131,b3c1f3c0) | |
3742 | Z8(68a6c170,b3e53de0,c390f4eb,f5e16314,902f70ef,752585f4,690fec29,478e3fc0) | |
3743 | Z8(62f350b0,ac35764d,a41d5cc8,2f078216,afe90ebc,cd9872e1,05a0da38,3db395b1) | |
3744 | Z8(5e67830c,72b2f769,394b5447,62576bcc,b43ed7b3,316ae1ee,029f7935,bfaadf64) | |
3745 | Z8(42c18850,a4c5e037,bddc57f7,1268a3ce,4bfcebf3,5fe8f7c6,5ee44d60,7073799d) | |
3746 | Z8(50efd314,68eaef9a,c8ac9a77,83ba748f,352ecdca,ebd7c8f4,b8dea895,f252e857) | |
3747 | Z8(b34c021f,deb81f16,477c0566,15d42868,b4bebba7,75b4c708,f63498c8,900ee68d) | |
3748 | Z8(b0eb3215,57bbc454,ec89130a,f642e276,f7a227a8,9071658b,65191273,45a56f51) | |
3749 | Z8(7c385094,5da84294,54ec305a,83140684,1c181b3a,2d972f2e,606065d2,f4637f3c) | |
3750 | Z8(7b98c53b,d2b7ab67,33d5828a,a6041d35,c3ce9db8,bed5fc88,b671fbbc,78e22b13) | |
3751 | Z8(283d3cf0,91da0825,b426a39c,e25fff4b,f1f75b02,8b0af774,603c62c1,af5e4891) | |
3752 | Z8(0a7426b6,c7efda07,90cba861,70bfe178,a92101d6,93246e8a,8067262c,32682a3b) | |
3753 | Z8(0a93e5f8,7373a7ce,e358c61d,a50f8176,632666e8,754c3f3f,dba5bce6,dee14462) | |
3754 | Z8(7fbc33a9,42ef3bf5,bd64c87d,71e60d29,844f83c4,d0811ee5,5e1dbe8a,ad8b61b0) | |
3755 | Z8(f59bae48,361cd11a,edb05d23,f7a3b022,f48e34dc,c76709a9,ca7b52bd,271958cd) | |
3756 | Z8(70c63729,2f37fb49,64e1bd8e,d869694a,91deb019,96d1c10c,a1707a54,d4ad4fbf) | |
3757 | Z8(f6f2b750,5357d69b,82e7e2d8,3442e607,bbdf799c,bba6f132,c9b663ef,8ee7741b) | |
3758 | Z8(0dae9669,bdbafe26,6d64f8cd,c0699738,d36e21c7,ab5a4229,e031650a,4328c097) | |
3759 | Z8(40e12adb,33c9083b,15c637f2,fb1d55b4,78b29e7f,3620d3af,c5551851,6247672d) | |
3760 | Z8(31ae45b2,0460a394,2d5bcf1b,df7fb530,29b5331e,8da9d5ea,49108ac7,c768fdc5) | |
3761 | Z8(29e96951,79e2ba64,117cc8cf,6c425121,f0f92276,342ad01c,8d48165c,911dc595) | |
3762 | Z8(8df98409,d6a52336,3d9993f3,6e5fdf0f,2afe2d24,db1a3a03,967e948d,cb5b7bb4) | |
3763 | Z8(6712196d,d8e55925,5700106b,b48933d0,b3f30994,82be857e,448d4bae,2c221575) | |
3764 | Z8(99732e16,778b7144,35781de7,ebb4fb4c,0dfda43b,d513705e,2b5cff17,5aad6143) | |
3765 | Z8(2ada5451,5326b4df,880bd8b0,aecc7e57,0a33d493,23f7dfda,965cfae8,849d1b37) | |
3766 | Z8(3729806a,984d34d3,e3d70392,f583b568,1ec0504f,c07bede5,ccefa5f1,af1c5a79) | |
3767 | Z8(07ec437e,f80ac44d,31486a57,16bbd11e,991d6261,53d573eb,26034167,2e7552ca) | |
3768 | Z8(84a3c513,4f225e79,a8b8762c,9e192c65,80f50a59,b5183f00,0fe25f80,647bbf81) | |
3769 | Z8(bf4ec959,eab58902,e182769c,dc75485e,7f199aed,0ceae762,f85d24e9,fdd1eb1f) | |
3770 | Z8(09da53ce,16ed0ef5,fcf05a3c,ffcd6dc9,61a43052,7cdefdc9,0fae5c01,ebc6a72c) | |
3771 | Z8(77c6baa8,aa27aaaa,5e1cf611,d616fcbe,b0b75c31,7d137898,e796bd48,96709a86) | |
3772 | Z8(6ac7c376,7580eb8f,62692305,dbefd5a5,2f2ccb9b,227e074c,c1e8799f,f1f89319) | |
3773 | Z8(7c445fc2,0c0c9503,de22647c,b6a7c562,e4655378,83fd6f63,3ee05215,65eb351e) | |
3774 | Z8(b6a0e14d,2c79f4d9,fd70c9c0,731c4035,73d93905,add31e7e,8b9d36cf,5c260fce) | |
3775 | Z8(b21b946f,1d954786,b47f0fc6,872dc0ec,d21c1ec1,2dac4024,ca290704,9a0e4720) | |
3776 | Z8(3b6ed4e1,f51609a0,826396b0,59768aa0,5d4bb825,b74d9cd0,a3df4518,1b8970a7) | |
3777 | Z8(d706a536,91fac86b,bb96fe5b,27de0b49,e3620825,a704a2f7,c05ab78a,25c288d9) | |
3778 | Z8(6b1b506f,f7f20f4f,730fab5d,7c7017fd,180944c0,146b6fbd,17d28e37,d89de4be) | |
3779 | Z8(91a8303a,5d8d7a59,9a23fcb2,77560230,986c636a,e00ca4b3,485ebe46,ac1c379d) | |
3780 | Z8(07655f55,3e942dd3,b61e83e3,ada2a402,a024e51c,bafadf77,74c9ba10,de4eb10d) | |
3781 | Z8(5cd05ac7,037100f0,70b26008,bbe6a0df,6952dc9d,8c7bac2a,6248cfdf,c880af9d) | |
3782 | Z8(26d83d46,767010a1,643c7761,4373da67,3bc17e18,1df94c39,845bd8ef,8d01737e) | |
3783 | Z8(f69075b0,6900a2e7,3d081cae,6a4f35ef,3ff32b3c,ddb489d6,88dc1b54,38695a9f) | |
3784 | Z8(caeaa56d,6d871f96,34e9533f,e0bf44e0,2be6404b,74b0a43e,920cbef5,13a0a17d) | |
3785 | Z8(cfaa2eea,d3871d7b,11ef480d,71b15235,39e92155,a0ab650b,9e56a634,7889c39f) | |
3786 | Z8(c9ec632f,845829f9,e7d84c51,a34c0289,4cf8fa8b,55d6abd8,2b5c6bdd,b5bf38dd) | |
3787 | Z8(63bb692d,e50ee670,e7d2582a,c777166e,02c5a991,463cd25d,236bd53f,60e1c3eb) | |
3788 | Z8(a15c0a28,7e946d03,5de791c4,9035d106,5ea14e63,ef2ca089,99be94b5,a3c4ab93) | |
3789 | Z8(8f9dbedf,41c71a96,2d55fadd,be537710,45221e9a,0a2bc360,0e04ee43,405d3ea3) | |
3790 | Z8(b877a52b,b0189e44,d45a6438,4eae6589,8b5d3bff,29fc0c93,01c118a5,83800acf) | |
3791 | Z8(35606288,bca125a1,da5bb135,a64c41ec,11ded766,709f9c89,51ac274e,a46ee066) | |
3792 | Z8(8474b974,d662143b,4a351392,4c2418f4,667d80a7,4eb52964,04f4db26,68f590eb) | |
3793 | Z8(b4ceca28,c7c7848f,e9663497,ffd95ad8,706842a6,84806806,6d96a5f2,686c5d1f) | |
3794 | Z8(4c0119e0,10c1ab5e,bee871ce,0522acaf,9766c7d3,83dcc657,fc825b2a,6b593a37) | |
3795 | Z8(f850669b,a8547a21,cbf76243,1f762b7e,3cbe5e81,9002dfcf,e15ad706,47baf7bc) | |
3796 | Z8(44f26786,be18c6c0,a522253a,ea770e13,70ba5da1,420621a0,d7bc5482,bc98ec4b) | |
3797 | Z8(a8682f02,e4175e4b,84a3bd78,1efc97a9,5cc0b1e7,03c0eb8c,643a53c1,dde8cba7) | |
3798 | Z8(ec90fe1f,ed13db49,f9150018,86bb4206,e34ec2bf,b87ab0b0,88e70c9a,17924c2d) | |
3799 | Z8(8c1c0914,5c216363,2131bc56,4bb37772,c911900a,ed0b86e5,61b6e9ac,503427a6) | |
3800 | Z8(c023977f,e36586b6,58e604c4,e519d00e,2c2e9173,b7ab3297,166daf88,3fd2016c) | |
3801 | Z8(488e7f31,256e3589,53a709c9,ced0968e,513e88b0,a7736131,04c5abad,d17cc56c) | |
3802 | Z8(fbde2ed8,d7741a8d,1d8d15b4,fab3bf12,4d70eced,0fe52688,07954675,54469cc1) | |
3803 | Z8(9485d7b2,55011a98,23a73ff3,533f93f0,43479913,9fce50f0,47e1f021,9a0e857a) | |
3804 | Z8(ae8df869,5ab2b9b9,9823fddc,9a2f572f,48ba35d0,057479b2,42320587,cba3f3b0) | |
3805 | Z8(0facf23d,fa37503f,77482d56,ba32e641,6da46cc1,9c14ba6a,8f86a00e,3f84e5ab) | |
3806 | Z8(ded064d5,f0ddd50b,7a241d2a,5085f2de,fb93bb52,c873327e,5dec77f6,f601c313) | |
3807 | Z8(b2b60b1d,01c72eab,ec340c47,98646846,e1c35ce8,9e45c238,8d8603bb,f721ae82) | |
3808 | Z8(fb0f027a,2d4caecc,5b425923,2c1c12fc,640ffcd1,8c200e56,dbd07c5f,352098b2) | |
3809 | Z8(6b936d54,b906f112,df134594,e4c0f392,86809efe,5ac3b0a0,855cbaa5,853a5140) | |
3810 | Z8(211898e1,0cc39049,945a1c35,4c7859d8,4e95b15a,469ef0ec,87fee11b,51190117) | |
3811 | Z8(f87a0e1e,f9352ba3,980ce5da,dba5dcab,8e49144d,5e303f5d,913168a5,02c6a60b) | |
3812 | Z8(f4ea90b4,e3bfe056,851e37f7,3ff3c912,a5713bff,780d5f2f,d6aac49c,9c7e937b) | |
3813 | Z8(25ee3844,44668c37,a72e7bab,3172ef7c,635c5b2e,1ef3e92f,675b40c8,68474056) | |
3814 | Z8(9f1bc7d9,b1d01204,3bc5dbee,495a0723,7b30e7da,835202b7,9f6e5aaf,09256f67) | |
3815 | Z8(3d85d7f4,cdc58d9b,cea0a492,9c3383a0,f58d2dce,cda6e53f,859a09d4,947a7151) | |
3816 | Z8(fa1701f5,0d99e0db,46ca02fe,3485022e,ea449c59,78b823a6,8ece1cc1,2c721fb7) | |
3817 | Z8(20e0e43e,d836eb66,a7c5b664,4111c4a0,54fb9328,4d744a2e,4c501b58,09fae7d6) | |
3818 | Z8(daadb7d6,99aec8fc,8a9aed94,03f5e700,1e6a27c8,61a62f67,51c484e4,3098c23b) | |
3819 | Z8(15147b25,d5e60240,2392d788,95274a3f,1f4c926f,a1c098d4,b7f69210,1273d404) | |
3820 | Z8(f6dffa60,f395889b,72e64560,b5f46e5d,e2adfcae,5224ffc0,d35c1461,61f8c43c) | |
3821 | Z8(aec66f93,dba92d84,8aa34369,b0eeddf1,66079fb8,3535e47f,0dce4be7,1ef182bf) | |
3822 | Z8(95628ba7,789c4deb,ab9b555a,923347a6,5d52d629,32b4158c,98ebf57f,1b71eefb) | |
3823 | Z8(05360d08,6910ae6c,bf1f09d3,d150787c,db8a8010,d789236c,433d31a6,63f7a06b) | |
3824 | Z8(b78b6e03,2526ea61,e17fd6ab,d014ee12,04f5efd3,ff8b824b,173785eb,d92d90a8) | |
3825 | Z8(cc9006b2,e27b1e7e,9e04ffa7,d6d12bb7,c501f11a,0ca69669,cf2ec8e5,d38b3a2b) | |
3826 | Z8(ea45b79e,7f3567b2,d690c192,036a0319,2f121388,eb303b60,3186aa37,7c3c07e0) | |
3827 | Z8(59aac509,06ef44dc,780f9fff,705aec31,83deebdd,8215fe90,5f0fcfbc,fbbee3e6) | |
3828 | Z8(7075e7bc,9f293d02,cc7b6616,6c7effe8,23b3a2d4,8b05b489,e0551900,45711c36) | |
3829 | Z8(52657d31,2921529b,4061a98d,172ca8b1,a70e38c8,a4ee29c9,1c508f9c,099a637c) | |
3830 | Z8(552eea92,23736bd7,70cdd748,483caa27,f83c5cfa,df1cbbd2,03dfc2f5,df416163) | |
3831 | Z8(6aa3317d,1b1091e1,b0b74acd,2ff17614,b0107c7e,f1ff3509,c4e44248,8fff3e01) | |
3832 | Z8(eb5b9c24,306863e4,c513ed76,80780e60,ba4b021c,99dcbb9e,85481133,756cdaa7) | |
3833 | Z8(e199bfec,aa94686d,738df1b1,8982340f,3b9fe348,ae4e89c4,8ab5b380,51424ba5) | |
3834 | Z8(27f5fb41,f8400a7e,7dae8d1f,ce15b1cf,ae63263d,37205eed,2a21c0a4,2062faf6) | |
3835 | Z8(54c5d794,d56cdbf7,b816a33d,30a39df3,eabeba2e,014fd3ea,027adf75,3598e432) | |
3836 | Z8(723a3402,05f40424,34aaee33,f1521d13,465f307b,8ad12e9d,00812d58,86b1d868) | |
3837 | Z8(a8df91ff,aa69b71b,1d0f3b9c,040d9f84,4bc4e4bc,9fde3cd1,afca6b96,4fdf8d5b) | |
3838 | Z8(9f675987,7be45842,6a221300,2474bce1,b65ac2cc,8c8d6af9,9451352b,41848923) | |
3839 | Z8(63c453fb,86f0daa2,810a5fde,5718bbba,de15705a,3a4940d2,00b915c8,69d640fa) | |
3840 | Z8(5f219d4f,0c9d09e9,e653eeff,c467857d,05dfc0ca,55d70d7a,bcba47d9,37424277) | |
3841 | Z8(ca6f34fa,6660b20d,88eca315,63aa0f44,be7abcec,dec5aced,de2e5c71,69a4a518) | |
3842 | Z8(c660cb58,5a987594,8174b843,2c1516bb,82effd12,f607e461,1ca4c82c,724cc197) | |
3843 | Z8(3398fe3c,519832ea,9c9d3ada,d3f4187e,339581d2,5d0da467,fe4e7660,784e6f4c) | |
3844 | Z8(3c3b86a9,d996675c,804a1e1c,4473f52c,500f9cdf,2173dff5,e521e64c,fde2d994) | |
3845 | Z8(b4c1a3d4,2d6fa9f3,598fc138,2ecee9b4,ba9c02e0,7ef144b5,9724c306,b0849f10) | |
3846 | Z8(897fee1c,9d6107c1,4b31ccc6,ddde0df9,5a9d16f4,e2171f48,73853e35,f660373e) | |
3847 | Z8(1d44396d,e70d716a,7c19dadd,12f7c6f0,6191a4b4,95bc60f0,f943782b,a8845013) | |
3848 | Z8(b8e8d5bc,9c3325e3,4491f9ba,4801ea0f,28438d7f,d014610d,262692b6,c7e665f0) | |
3849 | Z8(ee35a67b,10b1f430,848dd30a,d98206d7,8897599e,b06d0fa1,ef517827,33f2a7ac) | |
3850 | Z8(6ba729e7,149fa756,7b9702ed,87aadadf,0e77345e,935215a0,9f05988e,2043bdc6) | |
3851 | Z8(c806e8bb,6f437fa3,6deef38c,74204d73,d9082530,13ede77f,f55c8491,c381b245) | |
3852 | Z8(833db8b2,e6d96795,5b0b3de9,4f01f512,27c8a13d,14d1ecd0,3a62aca3,5d187f68) | |
3853 | Z8(713f7803,516b84c8,f8a71cb4,cdba8200,fafd0296,63f4b07b,eef717c5,aebedf35) | |
3854 | Z8(73ff1fd2,d1aa2ed9,d80632a6,548dfa2e,585392f0,15526d7a,8a7bf48c,bff779df) | |
3855 | Z8(93c4f36d,ca4613ec,1bd715a9,2b049478,95cd574b,2d2b4d3c,3ff5bf1d,9fbca906) | |
3856 | Z8(fc3eb04c,35b3ad69,7ac041e4,f278382a,a007b67e,2e75b1b7,a97a7c21,926a7756) | |
3857 | Z8(a31c5f13,9ab67b19,49b56141,ff9e8eea,a6e07319,eb593a7c,ec98dc4f,048aa839) | |
3858 | Z8(c327dd96,76aecc17,5b9995b8,553a14ba,dd0bdc5a,2cb842a1,457514da,861c10c7) | |
3859 | Z8(8f27f228,94b928cf,2db0c3ce,a9e3a3db,405095b0,bfc97b11,93804076,ee527e80) | |
3860 | Z8(f46f3bf3,a6c1e533,780dd1cd,c80ebfb5,1e931831,d8950f9b,0ac54143,086c6eac) | |
3861 | Z8(796f455c,0a747811,9224ee9f,da0c1f19,e44b74e7,b2e402ed,1940f44f,facb5e92) | |
3862 | Z8(c23ad237,eccd8820,62f574a7,71d4acf6,d4da1c79,57e3255d,cee58e03,2dae03e7) | |
3863 | Z8(d7d96e6a,aa9adf9d,76a0705f,52588469,34f73d10,8f7a0b32,26ee3d0f,6f69054a) | |
3864 | Z8(ff96dd80,73765017,2f5db950,15b94207,51992dac,150f4a80,890e364c,2602c1c7) | |
3865 | Z8(3ca8aa5e,d34c1874,c88bf95c,695fa64d,7aa65d95,95f0c6ab,5b9814b9,09a57db1) | |
3866 | Z8(73cf0b40,c6276eef,70e1cd2a,8dd4e1eb,11d7b9a7,d751647a,194e9e9b,a55fea33) | |
3867 | Z8(44d47153,1986a783,4307b677,18a40419,f97fce3b,502bcb8c,13a60c28,a677fda6) | |
3868 | Z8(85fb9169,0bb6b95e,60a84616,362bdc6d,76f9feba,5bcc1bca,c3f4bdcd,7fdd0965) | |
3869 | Z8(11cc9e18,13736553,94d6894a,320736c3,ede2cd3a,c228cead,192b162d,08cd877c) | |
3870 | Z8(90a27140,94c5dbfc,b1c26bda,51203d97,dc4febf2,d04aba14,e0fba55a,e50d16d2) | |
3871 | Z8(d8023014,bf41b530,a9be9dd6,419011ec,0c83798a,102396bb,d88ffb36,67726d06) | |
3872 | Z8(18641189,d2bc0474,21f43e11,df55308a,a36d8014,8297b890,19c8f022,727e6d92) | |
3873 | Z8(e4996f55,234936f1,6ff67e91,d39e5f19,972c19a2,0b42a858,4ec3bae0,a17cf588) | |
3874 | Z8(8d8b78b0,c2b5bd43,b856693f,ed06c860,34780844,a30b90de,62a42989,704132aa) | |
3875 | Z8(b3ce16ed,27e73a5a,8585a35b,87e3708f,ad121fec,55b20037,b604a263,259f4047) | |
3876 | Z8(06ac38f9,b820034a,632061b1,b88be18e,7f2cee33,57229cdb,b5019331,4bd7538a) | |
3877 | Z8(bc27a55d,8e8514bb,dc77724a,56715033,4dd5397f,d409fe8e,d8bdef96,ac85cb1a) | |
3878 | Z8(cb8fc303,bf77a843,c3b4c4b7,1ae2d720,2faaabfe,3b7067f6,7ef99afe,4f3e8030) | |
3879 | Z8(46ccf7e3,aeec0509,cf8baf83,7d2597f2,70d9f2e1,db1353e2,5e6733fd,2fe78312) | |
3880 | Z8(93ce65e9,793a8d90,f1298529,f6242b2c,0ba837c8,ebaa3e12,6aa6c644,7e1443f1) | |
3881 | Z8(dd517ec9,3e024e29,2bd18962,cad4559f,1e8d3817,09796bd8,23d51871,48cb7d68) | |
3882 | Z8(a622d97f,67fe417a,94a50672,950359da,1cb626ad,9e4c8de1,7eff37e9,9c681069) | |
3883 | Z8(db1984c4,ad2514bf,7363472e,8bd8c6c0,908b6363,e57dd0c2,08b595da,7d8fc0d0) | |
3884 | Z8(a503c2a7,1c142e77,b9b94292,f7775e01,b40b96b3,89fded05,716ae7d5,a742ec57) | |
3885 | Z8(523a5778,7a919807,826b0d41,66988720,9d899303,d4fb9ff8,01eb5b13,b28bdd05) | |
3886 | Z8(92e97d24,78876130,ea8a0e85,34b23e63,c95831c7,c96bbe3e,088045f9,91f0d6e0) | |
3887 | Z8(03a60daa,8cd87055,88a17c85,86e039e5,45244be6,1449c148,6468ca1f,2e1b644f) | |
3888 | Z8(5d149c41,ec818db2,baf80acf,31fdf71c,588cd0b2,adbb91b9,af7e142e,731a03f3) | |
3889 | Z8(fcf9752f,9fe6bfad,ca1c27ce,29952e4a,02c4a8b0,3c04426c,b8a374ba,ff5fa05e) | |
3890 | Z8(0149fefb,85d7f013,783d66c4,eb0ea813,b2ccd02c,06f86b2c,bf50c08b,c369bd15) | |
3891 | Z8(9e716dc2,70efa3bc,9044df44,ec3b31d9,93cb1f31,d4415349,eb3cf709,78cc8312) | |
3892 | Z8(c7aecd42,95099fd9,12061e8b,92cd2be2,262f7005,60dc688d,2ce2137c,f59855b8) | |
3893 | Z8(298f3efe,deca130d,7a98aa3c,db472f13,82b9303a,538c7f25,9658fdfe,2c2f5220) | |
3894 | Z8(6e4de714,f49f59df,66c2e39e,08657916,2cc5a683,9bbcc584,5a75578d,34d67990) | |
3895 | Z8(11ba4345,bde6477b,7a9029d1,94bf27bb,a3eb85da,dce22e5b,0cb4281d,7a6d9c2d) | |
3896 | Z8(533568f3,39dbbb76,540ba85f,c1bf724c,7724b309,d8d52798,fb6fb72b,a3e2add7) | |
3897 | Z8(7f096aec,80f85e7a,f44ebbe5,1dc19fd8,01a09689,1baa69ad,022a62db,2efe661a) | |
3898 | Z8(c0e41ff2,9b4c8d57,35421eb4,6797c3af,90ee1d41,a1a63c6e,92b2c7f5,91d9d5cb) | |
3899 | Z8(9ca89190,20745a2d,9c611a36,6a172900,baf817db,45107e78,d1799204,62e40b12) | |
3900 | Z8(d520489e,a5e5d628,54fd3c70,691a0982,c135adc5,3fa0b151,8bd048f1,51c11559) | |
3901 | Z8(62928ae8,d4752b16,d51264d0,31f642f1,76a7e23c,9d60ff4f,40109ee0,c8371791) | |
3902 | Z8(1c7579b1,1542a2b4,84c80d22,4ec1fd4c,fc7cae0a,edfdfae6,9d73be7f,a93167b0) | |
3903 | Z8(fc171937,d4260f03,f2636056,e73a5c26,6cb321a0,c9354bb4,57d0ec6c,006ed3d6) | |
3904 | Z8(df2482ac,9b0ae0c8,571881c7,216dcfbe,4588cf3f,23efcc0c,94d4705e,dfcbfd3c) | |
3905 | Z8(ea403e95,fc3f998a,e9d1067f,ad1ff45d,bf4d4e27,4659ce60,d43df4c1,f1b21b80) | |
3906 | Z8(9b08bee4,eace6107,a6d1fffc,01a9e8b7,5a201bef,e1497a8a,f34b587f,3fe58084) | |
3907 | Z8(af4ba266,6a546f4a,8d8098cb,5934b9b9,4e558e9d,3c1dceb5,14c3582b,bb7f03b6) | |
3908 | Z8(7fd74ede,e6cfdf40,3ca0f816,aa543092,a912ed97,4769548d,78f9a3db,5e155118) | |
3909 | Z8(b8cbceed,90e0e0da,0e37dc0c,d3855d87,3606942c,3a99d6e8,80b24c76,dda7ce6d) | |
3910 | Z8(cb5d23df,c0ac44a1,f17f6646,ffeecdc4,561f8afe,9e9dc096,b52bec55,23a614b3) | |
3911 | Z8(43b627c9,2c3de016,e8e6249f,48c9c30d,cc9fa87b,069fbe48,ba5534d0,d1dc32d7) | |
3912 | Z8(926a20b8,cf284ba9,2c3f5be7,158a89ee,2136024b,6b840208,6267d853,586a0991) | |
3913 | Z8(be5f4be6,fece6891,fed50429,c243206f,c5e473d8,ef77bef4,7d02eb51,005d592b) | |
3914 | Z8(13832a2f,357b0d8f,fb283fd0,ac94278e,8f8e796d,43102f6b,457743d6,bc9c3cb4) | |
3915 | Z8(365ed950,bcfa1576,98252780,5aaaa432,9b183388,1e465085,7333d4ef,8ea98e05) | |
3916 | Z8(f21607cf,ab7f6943,11604ec8,9ae507e6,9ada9bd2,27140b1f,d08b9a44,9ce3d80f) | |
3917 | Z8(27af3749,86dd4111,eeca85e6,99b2d53d,816d36a2,3d365002,2ca4f818,336d13dd) | |
3918 | Z8(38be9f8f,bfdb9dc4,2b48cd71,e32012b7,c10c9763,f7778675,cecd49e5,cf6ef65b) | |
3919 | Z8(d57e33d8,bc556fa4,d9990aad,27a72f87,71c1aa63,6f6668e7,001efd2e,2571f432) | |
3920 | Z8(5428853e,c808ab0e,62c69e29,f7a1b86e,e664a9d2,ae6a25c9,65b400c2,9ebc2a23) | |
3921 | Z8(907c669e,90d6926f,3618e558,539b48f0,c4a66f4d,c8192b8f,4f9d2149,d1836795) | |
3922 | Z8(513dbac5,4b12d24a,da51d86f,a895ae37,08716d09,e5f35b2b,5aec8495,771bcc57) | |
3923 | Z8(4c504178,efb1cc90,7ca5261f,f8bdfeda,c21ff2a6,b0189781,74fccc4c,acd3961e) | |
3924 | Z8(d84f9ab4,c6f64885,cb2be5a2,d1bae8bc,8eded06f,e5c35472,0d6c1f70,0b53fc06) | |
3925 | Z8(cf04ce76,e16029c2,5132b261,0cfe1c60,1bb89cec,7f680922,fa9fa4c8,110caa4c) | |
3926 | Z8(7277da2b,74e64da4,6b73f8b2,5446317c,198fda21,811d926d,0a60fe36,9efeb500) | |
3927 | Z8(c9257616,70ac1565,12e5d97a,e88a9a51,5e44b6a1,c1309165,44e3112f,d3838f8f) | |
3928 | Z8(768f4874,62048f3b,a1f14878,bcbc7b75,bf0491d4,e8e94157,f4e5d560,f88e5c66) | |
3929 | Z8(e36a663b,1251dd2b,0590b542,eee6b680,4f137f88,76cd03d0,d6410f8f,02908a34) | |
3930 | Z8(155f50dc,790970fe,86cf2a5f,27b0fd77,bc6d8a6a,b54b1f83,6033cba4,ae5dde62) | |
3931 | Z8(bdbd3079,4011e454,19fb875c,7eb45064,70ada4e7,0a63188b,c22d6c18,b1b937a0) | |
3932 | Z8(2168f5ef,bf5cbb53,0b6b7dd1,26224bc9,54cf54c1,d6b20869,a0d92360,0f0987e1) | |
3933 | Z8(8fcb3f9c,b1a2a908,4ad365eb,08d8118c,6e2e8f74,a20e432f,a0d4dcd2,27f36409) | |
3934 | Z8(04903e84,ceb08e2d,a4db1287,b3abc1ae,79999a16,3ec9401a,f7ee3cae,e1c22dbf) | |
3935 | Z8(bb3b9577,f4eb4893,2d6533f4,24eb539f,ba127f76,95cde432,9e3f0139,b1d0a32d) | |
3936 | Z8(f640081b,efd21dfd,d4d0ee32,a84e04a3,b4a658b2,ed5b38e8,7824b128,d66c2e3f) | |
3937 | Z8(5c52c841,724e35fe,279a6b04,4ea7fc48,de11c3cc,159778dd,eb6b29a9,e8b04dde) | |
3938 | Z8(b06707ed,79047ac8,a1ce7aa7,f644202a,6e1841a3,100baf1f,7680d894,cd1285bc) | |
3939 | Z8(a3bf296b,0fb37dc4,caa8b1c6,a88dcf5d,7a813b07,e5f8f4e9,6742684d,2f870b9f) | |
3940 | Z8(8e87c3d7,94bd5f0f,8e3255b1,ccf16d30,db096081,4ef2fb7a,e2f08c21,8a8e9088) | |
3941 | Z8(d152f285,b84da949,d51549fe,7e2e7014,3e73661e,2da23c9c,f52f2356,259b2ad2) | |
3942 | Z8(330b0dfb,e0592f3d,fb548cf7,f3d5eb32,f4b52d25,5b3c3e8c,94792ae3,d4220690) | |
3943 | Z8(bab4d387,338b2dba,629440ee,74db8e0c,04aaac27,04a96cf6,593a1a3b,95b60d3a) | |
3944 | Z8(7a55178f,02b77b81,ddb81a3b,1c22c81d,3a6546fe,d6c205b2,050c83f7,59536185) | |
3945 | Z8(4d4cb539,4caeaba4,1e468df1,38d71c7e,08f51395,8fbab561,aee61d64,9b195e95) | |
3946 | Z8(d3a63e5d,ad53990a,49890d60,cb0b9d88,3f4d0ff3,eaa125b1,7d150c4e,aa9e439e) | |
3947 | Z8(af165b25,e4814878,61a460e8,0e485a0f,170533f0,dcd5bd7a,9562885c,49159d0c) | |
3948 | Z8(fb212d41,740709cf,584ed683,31222ca1,dc2a288b,011bd559,84fb4170,25eb87eb) | |
3949 | Z8(e8ffcfc3,39dc1310,9e94a387,a3856ddf,4aaf8a6d,51632366,d4d74703,8ec3c314) | |
3950 | Z8(98a69854,d0d34ca3,982b1ea1,1304455a,47e84d57,ba521dc0,38ad7d8d,9034d22f) | |
3951 | Z8(f02e8511,bab7152c,70f4545d,e1eb3c85,78f26bb7,eaf29e81,35cf16a1,6c0d531c) | |
3952 | Z8(a77aa57e,f8995f08,d759a499,c3672dd4,b1f83132,d1684b86,4f38c9c6,1c424469) | |
3953 | Z8(bc04f269,0e32d696,295e7a7c,c8affb03,0d62db9d,ea5eaf02,359a488c,3419a4b1) | |
3954 | Z8(9531d972,543e01de,1e71f615,56a47dc7,067cb0fe,64d457de,fb5ef4af,b03ce759) | |
3955 | Z8(8222f5f5,fd923857,895f5f01,9b6b7aff,b362aa63,86c96dc2,93a52872,0d75abd4) | |
3956 | Z8(d07e019b,660122b5,055168d7,cdfd4b9b,1fbd2dff,3137d761,072e8de3,4853d4d5) | |
3957 | Z8(1fe68b11,364ea28e,0c7fb0c6,b96e902f,987c6628,86a917b3,a8ddfe23,af511657) | |
3958 | Z8(4ea7897a,1b80c0b0,4677e3bb,b94e9d25,c62fc23a,06498f66,1bef0d0a,c1be5d15) | |
3959 | Z8(d72f5883,4a2a2e7c,99221220,b8e76036,46dc6902,5adcfee9,5e536473,52e94498) | |
3960 | Z8(807e106d,8d2403ff,bdb55ced,0cc07ab4,18af8977,e9c5cb13,1a56d9de,b76524c7) | |
3961 | Z8(b553fdbb,d1ee4e9a,e79213ae,5859d08a,2790d5f3,dbdabc33,03928fc7,4fbcd518) | |
3962 | Z8(ef3d01b6,66538aa1,b3bb2e04,9634b911,bb955e3c,b62c71a1,a58bceb2,397471cb) | |
3963 | Z8(ac71c539,36a08669,9d697d69,fb9e1ae1,42d69189,79ed4eb6,5ec73e8b,4c782669) | |
3964 | Z8(03aceada,a024030b,fd2003f5,632338e1,89fd1b08,185ab78d,a8ad5e91,657f86dd) | |
3965 | Z8(666233af,38f99c40,2d9c5d3b,c3b81143,50045dc2,69c5abac,0e20ec2f,8ed238da) | |
3966 | Z8(97796285,d5290656,81ca0216,f120f29a,7bb2f270,eed60c16,dc069c97,5dfadfca) | |
3967 | Z8(909e6390,046d3703,7c3f88d2,6434355e,e98c65ce,e2a0d491,9ac562b0,0394c4f8) | |
3968 | Z8(ec32578a,48c6e4fc,847e4f80,e20e37fc,fe3ca691,79220e82,718deaf7,13cc2ff8) | |
3969 | Z8(49fbb9f2,29d89909,df976803,c854f753,7cc34a51,fd038866,88d31e10,56147a09) | |
3970 | Z8(f3e09a8c,0f9db2ff,fad5fa20,86671e64,a05fb758,4b1f38d4,f52e1e1f,d8287a3e) | |
3971 | Z8(1bc10381,ac96aa6f,25d2dc73,fb76ea63,5994f5ce,0c015d9f,04deb5d9,5e4e34a3) | |
3972 | Z8(45f091ed,f50c052d,0b13b3f8,86a4cb90,5f942308,809973a1,31542797,bdcc7ac3) | |
3973 | Z8(1ec3578a,dfce2d23,b83c79d7,abe3e237,02dd50b0,0b0ed590,8be6fc95,7872a3f3) | |
3974 | Z8(f4d83a71,8af51b9f,f3868932,22546063,058e76fe,13af47fd,b87b6a56,cfad172d) | |
3975 | Z8(30e2b56c,bc72d096,6f430db5,1e2d0e38,e668367f,6f72a0d0,0e587179,6f5ca671) | |
3976 | Z8(d8bbc128,89164e16,1d7e0e2e,b4841308,a27e7f48,d1efe677,b013e62b,2c1b8ca4) | |
3977 | Z8(f70bbbfd,f2276861,72af6661,d38b9e2c,0409cbdb,2370aa4b,4e9007f5,ab6b2ea8) | |
3978 | Z8(e11d8a93,da967e3b,a4d3f836,f826fa52,1d6d7934,ed7daf71,3ec819fc,734e4a25) | |
3979 | Z8(08f1bf0d,209cf241,110bdf66,751d819f,48719dfa,2e2750ed,8b1f3171,c6f5f000) | |
3980 | Z8(3fa6f90c,0b372c1e,ca87bcad,a61eb994,dcb4c5be,799e378e,467cf8fb,f6c6de2a) | |
3981 | Z8(48a58db6,211ba2b3,a963e3bf,fcb01eba,6d18fe59,7a7a6c08,f6bc6826,975fcc3c) | |
3982 | Z8(b2930b1b,81b9a7ce,df976f3f,8ec810d2,3c1bfd5f,16d89bf1,72ae3422,499e4589) | |
3983 | Z8(b42bd87a,58877cad,0e435f15,8b72f7c7,1e4bc7d0,59cfb147,77c80805,2e79d2f5) | |
3984 | Z8(3b69e7a0,06a18dac,c9fa3f3e,4f5c36b5,2354dd96,f63efb34,cea371ed,aafa8c69) | |
3985 | Z8(9bada3d3,e57d79ea,5a2728a5,0d0d35f9,c3b13e37,ea2ced55,8eae983c,6b00bb99) | |
3986 | Z8(077d0fe6,c531286d,9d347760,16130d85,1f894ac7,704b4be8,0f70f9fa,fc1b7ace) | |
3987 | Z8(85b13e2c,bd01a3c7,e5a2085f,e26dc94e,9b9035b5,1ff54f6a,85b175a3,546be6e3) | |
3988 | Z8(7ed530fc,c21d79f0,7d0ebaa9,06e6814b,22fd6844,a5b5fad1,bc720823,e7863db8) | |
3989 | Z8(166133da,fd66cca7,9538f204,afd64030,2e6f792e,6952038f,21ed5c09,eceb70df) | |
3990 | Z8(6bbdbc46,fdc281d3,aec21b7d,a89dd990,6850d792,f0855f4f,bf225700,b9908133) | |
3991 | Z8(8cab078e,25c82cb2,a3e54242,a3442020,5d3e4ccc,512aaa1b,ff96c3d1,a07f5511) | |
3992 | Z8(a60c8f60,a66fcb0c,e7ed6c28,aec63c26,5a56e5e9,1af64e07,ac7d985a,8e99f652) | |
3993 | Z8(f874e612,45c5bc78,213eeae8,52747fa2,2f880c55,93b20170,2cc422c3,91a4f360) | |
3994 | Z8(423db407,19744c84,99cc04da,74dfed5c,e1eb208e,87f92e14,cf7a72a4,62c7e3a5) | |
3995 | Z8(9da39372,926823ec,a3b6c298,dc26d367,cd8c8506,f394d632,ee008f7d,7ee297b1) | |
3996 | Z8(bacea55d,e3008dd9,d2d15002,7365b007,f36cdf62,0623f633,a518b02e,80edf13d) | |
3997 | Z8(c0d04054,c1299ba4,33cf8529,a30be956,37b978e3,bc3ca2fe,d22a3b42,2e9f88a6) | |
3998 | Z8(2b86f135,e029bf24,66af3daf,a2a275fa,c7cf70a8,3514eaec,cd05c7f8,3f9c0672) | |
3999 | Z8(f3734fd4,6979f902,371c6f3e,debe841c,ceee420f,31a5a4da,e8fe97a5,271be053) | |
4000 | Z8(3381b85a,b8b43e2c,731e651a,c0ae127f,8f2b2373,0de2e4e0,d9b248bc,b8f0be30) | |
4001 | Z8(7e624c67,02f54979,661500a6,f90bda96,25f8efea,a8de9dc9,783081b0,fcf54956) | |
4002 | Z8(becc3c21,a8550fb3,63a221ea,deab5378,68c1b8b6,d0749582,ebf9e078,adae0c09) | |
4003 | Z8(9c23baf4,382f6dfe,02e75a78,eecf7513,215ec2b5,4c1f421a,b0baf7cb,55fb49a7) | |
4004 | Z8(289dbd18,d903e17b,d179c21e,291b1ce5,863dc547,777a5e20,8a8784ac,56bc89fa) | |
4005 | Z8(6c209557,57193472,786c94b4,4a6e936a,f24664a7,caa90793,670e04a8,47d307b8) | |
4006 | Z8(6b645c34,87f909d7,d4e64bc0,a4e94c59,a34e1f0f,ce5004aa,a38df28b,64143f93) | |
4007 | Z8(6ef030a1,0ff452af,68914137,6876522c,2c4617fb,20e875f5,aef4ab8a,11a67cb2) | |
4008 | Z8(aa9278ac,c50fe4d4,20443758,70168c57,80e9ce25,b9fd1208,289471ce,72911cc8) | |
4009 | Z8(113cd60c,11108fe2,4a69d7c8,74c1205d,298cf268,d679b73f,b6947d5d,83f4697f) | |
4010 | Z8(039ac61d,f6460510,b1b37584,5920d59f,43a2b6ea,ed497657,85364849,66d1aa22) | |
4011 | Z8(14d5906f,6a932879,40be5df2,1851668d,bd024ffc,e6e34fec,6e8e6838,b3b742c5) | |
4012 | Z8(2ec5d2c1,68eaa2cb,ddc4ef81,9d7925f1,16135b83,91e43c29,bf4fa142,a793eec2) | |
4013 | Z8(29ea5468,d566677f,5828b077,ceca0ddc,51202b2a,4f63dfb5,556908f8,ed5130d0) | |
4014 | Z8(760207e0,0342d023,a72b0984,5cbe92ad,e1f18a67,5cc2f7e9,b5e73dba,3451da46) | |
4015 | Z8(31e063e4,150ab7b8,c2a09fc7,45d7c5b3,32287c60,a8934e23,64a4500e,030170f9) | |
4016 | Z8(4b2f4a33,59908789,a6eb7cb7,cd454826,21e4c2e2,80d6d3ef,f153ccbb,7e442b55) | |
4017 | Z8(af0fc01c,692316c6,4b753585,6110deb3,3d378a75,0701a571,e91c3ed4,808a0844) | |
4018 | Z8(e964a153,d95c8131,4307887e,c929cabb,577d35af,f4db0f92,dceae0c3,4c6f74d0) | |
4019 | Z8(1e8cd325,b0cfc177,6dcdce23,9c5286fd,cf5a05b4,1ab2b51c,a56bdcc4,ab2055a3) | |
4020 | Z8(55b9aa62,a96d6df3,35c4dfe0,45035b9b,48943110,708cff46,7bac2f0d,3c13819b) | |
4021 | Z8(a940bb46,35049bba,292512ea,14581c62,6d12bc69,2a5cd22f,f0d310c2,6a4073a5) | |
4022 | Z8(cd2491a4,a2da8d82,6abda74b,bd1cd1f2,60e4b295,5d84c522,755056ee,a084a550) | |
4023 | Z8(2c707edd,270b14d8,5e6fb9cb,676dda04,31f1b05a,9e9ebbc2,80e54399,7496e39b) | |
4024 | Z8(9e13641f,6f9f6bcb,80809c50,d5558efa,d58b744f,7157d251,b8ee3a68,26810837) | |
4025 | Z8(4e4781e0,107697a0,ddeacb86,9cdc1510,9b3c9755,af4a62d4,8671bdbf,f64e7ea1) | |
4026 | Z8(ffe61b91,6368df7e,04236558,b2bc23ff,134bd728,82d9ac95,ff4b15d2,7ccb928f) | |
4027 | Z8(d7af2ee0,188c47b0,1a6b10bd,326a25c4,e7e2cefd,1d2218b5,af96e547,868e9dd3) | |
4028 | Z8(a7981d8b,0cad2d3d,e8969a85,c068c465,e95b24db,860c7667,dd115774,651e6554) | |
4029 | Z8(7f3e76ba,1d46bfc4,de159d4a,5c1570aa,438eea33,a044dbfe,9992f161,02c55f1f) | |
4030 | Z8(bb1cc07b,4a40bd4c,f36d7cd7,8dccd03d,7e4c46c9,b5a0ac04,1811f075,42192fe4) | |
4031 | Z8(fccff15f,6e763ad5,6d323d48,8f7cdd91,aa884eec,4e4884ac,67f22b1c,581ec996) | |
4032 | Z8(72950950,8e2bb317,09b3a293,4bf6bb6a,4b7b265e,88c76347,22d692d8,3c457a27) | |
4033 | Z8(eb8b4272,ce1ed91a,9e06796e,e7cc91d6,9fd5aece,bbd4b292,2258d583,0ca93f4c) | |
4034 | Z8(0e914edb,27ed815f,4d0d1587,fbc1ef54,b76a9713,7860d5e5,a24d5032,4c475830) | |
4035 | Z8(f23c4eb9,a0ecd15b,86d95733,c41dd5b9,cac4fdaa,71f7c144,d89905dc,6b97430c) | |
4036 | Z8(0334d312,71af76a9,8a64c167,cc4de934,71ffcba1,0d913b20,e7ab8a1e,e8e442ac) | |
4037 | Z8(6f6c02b7,8b88cc78,b88ea7bd,f2a4d943,37a17788,9eedcdcc,d36f0b20,996fc4b6) | |
4038 | Z8(803c742e,2de864b5,b909f0e5,a8322cf0,6696ee5f,96534107,af826e24,13f35fde) | |
4039 | Z8(7f412556,66b977a6,55aaa035,448853b5,3e5e4be7,14bec8dd,4f251ed0,c29dbe5f) | |
4040 | Z8(bb01929c,2a7ee272,82c3df59,8ad27f30,b58467c2,68c2ece0,6bce5542,63e58328) | |
4041 | Z8(b762225e,be9d39d0,19fcea3a,97bb2627,f0440dcc,d3b4ccc4,6aa9f743,5c2976b2) | |
4042 | Z8(32f33dfd,e5761145,2e7bd637,fea6e485,e3257ffa,5b1b302a,4eb292c2,9fd2187f) | |
4043 | Z8(262de78d,0cc5a2e3,98aa62ac,de020f6d,a7fe02a6,bc1e0fd5,aff7407f,ed93c304) | |
4044 | Z8(0acdd274,2ac46215,56f6a3d0,8ed91f5e,e4c49e83,89d14d60,9a17fde5,78aca16a) | |
4045 | Z8(609f5f0a,819b393e,b169ef5f,d2ec168a,c64f63b7,e1ef1d8a,c65a3456,9032f6a4) | |
4046 | Z8(fc4a9833,82f16037,b2dfa98c,47575f29,22712667,2985255f,f2090010,b00d04c9) | |
4047 | Z8(9f5d7ada,ef9790b2,7e33c831,7dbfed3f,0eb4126b,28205816,a50a19a1,ece273b4) | |
4048 | Z8(5dde89a6,a0e3b550,b95eedb9,1d4f7aed,2b9870c6,e8872878,7c74dcdf,b41b3c4c) | |
4049 | Z8(aab19563,03e07187,6296eaca,c40debd4,07516c28,38487fb1,35a646f2,2ed28da6) | |
4050 | Z8(1cefd4c2,4362dabd,9d985052,17ff3ca8,dfc27876,023b16f7,70197792,3bc3ee92) | |
4051 | Z8(2ed0dff2,e8001193,926744fb,4b0d789b,d867f14b,e929b365,c69cca7a,141bcd47) | |
4052 | Z8(d314f763,0138e4d2,aafd5c18,41090e5b,1f21e11f,a851ab21,f3d83369,f0fc1813) | |
4053 | Z8(711f1536,403ea525,8522e91e,32a6fbd5,661a49fe,a57ddb82,173c2442,cb83581a) | |
4054 | Z8(eb1dd975,c9cb3729,163582a6,ad6ec2cc,18b7112a,838acdfa,adf10dcb,729bff1c) | |
4055 | Z8(65a5e013,55b3366a,b0774b7d,507d2f9d,dbdd3280,145cb134,af268b7c,3d52bb5b) | |
4056 | Z8(d6e2d6a9,f3fd39a1,471c0889,2083184a,d813215e,8f5c75d4,5557f09a,cc0027b9) | |
4057 | Z8(d634bf34,bd5033e8,7e74152c,330b46b6,959f92ef,10392058,9c8eaee5,d71b34fd) | |
4058 | Z8(25180b41,13cc439b,02eac0d2,04389498,3b844db1,ee05aeed,525c49ad,9a83b4a5) | |
4059 | Z8(4a7a82ed,35f9c367,7d699b98,527af673,c98c7d33,eded9085,8fbf6ea9,927a3134) | |
4060 | Z8(53a93da3,1b3c98b3,0fe254e4,67f06b13,5f326a60,6a2e1528,b2481c23,95b1e6f9) | |
4061 | Z8(94c5ef9c,0c1a0bc2,1659dfc6,1dbd626f,42725be2,00a12040,70b7c3e2,400dadb3) | |
4062 | Z8(ec0dd4f0,9290ce11,14abb1ea,96c47756,6da0bdc3,a6ab686b,a464aa7f,5d9a05f4) | |
4063 | Z8(92c6d772,d489312d,27f4dd4f,d79fd147,42f0a8cb,95ebde9d,23dffb38,c34249e5) | |
4064 | Z8(c1cde5cc,c6b34229,5c3eeace,ce6aa37d,61528277,b5b90971,beab31f3,43e2c3ff) | |
4065 | Z8(dd476ca4,d93eac00,631d7fa1,d3b34a98,0757e574,e85c48de,bb506ba2,19f77b56) | |
4066 | Z8(91562fa0,78e80505,25f10da9,14847581,5319d8ea,a96683f8,ad293df6,a650d30d) | |
4067 | Z8(a1b2ee52,0ed0522b,47412d3b,66e8c85a,f9fce84a,c287fd8c,0abf6c20,b694e95f) | |
4068 | Z8(f771857a,31d88024,4b11a1ad,ab008279,f2573600,f75bebb5,90938fe0,a489c639) | |
4069 | Z8(0172ee51,abaee167,5f18d121,fa9766f8,957eddbc,6a90eab6,f9c6bed9,8d2217aa) | |
4070 | Z8(3c400bc3,254cc35c,c7180cfa,e5173926,0456d1a5,2abc5a44,21d67b05,89d112c1) | |
4071 | Z8(437f0a56,e69f9956,349f598a,3c6ff291,80e0485f,cde8a361,148870b3,d62e1dff) | |
4072 | Z8(d8d59e13,02ef6125,9accc88e,3b191d81,0f801318,df7c058f,a5ed1330,f03bea81) | |
4073 | Z8(60af3351,646eea92,69a9c557,ca366d1e,b3156d2e,0d0bdf43,5f1129e8,992e8bf0) | |
4074 | Z8(d3811316,af00a9f2,ce5aff81,d5f94450,665a5176,d36feba4,e53398f3,5cfe2653) | |
4075 | Z8(0355a18e,29fdf716,980febbb,b47d2f6c,881731d1,6fb0091e,4cddc19b,6772e1c1) | |
4076 | Z8(f1706f20,8acc9737,7e4462d4,67680548,e9e03333,b19c5671,fc74c12f,59c022cf) | |
4077 | Z8(33551a87,3342e32c,8a2b6d5f,f6209124,f1294405,d80ae39d,e6a67730,c6bd28f6) | |
4078 | Z8(0e4c824c,68eb3a50,10ca2a2b,e74751da,486f4e5f,175870ad,794ac59a,903f61b9) | |
4079 | Z8(9f8f7d4d,46325785,97f70854,1c562c01,d8b88960,31e3228a,d1c102fc,15b75bde) | |
4080 | Z8(e15aa6b9,36754cb4,89b6c436,e9e16830,17ea4675,c329d5e4,f85c63b3,1254fcbc) | |
4081 | Z8(70890c26,58b263ad,d6f566cb,f89f149c,be17b75d,3e8dc137,4cc6dce3,076f2563) | |
4082 | Z8(74b3213a,e7bb5d73,38b2a891,e4038c5b,c51a5719,bfa569b2,7bdc3b85,fbf03e79) | |
4083 | Z8(f54cf3c0,69050334,021d6995,93a2857b,1eff36fc,1fcdfcf7,7722f66a,93b57b5b) | |
4084 | Z8(f2b67a5e,ca40c491,326da01c,dbdd67fb,e81e5c0d,09017aea,eb0d5cc7,264dc8e6) | |
4085 | Z8(c5bad264,ab103b03,e09a562c,8c2e72e2,0b527989,232bda45,3a500289,6d02cf93) | |
4086 | Z8(a22e4b09,69c3ea4f,44921ec6,d927cda3,ce0168a0,abd97a02,9ae0cba7,0a2d6d9f) | |
4087 | Z8(7878e417,154608ef,a882f91f,e4afd563,c9bf5ee3,24600f29,abdfd66e,8e102c14) | |
4088 | Z8(6bbf58d5,a8289f8a,8cfc30a1,83192cd7,1f94dbf5,5ea7706a,713d263d,6c07eb72) | |
4089 | Z8(022ca6ab,3c0f125c,7254a724,eb374792,884cbbf3,64a0ce0b,8772be90,c1dad18f) | |
4090 | Z8(6a0bf04f,cff82cc3,609a6eff,95733b5d,7cd1cac2,a7b7f91f,da513ff8,4f034af1) | |
4091 | Z8(6cd5fbcb,a84e534d,e37b2b4a,19ed4317,3cec4c73,95defa7f,060d1dd5,71306254) | |
4092 | Z8(12f84189,4e7d273a,14f97c2d,de5f0476,70cf8c65,beecaf9e,cdb32cfa,637f417a) | |
4093 | Z8(782073a4,842dfc6b,e4940071,97b801d7,4cd0cd24,2e568a96,1a0009ed,34b4e2e3) | |
4094 | Z8(5a0c42f8,e502493d,5a02be5c,f070b44d,0378a8cb,f3d8e568,e0f705ba,256bfaf0) | |
4095 | Z8(03a0b691,85a349ed,43e46bf6,19943080,7eaf0b9c,52b3b24a,71a3c30e,9e301f39) | |
4096 | Z8(e8308dbc,e06a8446,13318572,a8879bfd,e74b5e84,a603c464,1f34f494,9c37a164) | |
4097 | Z8(4fb60cfa,a50d00ec,4fd82967,054e4f83,15073d26,20ca7e8d,983b85cc,03d0fe5d) | |
4098 | Z8(b56e7efc,5eed5612,b4d93d97,fcec56f2,91a0cf29,070e7bd3,00dff9b5,70bb57fe) | |
4099 | Z8(55d7eff8,9f49a77a,794f830d,25c3b848,b8da4990,ada20745,2654b37f,265144af) | |
4100 | Z8(34e42a6b,520be3a3,699823ac,61bf51f6,0c002042,f51f1c7b,80fc8e46,c0606f2a) | |
4101 | Z8(8c251b8a,e8e7bd6e,cbc717d8,9cd1d40b,7d34a02a,c50d8279,3dcd3a75,0fec9746) | |
4102 | Z8(c670f4b4,5a111373,e2e4d1f0,2cc3b92d,d155f6ea,fea07acf,40f74410,191dc716) | |
4103 | Z8(b86b7fcf,6b94ae7e,ada12be6,4087d371,60dd4981,e06131cf,24faadfb,28ff6564) | |
4104 | Z8(90bbeb7e,8c4ff063,93b35d17,b4b8b333,73923df1,7ce5db1a,cbff2326,25e28ea2) | |
4105 | Z8(af339d7d,64c694d6,cdfd2033,50437d3a,bb06a66e,cb5baf63,746de41a,e9d50d9d) | |
4106 | Z8(56bccec6,d65b3724,c9b0725c,bef678d9,3f2fea8b,f65ced49,cfadc3d3,24185c3e) | |
4107 | Z8(7e4c7227,4311ca18,ab8bbb64,15e796af,bce74917,0c3d5c40,1b522997,f0f8da6c) | |
4108 | Z8(2505ef80,2c59be2e,c106757d,62697df2,d9ad2a88,7f8d3f0a,8f50e293,01dedd69) | |
4109 | Z8(58dcd5e6,9905583a,e23c601c,e402c855,84798d30,4e20cd03,7165fb10,b00e5f0d) | |
4110 | Z8(fbcdb8ec,13beb580,69023714,00ab9530,eb029851,06477d02,3886e326,bda7b00a) | |
4111 | Z8(703d0212,fd2f294b,6eb4c033,034fe823,32cba47f,65db33b5,970fbc2c,a85c021f) | |
4112 | Z8(44a60a19,7c65f7d1,fae32eb1,83c850c1,e148eedb,78bf0282,39d4ba97,65a4f209) | |
4113 | Z8(c49874ae,cf40dee1,d74b7750,883b63bc,9f8c24f0,578b9ad2,7d2d7f3c,a1c6c473) | |
4114 | Z8(00051d6e,a06290b8,7a13c24d,66635be0,fd38a243,93f68283,71ed0018,80dbd25c) | |
4115 | Z8(5954c902,c7d23725,1c237aed,e47b48a8,717ef46d,d6b06ff4,edfcab3d,e2f1957d) | |
4116 | Z8(ea805669,eaf865a6,449eb433,17689051,b55ef213,104a5e1b,2a63981a,76ce0781) | |
4117 | Z8(e460f597,ddb0e877,4f546447,4fadb74d,152f9b7d,e275eb72,99a0aad9,e765a0f4) | |
4118 | Z8(a4bc6402,d2f0a67a,92900736,2cbce2dc,b5c0c205,08c8759f,151e842a,995f6f12) | |
4119 | Z8(6f45e357,2d8284c2,79432610,dd893a6b,e318b8b0,5c265da0,be268476,e2aa85b2) | |
4120 | Z8(88aa9967,4b3b9e6e,e95d1999,fcd1488b,25d48214,10680303,40b82502,300dd44f) | |
4121 | Z8(6a3f038b,370d1619,bc7b21d3,ceba467f,70cbdbc4,c40e2ac9,3d12c6ab,b58bdcce) | |
4122 | Z8(cec80eac,b6091f45,08aa8e56,8a5af446,94074f87,67071411,91ccc252,7856983f) | |
4123 | Z8(91ee232f,0a08da1c,21380264,8d3c13b7,04f80d79,fc2d7770,6abc3830,a5c618ce) | |
4124 | Z8(4e17f04d,9a90f9e5,d5a09d9e,2845dd5b,793db83e,3d48de11,c5f1445a,175515d4) | |
4125 | Z8(e952acb9,abaa46a1,a8025dd4,1cd5f2b4,990a8fbc,9c248753,d4f99a0c,fdfc7261) | |
4126 | Z8(752adc12,59f6fd8d,d9dad171,83f5f3df,dc154029,313dfeb7,01ad827a,78da7c95) | |
4127 | Z8(599e5684,a5e48d8a,b00c2406,d769430e,43617e07,80967fd4,cd8ec19c,ce98e393) | |
4128 | Z8(90eb334b,a491de35,0a04d4d2,383c64b6,97ebbcb5,e546436a,b92b6775,bbcc4210) | |
4129 | Z8(4969f82e,d7c18b24,23634d43,816bf594,8195ce1d,df034c8f,64985f1c,ae7a7f19) | |
4130 | Z8(80cd6f72,20810d01,7a5a32fe,10367aed,0a967562,f5ba33f0,31c6bcb2,cbb595d2) | |
4131 | Z8(aef00b97,a1b48779,47604497,a322f4eb,3c2b2aa6,9fad3f7e,87b0fcb4,b1f552a3) | |
4132 | Z8(9f82d67a,35a89a62,aa3f885e,afbf8b75,06a3a40f,ac0a1885,f4c62bbe,50b20303) | |
4133 | Z8(9ed76ca6,e7785707,4df88a7e,8c1fd4fd,98a047a2,fa58d7af,061787c0,07767c23) | |
4134 | Z8(4782585a,9c94e1ef,d3711a7b,98419ba1,cddcacce,bc5ecbd1,91310c15,d286551f) | |
4135 | Z8(0b85b306,f808b683,c25008b1,968edaac,1b3229de,2ee8647e,c5d99fa9,4c19f5df) | |
4136 | Z8(109dda22,8d24d7bf,0f046e0f,15f858cc,789d16d0,4ea3364c,e7ae120d,9f9694e2) | |
4137 | Z8(9f171436,7eccfedc,77e3ee42,bbabfde2,d5efb316,66d7badf,0009e97a,c010c3eb) | |
4138 | Z8(ff817fef,cfb7649c,e8229b9b,0a5cfa17,cf5de0f5,6d9374b5,bae0d062,b87a136d) | |
4139 | Z8(e7c79266,7faf28d4,4df040c9,1c19a8be,1d8ded62,bdbe3cfa,4c43fcd9,fb801209) | |
4140 | Z8(467a303a,6b6e6c02,fce26b37,4e06fb54,f5f20871,a8d91b99,c9e0b52e,bfd615ad) | |
4141 | Z8(df16dcfb,af69376e,f169b463,c2272022,77aba281,c5d545c7,3c358b45,66f1917b) | |
4142 | Z8(4a094803,2dba58f3,d4c92cfa,5c5e4156,c07b938f,963c382d,ce8a58e3,792bbbc1) | |
4143 | Z8(78e9a729,d11e4e54,e0009a97,2c6744af,089be8db,091a4ddf,9287ff07,2de8fcf5) | |
4144 | Z8(268a0bb1,82950d4e,632a9163,e466990e,59543ad1,61001e4d,79c0b660,84a3bf85) | |
4145 | Z8(514b63d3,9a722c43,ae66a2b0,17a1bf74,5716f721,ef330368,6fe6831c,c76d6bc8) | |
4146 | Z8(5e5232a6,9cfe00c1,d6f4f218,f659978c,fc8b0fd1,5d77b5e3,8de6be98,4201fb7c) | |
4147 | Z8(c99055a0,a1004438,155b4e14,07167eb6,7951d86d,f22cc5bd,cb918e71,941e12aa) | |
4148 | Z8(b6c31e5c,1bcbea79,7ee32c7d,bc19ae7c,3cc01232,9d84b3d6,9053d9ca,8db01b02) | |
4149 | Z8(a40ee126,83b9a410,0964b460,a9c43a58,3e6abc1c,59fca0c0,f4aec997,2af3d893) | |
4150 | Z8(82da3042,90ee85d6,b505e09e,30913d9f,15b8388a,9c5c7fd8,d0801614,ba8bfa2e) | |
4151 | Z8(2f701ea6,12c5993d,06f7cd52,ac275fac,07e79d7b,f22dad17,74a3f540,76079166) | |
4152 | Z8(6412cbfc,d10687c0,1a680d7d,7865dc53,2205a7e0,ec621f49,7a5c7111,d158404a) | |
4153 | Z8(a2868f81,f7abd59d,1b1b075c,f2507ae6,f1096b47,4db01b6c,296c8177,e7b37fd6) | |
4154 | Z8(7aa35c2c,be26f41e,6fae7cfb,5eb4a5bc,82801849,15198367,0930f270,e24fc040) | |
4155 | Z8(975e9486,6e79df0b,4f7bc079,fdf487a0,b4e9f0ad,a67baea7,566d3a38,3a470c5d) | |
4156 | Z8(46aac656,64dd6277,9bb8785f,15b7a6d1,e959f484,f70ade7a,1b7eac5c,d4080399) | |
4157 | Z8(a552eebc,d098a593,22ba9f3b,88efc428,29e1127f,c3e17f91,6fc063fa,e5ce7b30) | |
4158 | Z8(5a4bf444,88b5a02a,04651c80,3e2d1062,7f4ea501,93af99c5,f3d1bb13,8274f710) | |
4159 | Z8(37353400,b442c3ad,b0b137cc,6b0279c5,34b23225,d3a1bd82,1276449f,1c173a8a) | |
4160 | Z8(1998df6b,1ebb3dd2,cf53f2d9,9cf37661,3c55cf69,43477b11,dc047597,983ff05f) | |
4161 | Z8(6674b4af,250e2717,442b6861,8ceb428b,c7f486c5,8de9704b,5e0a368c,f38eade7) | |
4162 | Z8(dba6d38c,5794fe0d,13c3c48f,ba2a1bd6,c529d6dc,fd1b96f3,719bf81b,bc8f888a) | |
4163 | Z8(c95f4727,9a7dfcb0,b76ccb37,9888f0f9,103a8165,d23a05f3,48c39bf1,b713b205) | |
4164 | Z8(9420ef6a,9234ea85,fb9efcb8,7d498d66,97387cbe,eb11630c,a908169c,ae97a482) | |
4165 | Z8(085f0d45,237d7a6d,bf63c439,72abb1ad,461e22d0,2766f3ff,4146a068,f7b17cfd) | |
4166 | Z8(c5c1bee3,1be0932f,3fa309c7,bbf1e733,ff83c39e,5e8ee43e,902157cc,dc3cfeda) | |
4167 | Z8(4e992dc8,e8ad9902,e65af6fb,b3f5191e,73d16130,ee55b105,09a39b27,c6fa01e3) | |
4168 | Z8(da80f4ef,a638cade,9ed9c610,b6976359,f34c7a84,f8f28119,1931cf1a,83e104d1) | |
4169 | Z8(9caf1bbd,d3856309,e70dbeb4,299d8886,d2dd641f,d465a5a4,6b568b49,8042107e) | |
4170 | Z8(1f5f0156,2b4519a4,84ba0f04,0d40bf30,460f0242,0a116c3c,b9f83468,fda73cdf) | |
4171 | Z8(86c2c15b,7821b36b,c4347132,4f449682,f8b702eb,9ccc6d1e,7711e670,e6d199de) | |
4172 | Z8(a96e00d9,ca57511b,0d9956a5,90a991cb,6dd308f2,81a81df1,61cb707e,1c6406ca) | |
4173 | Z8(04abb049,831a1f5a,50ac1a43,0cd7bd89,6d076f36,2b34c387,ef6a5ebd,add7b980) | |
4174 | Z8(283dc9b7,58118ea5,0957884f,cb6e5527,6aa8054a,a9ea62d9,e56797d1,923b6750) | |
4175 | Z8(05e5d0cc,4ac9af77,13c5f541,afb40fe5,444560e6,97257c06,b4bb7615,c3a1cfa2) | |
4176 | Z8(ecf6537d,b64199c6,14cac452,21be12d9,2fa57336,a6f0cc3a,eae76dce,b1f36c4d) | |
4177 | Z8(830d6926,b3a2b31e,219263c8,036405b6,0a591542,a26f428c,ca195ed4,7493f3cc) | |
4178 | Z8(aea7580b,d808e62c,97a8768d,e3090288,a68189ea,d4da66f3,db3b78eb,5408ccb1) | |
4179 | Z8(7cac9071,e77c4a09,3f93ba3f,4158580c,f6c2ee39,c139eae5,1a042a4d,fef13297) | |
4180 | Z8(65140b3c,ccf8a858,03d7306e,289926cf,02509e47,bd48e29f,09a12dfa,1064e38c) | |
4181 | Z8(6003e683,fd2a57d7,826daec5,9e3e63c1,85ee8a83,fc20a3be,1dbb58ff,90a8e5c5) | |
4182 | Z8(34fa4278,b8a0ef49,4ac1cd00,dd0412e1,262dcd7b,cf7f7ba6,109291ad,8bea4f6e) | |
4183 | Z8(1491d8af,8d2fc0f4,01e4f7cf,ab2be0ff,d44a3e6a,9b489d4c,00000000,00000000) | |
4184 | }; | |
4185 | ||
4186 | int | |
4187 | _arb_hypgeom_gamma_coeff_shallow(arf_t c, mag_t err, slong i, slong prec) | |
4188 | { | |
4189 | slong term_limbs; | |
4190 | slong exp, pos; | |
4191 | mp_size_t xn; | |
4192 | mp_ptr xp; | |
4193 | int negative; | |
4194 | ||
4195 | term_limbs = (prec + FLINT_BITS - 1) / FLINT_BITS; | |
4196 | #if FLINT_BITS == 32 | |
4197 | term_limbs += (term_limbs & 1); | |
4198 | #endif | |
4199 | ||
4200 | exp = arb_hypgeom_gamma_coeffs[i].exp; | |
4201 | pos = arb_hypgeom_gamma_coeffs[i].tab_pos; | |
4202 | xn = arb_hypgeom_gamma_coeffs[i].nlimbs; | |
4203 | negative = arb_hypgeom_gamma_coeffs[i].negative; | |
4204 | ||
4205 | #if FLINT_BITS == 32 | |
4206 | pos *= 2; | |
4207 | xn *= 2; | |
4208 | #endif | |
4209 | ||
4210 | if (term_limbs > xn) | |
4211 | return 0; | |
4212 | ||
4213 | xp = (mp_ptr) arb_hypgeom_gamma_tab_limbs + pos; | |
4214 | ||
4215 | ARF_EXP(c) = exp; | |
4216 | ARF_XSIZE(c) = ARF_MAKE_XSIZE(term_limbs, negative); | |
4217 | ||
4218 | if (term_limbs == 1) | |
4219 | { | |
4220 | ARF_NOPTR_D(c)[0] = xp[xn - 1]; | |
4221 | } | |
4222 | else if (term_limbs == 2) | |
4223 | { | |
4224 | ARF_NOPTR_D(c)[0] = xp[xn - 2]; | |
4225 | ARF_NOPTR_D(c)[1] = xp[xn - 1]; | |
4226 | } | |
4227 | else | |
4228 | { | |
4229 | ARF_PTR_D(c) = xp + xn - term_limbs; | |
4230 | } | |
4231 | ||
4232 | if (err != NULL) | |
4233 | { | |
4234 | MAG_EXP(err) = exp - term_limbs * FLINT_BITS + 1; | |
4235 | MAG_MAN(err) = MAG_ONE_HALF; | |
4236 | } | |
4237 | ||
4238 | return 1; | |
4239 | } | |
4240 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | #define DEBUG 0 | |
14 | ||
15 | ||
16 | const double arb_hypgeom_rgamma_d_tab[128] = { | |
17 | 1.0, | |
18 | 0.57721566490153286061, | |
19 | -0.65587807152025388108, | |
20 | -0.042002635034095235529, | |
21 | 0.1665386113822914895, | |
22 | -0.042197734555544336748, | |
23 | -0.0096219715278769735621, | |
24 | 0.0072189432466630995424, | |
25 | -0.0011651675918590651121, | |
26 | -0.00021524167411495097282, | |
27 | 0.00012805028238811618615, | |
28 | -0.000020134854780788238656, | |
29 | -1.2504934821426706573e-6, | |
30 | 1.1330272319816958824e-6, | |
31 | -2.0563384169776071035e-7, | |
32 | 6.1160951044814158179e-9, | |
33 | 5.0020076444692229301e-9, | |
34 | -1.1812745704870201446e-9, | |
35 | 1.0434267116911005105e-10, | |
36 | 7.782263439905071254e-12, | |
37 | -3.6968056186422057082e-12, | |
38 | 5.100370287454475979e-13, | |
39 | -2.0583260535665067832e-14, | |
40 | -5.3481225394230179824e-15, | |
41 | 1.2267786282382607902e-15, | |
42 | -1.1812593016974587695e-16, | |
43 | 1.1866922547516003326e-18, | |
44 | 1.4123806553180317816e-18, | |
45 | -2.2987456844353702066e-19, | |
46 | 1.7144063219273374334e-20, | |
47 | 1.3373517304936931149e-22, | |
48 | -2.0542335517666727893e-22, | |
49 | 2.7360300486079998448e-23, | |
50 | -1.7323564459105166391e-24, | |
51 | -2.3606190244992872873e-26, | |
52 | 1.8649829417172944307e-26, | |
53 | -2.2180956242071972044e-27, | |
54 | 1.2977819749479936688e-28, | |
55 | 1.1806974749665284062e-30, | |
56 | -1.1245843492770880903e-30, | |
57 | 1.277085175140866204e-31, | |
58 | -7.3914511696151408235e-33, | |
59 | 1.134750257554215761e-35, | |
60 | 4.6391346410587220299e-35, | |
61 | -5.3473368184391988751e-36, | |
62 | 3.2079959236133526229e-37, | |
63 | -4.4458297365507568821e-39, | |
64 | -1.3111745188819887129e-39, | |
65 | 1.6470333525438138868e-40, | |
66 | -1.0562331785035812186e-41, | |
67 | 2.6784429826430494784e-43, | |
68 | 2.4247154948517826897e-44, | |
69 | -3.736587834535612554e-45, | |
70 | 2.6283329809401954491e-46, | |
71 | -9.2981759953768862996e-48, | |
72 | -2.3279424186994705986e-49, | |
73 | 6.1696208352443874204e-50, | |
74 | -4.9282955867709899305e-51, | |
75 | 2.1835131834145106973e-52, | |
76 | -1.2187221891475165553e-54, | |
77 | -7.1171088416628746319e-55, | |
78 | 6.9205040543286892535e-56, | |
79 | -3.6764384683566763277e-57, | |
80 | 8.563098056275654328e-59, | |
81 | 4.9630454283668443848e-60, | |
82 | -7.1542945770816152182e-61, | |
83 | 4.5517276890885041177e-62, | |
84 | -1.6183993053202944344e-63, | |
85 | -3.8180434243999502464e-66, | |
86 | 5.1850524119058482295e-66, | |
87 | -4.1671368092239208861e-67, | |
88 | 1.9162906929373887193e-68, | |
89 | -3.8089281324683658733e-70, | |
90 | -2.2063861055924121016e-71, | |
91 | 2.7722310960098954165e-72, | |
92 | -1.5987660478100181057e-73, | |
93 | 5.3197307804174034028e-75, | |
94 | -8.0517461416842390432e-78, | |
95 | -1.2484629810263795113e-77, | |
96 | 9.6431887683992238428e-79, | |
97 | -4.2827980483017479213e-80, | |
98 | 9.5087142369030441861e-82, | |
99 | 2.7131392138694383464e-83, | |
100 | -4.0968779415069156659e-84, | |
101 | 2.3742980019740160598e-85, | |
102 | -8.2770890210072789764e-87, | |
103 | 9.072497609426645865e-89, | |
104 | 1.0645558195026985633e-89, | |
105 | -9.285335619603754493e-91, | |
106 | 4.3333135927203670323e-92, | |
107 | -1.1745606334673315984e-93, | |
108 | -2.6908010752365215433e-96, | |
109 | 2.3898952892036810357e-96, | |
110 | -1.5569361182789167325e-97, | |
111 | 6.0488748201074133757e-99, | |
112 | -1.2273370571029378615e-100, | |
113 | -2.540738850916238751e-102, | |
114 | 3.7708800953170816508e-103, | |
115 | -2.0089261677502892352e-104, | |
116 | 6.6158100911447349361e-106, | |
117 | -9.2404702022121568081e-108, | |
118 | -4.82072018655246532e-109, | |
119 | 4.4938898756858357188e-110, | |
120 | -2.0497789059725778416e-111, | |
121 | 5.7862770569866937508e-113, | |
122 | -4.5696744624334387424e-115, | |
123 | -5.8267365553303743945e-116, | |
124 | 4.2025380699297338056e-117, | |
125 | -1.6889318527713702846e-118, | |
126 | 4.1226213324018604871e-120, | |
127 | -8.2451196593745569675e-123, | |
128 | -5.2036993784470216679e-123, | |
129 | 3.1616685922306712047e-124, | |
130 | -1.1432359131094236326e-125, | |
131 | 2.4359648735131490197e-127, | |
132 | 8.8701584767164321698e-130, | |
133 | -3.6328610892429035156e-130, | |
134 | 1.9485148907440212068e-131, | |
135 | -6.450096583602651512e-133, | |
136 | 1.215186561728963791e-134, | |
137 | 1.0637863819629713691e-136, | |
138 | -2.0430980587447135517e-137, | |
139 | 9.9760876002985183681e-139, | |
140 | -3.0707428945789381066e-140, | |
141 | 5.2091832948433107534e-142, | |
142 | 6.7131589510935005823e-144, | |
143 | -9.434301219575868381e-145, | |
144 | 4.2908149482548296582e-146, | |
145 | }; | |
146 | ||
147 | #define GAMMA_MIN_X 1.4616321449683623413 | |
148 | #define GAMMA_MIN_Y 0.88560319441088870028 | |
149 | ||
150 | /* Crude upper bound for psi(x) for x > 0, adequate for perturbation bounds | |
151 | for gamma. */ | |
152 | double | |
153 | d_abs_digamma_ubound(double x) | |
154 | { | |
155 | if (x <= 1.0) | |
156 | { | |
157 | return (1.0 + 1e-14) / x + 0.57721566490153286061 - x + 1e-14; | |
158 | } | |
159 | else if (x <= GAMMA_MIN_X) | |
160 | { | |
161 | return -1.250380137503405359*x + 1.8275958024049382196 + 1e-14; | |
162 | } | |
163 | else if (x <= 8.0) | |
164 | { | |
165 | return (x - GAMMA_MIN_X) * (1.7581621716802087234 + | |
166 | x * (-0.74622516195984912595 + x * (0.17009872711678924164 + | |
167 | x * (-0.018637559864260712285 + x * 0.00077747045691426195132)))) + 1e-12; | |
168 | } | |
169 | else if (x <= 128.0) | |
170 | { | |
171 | return 0.75334126757115431475 + x * (0.21045131598436795981 + | |
172 | x * (-0.0075387469533717503617 + x * (0.00017308475161765275722 + | |
173 | x * (-2.4025446500822043239e-6 + x * (1.9547402969088507111e-8 + | |
174 | x * (-8.5654894222045481692e-11 + x * 1.5584520745423393038e-13)))))) + 1e-12; | |
175 | } | |
176 | else | |
177 | { | |
178 | return (mag_d_log_upper_bound(x) + 1.0 / x) * (1.0 + 1e-14); | |
179 | } | |
180 | } | |
181 | ||
182 | /* Upper or lower bound (depending on direction) for gamma(x), | |
183 | assuming x > 0, no overflow. */ | |
184 | double | |
185 | _arb_hypgeom_d_gamma(double x, int direction) | |
186 | { | |
187 | double s, t, p; | |
188 | int i, r; | |
189 | ||
190 | if (direction == 1) | |
191 | p = 1 + 1e-14; | |
192 | else | |
193 | p = 1 - 1e-14; | |
194 | ||
195 | if (x < 0.5) | |
196 | { | |
197 | s = d_polyval(arb_hypgeom_rgamma_d_tab, 19, x); | |
198 | s = 1.0 / (s * x); | |
199 | } | |
200 | else if (x <= 1.5) | |
201 | { | |
202 | s = 1.0 / d_polyval(arb_hypgeom_rgamma_d_tab, 19, x - 1.0); | |
203 | } | |
204 | else | |
205 | { | |
206 | r = (int) (x + 0.5); | |
207 | ||
208 | s = d_polyval(arb_hypgeom_rgamma_d_tab, 19, x - r); | |
209 | ||
210 | t = 1.0; | |
211 | for (i = 0; i < r - 1; i++) | |
212 | t *= (x - i - 1) * p; | |
213 | ||
214 | s = t / s; | |
215 | } | |
216 | ||
217 | return s * p; | |
218 | } | |
219 | ||
220 | /* Set res = [a, b]; not checking overflow or underflow. */ | |
221 | void arb_set_interval_d_fast(arb_t res, double a, double b, slong prec) | |
222 | { | |
223 | double mid, rad; | |
224 | ||
225 | if (a > b) | |
226 | { | |
227 | flint_printf("arb_set_interval_d_fast: expected a < b\n"); | |
228 | flint_abort(); | |
229 | } | |
230 | ||
231 | mid = a + 0.5 * (b - a); | |
232 | rad = (0.5 * (b - a) + (mid * 1e-15)) * (1 + 1e-15); | |
233 | arf_set_d(arb_midref(res), mid); | |
234 | mag_set_d(arb_radref(res), rad); | |
235 | arb_set_round(res, res, prec); | |
236 | } | |
237 | ||
238 | int _arf_increment_fast(arf_t x, slong prec); | |
239 | ||
240 | ||
241 | ||
242 | /* Try to compute gamma(x) using Taylor series. Returns 1 on success, 0 on | |
243 | failure (x too large or precision too large). */ | |
244 | int | |
245 | arb_hypgeom_gamma_taylor(arb_t res, const arb_t x, int reciprocal, slong prec) | |
246 | { | |
247 | double dx, dxerr, log2u, ds, du; | |
248 | slong i, n, wp, r, tail_bound, rad_exp, mid_exp; | |
249 | arf_t s, u, v; | |
250 | short term_prec[ARB_HYPGEOM_GAMMA_TAB_NUM]; | |
251 | int success; | |
252 | ||
253 | #if DEBUG | |
254 | printf("INPUT: "); arb_printd(x, 200); printf("\n"); | |
255 | printf("INPUT prec: %ld\n", prec); | |
256 | #endif | |
257 | ||
258 | /* We don't want to deal with infinities or huge/tiny exponents here. */ | |
259 | if (!ARB_IS_LAGOM(x)) | |
260 | return 0; | |
261 | ||
262 | /* 2^e bounds for the midpoint and radius. */ | |
263 | mid_exp = arf_is_zero(arb_midref(x)) ? WORD_MIN : ARF_EXP(arb_midref(x)); | |
264 | rad_exp = mag_is_zero(arb_radref(x)) ? WORD_MIN : MAG_EXP(arb_radref(x)); | |
265 | ||
266 | /* Containing zero. */ | |
267 | if (rad_exp >= mid_exp && arb_contains_zero(x)) | |
268 | { | |
269 | if (reciprocal) | |
270 | { | |
271 | arb_t t; | |
272 | arb_init(t); | |
273 | arb_add_ui(t, x, 1, prec + 10); | |
274 | ||
275 | if (!arb_contains_zero(t)) | |
276 | { | |
277 | success = arb_hypgeom_gamma_taylor(t, t, reciprocal, prec + 10); | |
278 | if (success) | |
279 | arb_mul(res, x, t, prec); | |
280 | } | |
281 | else | |
282 | { | |
283 | /* todo: accurate wide interval */ | |
284 | success = 0; | |
285 | } | |
286 | ||
287 | arb_clear(t); | |
288 | return success; | |
289 | } | |
290 | else | |
291 | { | |
292 | arb_indeterminate(res); | |
293 | return 1; | |
294 | } | |
295 | } | |
296 | ||
297 | /* Quick exclusion of too large numbers. */ | |
298 | if (mid_exp > 8 || rad_exp > 8) | |
299 | return 0; | |
300 | ||
301 | /* Adjust precision if the input is not precise. */ | |
302 | if (rad_exp != WORD_MIN) | |
303 | prec = FLINT_MIN(prec, -rad_exp + MAG_BITS); | |
304 | prec = FLINT_MAX(prec, 2); | |
305 | ||
306 | /* Midpoint and radius as doubles. */ | |
307 | dx = arf_get_d(arb_midref(x), ARF_RND_NEAR); | |
308 | dxerr = mag_get_d(arb_radref(x)); | |
309 | ||
310 | /* Too large to be efficient (high precision), or gamma(x) may overflow | |
311 | doubles (wide case). */ | |
312 | if (dx + dxerr > 160.0 || dx - dxerr < -160.0) | |
313 | return 0; | |
314 | ||
315 | /* Very close to 0, reduce to gamma(x) = gamma(x + 1) / x. */ | |
316 | if (mid_exp < -32 || (dx - dxerr >= -0.5 && dx - dxerr < ldexp(1.0, -6))) | |
317 | { | |
318 | arb_t t; | |
319 | arb_init(t); | |
320 | arb_add_ui(t, x, 1, prec + 10); | |
321 | ||
322 | #if DEBUG | |
323 | printf("DIVIDING NEAR 0\n"); | |
324 | #endif | |
325 | ||
326 | success = arb_hypgeom_gamma_taylor(t, t, reciprocal, prec + 10); | |
327 | if (success) | |
328 | { | |
329 | if (reciprocal) | |
330 | arb_mul(res, x, t, prec); | |
331 | else | |
332 | arb_div(res, t, x, prec); | |
333 | } | |
334 | ||
335 | arb_clear(t); | |
336 | return success; | |
337 | } | |
338 | ||
339 | /* Nearest (roughly) integer to x, to use as shift for argument reduction | |
340 | to move to the interval [-0.5,0.5]. It's OK that dx is approximate so | |
341 | that the reduced argument will actually lie in [-0.5-eps,0.5+eps]. */ | |
342 | if (dx >= 0.0) | |
343 | r = (slong) (dx + 0.5); | |
344 | else | |
345 | r = -(slong) (-dx + 0.5); | |
346 | ||
347 | /* Tuning cutoff. */ | |
348 | if (prec >= 40) | |
349 | { | |
350 | if (r < -(40 + (prec - 40) / 4)) | |
351 | return 0; | |
352 | ||
353 | if (r > 70 + (prec - 40) / 8) | |
354 | return 0; | |
355 | } | |
356 | ||
357 | /* For negative numbers, reduce to the positive case. */ | |
358 | /* gamma(x) = (-1)^r * gamma(1+x-r) / (rf(1+r-x,-r)*(x-r)) */ | |
359 | /* 1/gamma(x) = (-1)^r * rgamma(1+x-r) * rf(1+r-x,-r) * (x-r) */ | |
360 | if (dx < 0.0) | |
361 | { | |
362 | arb_t t, u, v; | |
363 | ||
364 | arb_init(t); | |
365 | arb_init(u); | |
366 | arb_init(v); | |
367 | ||
368 | arb_sub_si(t, x, r, prec + 10); | |
369 | ||
370 | /* Pole. */ | |
371 | if (!reciprocal && arb_contains_zero(t)) | |
372 | { | |
373 | arb_indeterminate(res); | |
374 | success = 1; | |
375 | } | |
376 | else | |
377 | { | |
378 | arb_add_si(u, x, 1 - r, prec + 10); | |
379 | ||
380 | success = 1; | |
381 | if (reciprocal && !arb_is_positive(u)) | |
382 | { | |
383 | /* todo: accurate wide interval */ | |
384 | success = 0; | |
385 | } | |
386 | ||
387 | success = arb_hypgeom_gamma_taylor(u, u, reciprocal, prec + 10); | |
388 | ||
389 | if (success) | |
390 | { | |
391 | /* Wide bounds for rising factorial. */ | |
392 | if (prec < 44) | |
393 | { | |
394 | double a, b, c, d; | |
395 | ||
396 | c = (-dx + r + 1 - dxerr) * (1 - 1e-14); | |
397 | d = (-dx + r + 1 + dxerr) * (1 + 1e-14); | |
398 | a = b = 1.0; | |
399 | ||
400 | for (i = 0; i < -r; i++) | |
401 | { | |
402 | a = a * ((c + i) * (1 - 1e-15)); | |
403 | b = b * ((d + i) * (1 + 1e-15)); | |
404 | } | |
405 | ||
406 | arb_set_interval_d_fast(v, a, b, 53); | |
407 | ||
408 | if (reciprocal) | |
409 | { | |
410 | arb_mul(res, u, v, prec + 10); | |
411 | arb_mul(res, res, t, prec); | |
412 | } | |
413 | else | |
414 | { | |
415 | arb_div(res, u, v, prec + 10); | |
416 | arb_div(res, res, t, prec); | |
417 | } | |
418 | } | |
419 | else | |
420 | { | |
421 | arb_neg(v, x); | |
422 | arb_add_si(v, v, 1 + r, prec + 10); | |
423 | arb_hypgeom_rising_ui_rec(v, v, -r, prec + 10); | |
424 | arb_mul(v, v, t, prec + 10); | |
425 | ||
426 | if (reciprocal) | |
427 | arb_mul(res, u, v, prec); | |
428 | else | |
429 | arb_div(res, u, v, prec); | |
430 | } | |
431 | ||
432 | if (r % 2) | |
433 | arb_neg(res, res); | |
434 | } | |
435 | } | |
436 | ||
437 | arb_clear(t); | |
438 | arb_clear(u); | |
439 | arb_clear(v); | |
440 | return success; | |
441 | } | |
442 | ||
443 | /* Wide enclosure. */ | |
444 | if (prec < 40 || rad_exp > -16) | |
445 | { | |
446 | double a, b, c; | |
447 | ||
448 | #if DEBUG | |
449 | printf("WIDE CASE\n"); | |
450 | #endif | |
451 | ||
452 | dxerr += ldexp(1.0, mid_exp - 51); | |
453 | dxerr *= (1 + 1e-15); | |
454 | ||
455 | a = (dx - dxerr) * (1 - 1e-15); | |
456 | b = (dx + dxerr) * (1 + 1e-15); | |
457 | ||
458 | if (a >= GAMMA_MIN_X) | |
459 | { | |
460 | a = _arb_hypgeom_d_gamma(a, -1); | |
461 | b = _arb_hypgeom_d_gamma(b, 1); | |
462 | } | |
463 | else if (b <= GAMMA_MIN_X) | |
464 | { | |
465 | c = _arb_hypgeom_d_gamma(a, 1); | |
466 | a = _arb_hypgeom_d_gamma(b, -1); | |
467 | b = c; | |
468 | } | |
469 | else | |
470 | { | |
471 | a = _arb_hypgeom_d_gamma(a, 1); | |
472 | b = _arb_hypgeom_d_gamma(b, 1); | |
473 | b = FLINT_MAX(a, b); | |
474 | a = GAMMA_MIN_Y * (1 - 1e-15); | |
475 | } | |
476 | ||
477 | if (reciprocal) | |
478 | { | |
479 | c = (1.0 / b) * (1 - 1e-15); | |
480 | b = (1.0 / a) * (1 + 1e-15); | |
481 | a = c; | |
482 | } | |
483 | ||
484 | arb_set_interval_d_fast(res, a, b, prec); | |
485 | return 1; | |
486 | } | |
487 | ||
488 | /* Propagated error. */ | |
489 | if (rad_exp == WORD_MIN) | |
490 | { | |
491 | dxerr = 0.0; | |
492 | rad_exp = WORD_MIN; | |
493 | } | |
494 | else | |
495 | { | |
496 | /* First-order relative error estimate plus safety factor to guarantee | |
497 | an upper bound. */ | |
498 | dxerr = MAG_MAN(arb_radref(x)) * ldexp(1.0, -MAG_BITS); | |
499 | dxerr = dxerr * d_abs_digamma_ubound(dx) * 1.001; | |
500 | } | |
501 | ||
502 | #if DEBUG | |
503 | flint_printf("propagated error = %g x 2^%wd\n", dxerr, rad_exp); | |
504 | #endif | |
505 | ||
506 | wp = prec + 6 + FLINT_BIT_COUNT(FLINT_ABS(r)); | |
507 | ||
508 | if (wp > ARB_HYPGEOM_GAMMA_TAB_PREC) | |
509 | return 0; | |
510 | ||
511 | success = 0; | |
512 | ||
513 | arf_init(s); | |
514 | arf_init(u); | |
515 | arf_init(v); | |
516 | ||
517 | /* u = x - r */ | |
518 | arf_sub_si(u, arb_midref(x), r, wp, ARF_RND_DOWN); | |
519 | ||
520 | /* du = dx - r; */ | |
521 | du = arf_get_d(u, ARF_RND_NEAR); | |
522 | ||
523 | /* bound log2(u) */ | |
524 | if (-0.0001 < du && du < 0.0001) | |
525 | log2u = arf_is_zero(u) ? -wp : ARF_EXP(u); | |
526 | else | |
527 | log2u = mag_d_log_upper_bound(du < 0 ? -du : du) * 1.4426950408889634074 * (1 + 1e-14); | |
528 | ||
529 | term_prec[0] = wp; | |
530 | n = 0; | |
531 | ||
532 | for (i = 1; i < ARB_HYPGEOM_GAMMA_TAB_NUM; i++) | |
533 | { | |
534 | tail_bound = arb_hypgeom_gamma_coeffs[i].exp + i * log2u + 5; | |
535 | ||
536 | if (tail_bound <= -wp) | |
537 | { | |
538 | n = i; | |
539 | break; | |
540 | } | |
541 | ||
542 | term_prec[i] = FLINT_MIN(FLINT_MAX(wp + tail_bound, 2), wp); | |
543 | } | |
544 | ||
545 | if (n == 0) | |
546 | { | |
547 | flint_printf("warning: gamma_taylor: unexpected failure\n"); | |
548 | success = 0; | |
549 | goto cleanup; | |
550 | } | |
551 | ||
552 | #if DEBUG | |
553 | printf("COMPUTATION: wp = %ld, du = %g, log2u = %g, n = %ld\n", wp, du, log2u, n); | |
554 | #endif | |
555 | ||
556 | if (wp <= 512 && n <= 128) | |
557 | { | |
558 | ds = 0.0; | |
559 | for (i = n - 1; i >= 1 && term_prec[i] <= 53; i--) | |
560 | { | |
561 | #if DEBUG | |
562 | flint_printf("add term %wd with precision %wd (doubles)\n", i, term_prec[i]); | |
563 | #endif | |
564 | ||
565 | ds = du * ds + arb_hypgeom_rgamma_d_tab[i]; | |
566 | } | |
567 | ||
568 | arf_set_d(s, ds); | |
569 | } | |
570 | else | |
571 | { | |
572 | i = n - 1; | |
573 | } | |
574 | ||
575 | for ( ; i >= 1; i--) | |
576 | { | |
577 | arf_t c; | |
578 | ||
579 | #if DEBUG | |
580 | flint_printf("add term %wd with precision %wd\n", i, term_prec[i]); | |
581 | #endif | |
582 | ||
583 | if (!_arb_hypgeom_gamma_coeff_shallow(c, NULL, i, term_prec[i])) | |
584 | flint_abort(); | |
585 | ||
586 | if (term_prec[i] < wp - 128) | |
587 | { | |
588 | arf_set_round(v, u, term_prec[i], ARF_RND_DOWN); | |
589 | arf_mul(s, s, v, term_prec[i], ARF_RND_DOWN); | |
590 | arf_add(s, s, c, term_prec[i], ARF_RND_DOWN); | |
591 | } | |
592 | else | |
593 | { | |
594 | arf_mul(s, s, u, term_prec[i], ARF_RND_DOWN); | |
595 | arf_add(s, s, c, term_prec[i], ARF_RND_DOWN); | |
596 | } | |
597 | } | |
598 | ||
599 | if (i == 0) | |
600 | { | |
601 | #if DEBUG | |
602 | flint_printf("add term %wd with precision %wd\n", i, term_prec[i]); | |
603 | #endif | |
604 | ||
605 | arf_mul(s, s, u, wp, ARF_RND_DOWN); | |
606 | arf_add_ui(s, s, 1, wp, ARF_RND_DOWN); | |
607 | } | |
608 | ||
609 | if (r == 0 || r == 1) | |
610 | { | |
611 | if (r == 0) | |
612 | arf_mul(s, s, u, wp, ARF_RND_DOWN); | |
613 | ||
614 | if (reciprocal) | |
615 | { | |
616 | arf_set_round(arb_midref(res), s, prec, ARF_RND_DOWN); | |
617 | } | |
618 | else | |
619 | { | |
620 | arf_one(u); | |
621 | arf_div(arb_midref(res), u, s, prec, ARF_RND_DOWN); | |
622 | } | |
623 | arf_mag_set_ulp(arb_radref(res), arb_midref(res), prec - 1); | |
624 | } | |
625 | else if (wp <= 320 || r <= 3) | |
626 | { | |
627 | _arf_increment_fast(u, wp); | |
628 | arf_set(v, u); | |
629 | ||
630 | for (i = 2; i < r; i++) | |
631 | { | |
632 | _arf_increment_fast(u, wp); | |
633 | arf_mul(v, v, u, wp, ARF_RND_DOWN); | |
634 | } | |
635 | ||
636 | if (reciprocal) | |
637 | arf_div(arb_midref(res), s, v, prec, ARF_RND_DOWN); | |
638 | else | |
639 | arf_div(arb_midref(res), v, s, prec, ARF_RND_DOWN); | |
640 | arf_mag_set_ulp(arb_radref(res), arb_midref(res), prec - 1); | |
641 | } | |
642 | else | |
643 | { | |
644 | arb_t t; | |
645 | arb_init(t); | |
646 | _arf_increment_fast(u, wp); | |
647 | arb_set_arf(t, u); | |
648 | arb_hypgeom_rising_ui_rec(t, t, r - 1, wp); | |
649 | ||
650 | if (reciprocal) | |
651 | { | |
652 | arb_set_arf(res, s); | |
653 | arb_div(res, res, t, prec); | |
654 | } | |
655 | else | |
656 | arb_div_arf(res, t, s, prec); | |
657 | ||
658 | arf_mag_add_ulp(arb_radref(res), arb_radref(res), arb_midref(res), prec - 1); | |
659 | arb_clear(t); | |
660 | } | |
661 | ||
662 | /* Add propagated error. */ | |
663 | if (dxerr != 0) | |
664 | { | |
665 | mag_t err; | |
666 | double dy; | |
667 | dy = arf_get_d(arb_midref(res), ARF_RND_UP); | |
668 | dxerr = dxerr * dy * (1 + 1e-15); | |
669 | MAG_SET_D_2EXP(MAG_MAN(err), MAG_EXP(err), dxerr, rad_exp); | |
670 | mag_add(arb_radref(res), arb_radref(res), err); | |
671 | } | |
672 | ||
673 | success = 1; | |
674 | ||
675 | #if DEBUG | |
676 | printf("OUTPUT: "); arb_printd(res, 200); printf("\n"); | |
677 | #endif | |
678 | ||
679 | cleanup: | |
680 | arf_clear(s); | |
681 | arf_clear(u); | |
682 | arf_clear(v); | |
683 | ||
684 | return success; | |
685 | } | |
686 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, const arb_t x, int use_reflect, int digamma, slong prec); | |
14 | int arb_hypgeom_gamma_exact(arb_t res, const arb_t x, int reciprocal, slong prec); | |
15 | void arb_hypgeom_gamma_stirling_inner(arb_t s, const arb_t z, slong N, slong prec); | |
16 | ||
17 | void | |
18 | arb_hypgeom_lgamma_stirling(arb_t y, const arb_t x, slong prec) | |
19 | { | |
20 | int reflect; | |
21 | slong r, n, wp; | |
22 | arb_t t, u; | |
23 | double acc; | |
24 | ||
25 | /* todo: for large x (if exact or accurate enough), increase precision */ | |
26 | acc = arb_rel_accuracy_bits(x); | |
27 | acc = FLINT_MAX(acc, 0); | |
28 | wp = FLINT_MIN(prec, acc + 20); | |
29 | wp = FLINT_MAX(wp, 2); | |
30 | wp = wp + FLINT_BIT_COUNT(wp); | |
31 | ||
32 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, x, 0, 0, wp); | |
33 | ||
34 | arb_init(t); | |
35 | arb_init(u); | |
36 | ||
37 | /* log(gamma(x)) = log(gamma(x+r)) - log(rf(x,r)) */ | |
38 | arb_init(t); | |
39 | arb_init(u); | |
40 | ||
41 | arb_add_ui(t, x, r, wp); | |
42 | arb_hypgeom_gamma_stirling_inner(u, t, n, wp); | |
43 | arb_hypgeom_rising_ui_rec(t, x, r, wp); | |
44 | arb_log(t, t, wp); | |
45 | arb_sub(y, u, t, prec); | |
46 | ||
47 | arb_clear(t); | |
48 | arb_clear(u); | |
49 | } | |
50 | ||
51 | void | |
52 | arb_hypgeom_lgamma(arb_t res, const arb_t x, slong prec) | |
53 | { | |
54 | if (!arb_is_positive(x) || !arb_is_finite(x)) | |
55 | { | |
56 | arb_indeterminate(res); | |
57 | return; | |
58 | } | |
59 | ||
60 | if (arb_hypgeom_gamma_exact(res, x, 0, prec)) | |
61 | { | |
62 | arb_log(res, res, prec); | |
63 | return; | |
64 | } | |
65 | ||
66 | if (arb_hypgeom_gamma_taylor(res, x, 0, prec)) | |
67 | { | |
68 | arb_log(res, res, prec); | |
69 | return; | |
70 | } | |
71 | ||
72 | arb_hypgeom_lgamma_stirling(res, x, prec); | |
73 | } | |
74 |
13 | 13 | void |
14 | 14 | arb_hypgeom_rising_ui_jet(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) |
15 | 15 | { |
16 | if (n <= 7) | |
16 | if (len == 1) | |
17 | { | |
18 | arb_hypgeom_rising_ui_rec(res, x, n, prec); | |
19 | } | |
20 | else if (n <= 7) | |
17 | 21 | { |
18 | 22 | arb_hypgeom_rising_ui_jet_powsum(res, x, n, len, prec); |
19 | 23 | } |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("gamma_fmpq...."); | |
19 | fflush(stdout); | |
20 | flint_randinit(state); | |
21 | ||
22 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
23 | { | |
24 | arb_t r, s; | |
25 | fmpq_t q; | |
26 | slong accuracy, prec, pp, qq; | |
27 | ||
28 | prec = 2 + n_randint(state, 1 << n_randint(state, 12)); | |
29 | prec += 20; | |
30 | ||
31 | arb_init(r); | |
32 | arb_init(s); | |
33 | fmpq_init(q); | |
34 | ||
35 | pp = -100 + n_randint(state, 10000); | |
36 | qq = 1 + n_randint(state, 20); | |
37 | fmpq_set_si(q, pp, qq); | |
38 | ||
39 | arb_hypgeom_gamma_fmpq(r, q, prec); | |
40 | ||
41 | arb_set_fmpq(s, q, prec); | |
42 | arb_hypgeom_gamma(s, s, prec); | |
43 | ||
44 | if (!arb_overlaps(r, s)) | |
45 | { | |
46 | flint_printf("FAIL: containment\n\n"); | |
47 | flint_printf("prec = %wd\n", prec); | |
48 | flint_printf("q = "); fmpq_print(q); flint_printf("\n\n"); | |
49 | flint_printf("r = "); arb_printd(r, prec / 3.33); flint_printf("\n\n"); | |
50 | flint_printf("s = "); arb_printd(s, prec / 3.33); flint_printf("\n\n"); | |
51 | flint_abort(); | |
52 | } | |
53 | ||
54 | if (!(fmpz_is_one(fmpq_denref(q)) && fmpz_sgn(fmpq_numref(q)) <= 0) | |
55 | && FLINT_ABS(pp / qq) < 10) | |
56 | { | |
57 | accuracy = arb_rel_accuracy_bits(r); | |
58 | ||
59 | if (accuracy < prec - 6) | |
60 | { | |
61 | flint_printf("FAIL: poor accuracy\n\n"); | |
62 | flint_printf("prec = %wd\n", prec); | |
63 | flint_printf("q = "); fmpq_print(q); flint_printf("\n\n"); | |
64 | flint_printf("r = "); arb_printd(r, prec / 3.33); flint_printf("\n\n"); | |
65 | flint_abort(); | |
66 | } | |
67 | } | |
68 | ||
69 | arb_clear(r); | |
70 | arb_clear(s); | |
71 | fmpq_clear(q); | |
72 | } | |
73 | ||
74 | for (iter = 0; iter < 50 * arb_test_multiplier(); iter++) | |
75 | { | |
76 | arb_t r, s; | |
77 | fmpq_t q; | |
78 | slong accuracy, prec; | |
79 | ||
80 | prec = 2 + n_randint(state, 25000); | |
81 | ||
82 | arb_init(r); | |
83 | arb_init(s); | |
84 | fmpq_init(q); | |
85 | ||
86 | fmpz_randtest(fmpq_numref(q), state, 3 + n_randlimb(state) % 30); | |
87 | fmpz_randtest_not_zero(fmpq_denref(q), state, 3 + n_randlimb(state) % 30); | |
88 | fmpq_canonicalise(q); | |
89 | ||
90 | arb_hypgeom_gamma_fmpq(r, q, prec); | |
91 | ||
92 | arb_set_fmpq(s, q, prec); | |
93 | arb_hypgeom_gamma(s, s, prec); | |
94 | ||
95 | if (!arb_overlaps(r, s)) | |
96 | { | |
97 | flint_printf("FAIL: containment\n\n"); | |
98 | flint_printf("prec = %wd\n", prec); | |
99 | flint_printf("q = "); fmpq_print(q); flint_printf("\n\n"); | |
100 | flint_printf("r = "); arb_printd(r, prec / 3.33); flint_printf("\n\n"); | |
101 | flint_printf("s = "); arb_printd(s, prec / 3.33); flint_printf("\n\n"); | |
102 | flint_abort(); | |
103 | } | |
104 | ||
105 | if (!(fmpz_is_one(fmpq_denref(q)) && fmpz_sgn(fmpq_numref(q)) <= 0) && | |
106 | fabs(fmpq_get_d(q)) < 10.0) | |
107 | { | |
108 | accuracy = arb_rel_accuracy_bits(r); | |
109 | ||
110 | if (accuracy < prec - 6) | |
111 | { | |
112 | flint_printf("FAIL: poor accuracy\n\n"); | |
113 | flint_printf("prec = %wd\n", prec); | |
114 | flint_printf("q = "); fmpq_print(q); flint_printf("\n\n"); | |
115 | flint_printf("r = "); arb_printn(r, prec / 3.33, 0); flint_printf("\n\n"); | |
116 | flint_printf("s = "); arb_printn(s, prec / 3.33, 0); flint_printf("\n\n"); | |
117 | flint_abort(); | |
118 | } | |
119 | } | |
120 | ||
121 | arb_clear(r); | |
122 | arb_clear(s); | |
123 | fmpq_clear(q); | |
124 | } | |
125 | ||
126 | flint_randclear(state); | |
127 | flint_cleanup(); | |
128 | flint_printf("PASS\n"); | |
129 | return EXIT_SUCCESS; | |
130 | } | |
131 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("gamma_stirling_sum...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | arb_t z, s1, s2; | |
26 | slong prec, N, K; | |
27 | ||
28 | prec = 2 + n_randint(state, 800); | |
29 | N = n_randint(state, 200); | |
30 | K = n_randint(state, 20); | |
31 | ||
32 | arb_init(z); | |
33 | arb_init(s1); | |
34 | arb_init(s2); | |
35 | ||
36 | arb_randtest(z, state, prec, 10 + n_randint(state, 200)); | |
37 | ||
38 | arb_hypgeom_gamma_stirling_sum_horner(s1, z, N, prec); | |
39 | arb_hypgeom_gamma_stirling_sum_improved(s2, z, N, K, prec); | |
40 | ||
41 | if (!arb_overlaps(s1, s2)) | |
42 | { | |
43 | flint_printf("FAIL\n\n"); | |
44 | flint_printf("N = %wd, K = %wd, prec = %wd\n\n", N, K, prec); | |
45 | flint_printf("z = "); arb_printn(z, 1000, 0); flint_printf("\n\n"); | |
46 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
47 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
48 | flint_abort(); | |
49 | } | |
50 | ||
51 | arb_clear(z); | |
52 | arb_clear(s1); | |
53 | arb_clear(s2); | |
54 | } | |
55 | ||
56 | flint_randclear(state); | |
57 | flint_cleanup(); | |
58 | flint_printf("PASS\n"); | |
59 | return EXIT_SUCCESS; | |
60 | } | |
61 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("gamma_taylor...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 100000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | arb_t x, s1, s2, a, b; | |
26 | slong prec, ebits, prec2; | |
27 | int success, success2, alias, reciprocal; | |
28 | ||
29 | if (n_randint(state, 10) == 0) | |
30 | prec = 2 + n_randint(state, 4000); | |
31 | else | |
32 | prec = 2 + n_randint(state, 300); | |
33 | ||
34 | if (n_randint(state, 10) == 0) | |
35 | ebits = 100; | |
36 | else | |
37 | ebits = 10; | |
38 | ||
39 | prec2 = prec + 1 + n_randint(state, 30); | |
40 | ||
41 | arb_init(x); | |
42 | arb_init(s1); | |
43 | arb_init(s2); | |
44 | arb_init(a); | |
45 | arb_init(b); | |
46 | ||
47 | arb_randtest(x, state, prec, ebits); | |
48 | arb_randtest(s1, state, prec, 10); | |
49 | arb_randtest(s2, state, prec, 10); | |
50 | alias = n_randint(state, 2); | |
51 | reciprocal = n_randint(state, 2); | |
52 | ||
53 | if (alias) | |
54 | { | |
55 | success = arb_hypgeom_gamma_taylor(s1, x, reciprocal, prec); | |
56 | } | |
57 | else | |
58 | { | |
59 | arb_set(s1, x); | |
60 | success = arb_hypgeom_gamma_taylor(s1, s1, reciprocal, prec); | |
61 | } | |
62 | ||
63 | if (success) | |
64 | { | |
65 | /* printf("%ld\n", iter); */ | |
66 | ||
67 | /* Compare with Stirling series algorithm. */ | |
68 | arb_hypgeom_gamma_stirling(s2, x, reciprocal, prec); | |
69 | ||
70 | if (!arb_overlaps(s1, s2)) | |
71 | { | |
72 | flint_printf("FAIL\n\n"); | |
73 | flint_printf("prec = %wd\n\n", prec); | |
74 | flint_printf("x = "); arb_printn(x, 1000, 0); flint_printf("\n\n"); | |
75 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
76 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
77 | arb_sub(s1, s1, s2, prec2); | |
78 | flint_printf("s1 - s2 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
79 | flint_abort(); | |
80 | } | |
81 | ||
82 | /* Compare with different level of precision. */ | |
83 | success2 = arb_hypgeom_gamma_taylor(s2, x, reciprocal, prec2); | |
84 | ||
85 | if (success2 && !arb_overlaps(s1, s2)) | |
86 | { | |
87 | flint_printf("FAIL (2)\n\n"); | |
88 | flint_printf("prec = %wd\n\n", prec); | |
89 | flint_printf("x = "); arb_printn(x, 1000, 0); flint_printf("\n\n"); | |
90 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
91 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
92 | arb_sub(s1, s1, s2, prec2); | |
93 | flint_printf("s1 - s2 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
94 | flint_abort(); | |
95 | } | |
96 | ||
97 | arf_set_mag(arb_midref(a), arb_radref(x)); | |
98 | arf_set_mag(arb_midref(b), arb_radref(x)); | |
99 | ||
100 | arb_sub_arf(a, a, arb_midref(x), prec + 30); | |
101 | arb_neg(a, a); | |
102 | ||
103 | arb_add_arf(b, b, arb_midref(x), prec + 30); | |
104 | ||
105 | success2 = arb_hypgeom_gamma_taylor(s2, a, reciprocal, prec2); | |
106 | ||
107 | if (success2 && !arb_overlaps(s1, s2)) | |
108 | { | |
109 | flint_printf("FAIL (3)\n\n"); | |
110 | flint_printf("prec = %wd\n\n", prec); | |
111 | flint_printf("x = "); arb_printn(x, 1000, 0); flint_printf("\n\n"); | |
112 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
113 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
114 | arb_sub(s1, s1, s2, prec2); | |
115 | flint_printf("s1 - s2 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
116 | flint_abort(); | |
117 | } | |
118 | ||
119 | success2 = arb_hypgeom_gamma_taylor(s2, b, reciprocal, prec2); | |
120 | ||
121 | if (success2 && !arb_overlaps(s1, s2)) | |
122 | { | |
123 | flint_printf("FAIL (4)\n\n"); | |
124 | flint_printf("prec = %wd\n\n", prec); | |
125 | flint_printf("x = "); arb_printn(x, 1000, 0); flint_printf("\n\n"); | |
126 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
127 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
128 | arb_sub(s1, s1, s2, prec2); | |
129 | flint_printf("s1 - s2 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
130 | flint_abort(); | |
131 | } | |
132 | ||
133 | arb_add(a, a, b, prec + 30); | |
134 | arb_mul_2exp_si(a, a, -1); | |
135 | ||
136 | success2 = arb_hypgeom_gamma_taylor(s2, b, reciprocal, prec2); | |
137 | ||
138 | if (success2 && !arb_overlaps(s1, s2)) | |
139 | { | |
140 | flint_printf("FAIL (5)\n\n"); | |
141 | flint_printf("prec = %wd\n\n", prec); | |
142 | flint_printf("x = "); arb_printn(x, 1000, 0); flint_printf("\n\n"); | |
143 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
144 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
145 | arb_sub(s1, s1, s2, prec2); | |
146 | flint_printf("s1 - s2 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
147 | flint_abort(); | |
148 | } | |
149 | } | |
150 | ||
151 | arb_clear(x); | |
152 | arb_clear(s1); | |
153 | arb_clear(s2); | |
154 | arb_clear(a); | |
155 | arb_clear(b); | |
156 | } | |
157 | ||
158 | flint_randclear(state); | |
159 | flint_cleanup(); | |
160 | flint_printf("PASS\n"); | |
161 | return EXIT_SUCCESS; | |
162 | } |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | ARB_DLL extern arb_hypgeom_gamma_coeff_t arb_hypgeom_gamma_coeffs[ARB_HYPGEOM_GAMMA_TAB_NUM]; | |
14 | ||
15 | int main() | |
16 | { | |
17 | flint_rand_t state; | |
18 | ||
19 | flint_printf("gamma_taylor_tab...."); | |
20 | fflush(stdout); | |
21 | ||
22 | flint_randinit(state); | |
23 | ||
24 | { | |
25 | slong n, prec, maxprec; | |
26 | arb_t c; | |
27 | arf_t d; | |
28 | arb_ptr v, f; | |
29 | ||
30 | v = _arb_vec_init(ARB_HYPGEOM_GAMMA_TAB_NUM); | |
31 | f = _arb_vec_init(2); | |
32 | ||
33 | arb_one(f); | |
34 | arb_one(f + 1); | |
35 | arf_init(d); | |
36 | ||
37 | _arb_poly_rgamma_series(v, f, 2, ARB_HYPGEOM_GAMMA_TAB_NUM, | |
38 | ARB_HYPGEOM_GAMMA_TAB_PREC + 2 * ARB_HYPGEOM_GAMMA_TAB_NUM); | |
39 | ||
40 | for (n = 1; n < ARB_HYPGEOM_GAMMA_TAB_NUM; n++) | |
41 | { | |
42 | maxprec = arb_hypgeom_gamma_coeffs[n].nlimbs; | |
43 | maxprec *= 64; | |
44 | ||
45 | for (prec = 2; prec <= ARB_HYPGEOM_GAMMA_TAB_PREC; prec += (prec < maxprec - 64 ? n_randint(state, 64) : 1)) | |
46 | { | |
47 | if (_arb_hypgeom_gamma_coeff_shallow(arb_midref(c), arb_radref(c), n, prec)) | |
48 | { | |
49 | if (!arb_contains(c, v + n)) | |
50 | { | |
51 | flint_printf("FAIL\n\n"); | |
52 | flint_printf("prec = %wd, n = %wd\n\n", prec, n); | |
53 | flint_printf("c = "); arb_printn(c, 1000, 0); flint_printf("\n\n"); | |
54 | flint_printf("v = "); arb_printn(v + n, 1000, 0); flint_printf("\n\n"); | |
55 | flint_abort(); | |
56 | } | |
57 | } | |
58 | } | |
59 | ||
60 | _arb_hypgeom_gamma_coeff_shallow(arb_midref(c), arb_radref(c), n, maxprec); | |
61 | arf_set_round(d, arb_midref(v + n), maxprec, ARF_RND_DOWN); | |
62 | ||
63 | if (!arf_equal(arb_midref(c), d)) | |
64 | { | |
65 | flint_printf("FAIL\n\n"); | |
66 | flint_printf("prec = %wd, n = %wd\n\n", prec, n); | |
67 | flint_printf("c = "); arb_printn(c, 1000, 0); flint_printf("\n\n"); | |
68 | flint_printf("d = "); arf_printd(d, 1000); flint_printf("\n\n"); | |
69 | flint_abort(); | |
70 | } | |
71 | } | |
72 | ||
73 | _arb_vec_clear(v, ARB_HYPGEOM_GAMMA_TAB_NUM); | |
74 | _arb_vec_clear(f, 2); | |
75 | arf_clear(d); | |
76 | } | |
77 | ||
78 | flint_randclear(state); | |
79 | flint_cleanup(); | |
80 | flint_printf("PASS\n"); | |
81 | return EXIT_SUCCESS; | |
82 | } | |
83 |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_hypgeom.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | ||
18 | flint_printf("lgamma...."); | |
19 | fflush(stdout); | |
20 | ||
21 | flint_randinit(state); | |
22 | ||
23 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
24 | { | |
25 | arb_t z, s1, s2, a, b; | |
26 | slong prec, ebits, prec2; | |
27 | ||
28 | prec = 2 + n_randint(state, 200); | |
29 | ||
30 | if (n_randint(state, 10) == 0) | |
31 | prec = 2 + n_randint(state, 1000); | |
32 | ||
33 | if (n_randint(state, 10) == 0) | |
34 | ebits = 100; | |
35 | else | |
36 | ebits = 10; | |
37 | ebits = 2; | |
38 | ||
39 | prec2 = 2 + n_randint(state, 200); | |
40 | ||
41 | arb_init(z); | |
42 | arb_init(s1); | |
43 | arb_init(s2); | |
44 | arb_init(a); | |
45 | arb_init(b); | |
46 | ||
47 | arb_randtest(z, state, prec, ebits); | |
48 | arb_randtest(s1, state, prec, 10); | |
49 | arb_randtest(s2, state, prec, 10); | |
50 | ||
51 | if (n_randint(state, 2)) | |
52 | { | |
53 | arb_hypgeom_lgamma(s1, z, prec); | |
54 | } | |
55 | else | |
56 | { | |
57 | arb_set(s1, z); | |
58 | arb_hypgeom_lgamma(s1, s1, prec); | |
59 | } | |
60 | ||
61 | arb_add_ui(s2, z, 1, prec2); | |
62 | arb_hypgeom_lgamma(s2, s2, prec2); | |
63 | arb_log(a, z, prec2); | |
64 | arb_sub(s2, s2, a, prec2); | |
65 | ||
66 | if (!arb_overlaps(s1, s2)) | |
67 | { | |
68 | flint_printf("FAIL\n\n"); | |
69 | flint_printf("prec = %wd\n\n", prec); | |
70 | flint_printf("z = "); arb_printn(z, 1000, 0); flint_printf("\n\n"); | |
71 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
72 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
73 | arb_sub(s1, s1, s2, prec2); | |
74 | flint_printf("s1 - s2 = "); arb_printd(s1, 1000); flint_printf("\n\n"); | |
75 | flint_abort(); | |
76 | } | |
77 | ||
78 | arb_set(a, z); | |
79 | mag_zero(arb_radref(a)); | |
80 | ||
81 | if (n_randint(state, 2)) | |
82 | { | |
83 | arf_set_mag(arb_midref(b), arb_radref(z)); | |
84 | ||
85 | if (n_randint(state, 2)) | |
86 | arb_neg(b, b); | |
87 | ||
88 | arb_add(a, a, b, prec); | |
89 | } | |
90 | ||
91 | arb_hypgeom_lgamma(s2, a, prec); | |
92 | ||
93 | if (!arb_overlaps(s1, s2)) | |
94 | { | |
95 | flint_printf("FAIL (2)\n\n"); | |
96 | flint_printf("prec = %wd\n\n", prec); | |
97 | flint_printf("z = "); arb_printn(z, 1000, 0); flint_printf("\n\n"); | |
98 | flint_printf("a = "); arb_printn(a, 1000, 0); flint_printf("\n\n"); | |
99 | flint_printf("s1 = "); arb_printn(s1, 1000, 0); flint_printf("\n\n"); | |
100 | flint_printf("s2 = "); arb_printn(s2, 1000, 0); flint_printf("\n\n"); | |
101 | arb_sub(s1, s1, s2, prec2); | |
102 | flint_printf("s1 - s2 = "); arb_printd(s1, 1000); flint_printf("\n\n"); | |
103 | flint_abort(); | |
104 | } | |
105 | ||
106 | arb_clear(z); | |
107 | arb_clear(s1); | |
108 | arb_clear(s2); | |
109 | arb_clear(a); | |
110 | arb_clear(b); | |
111 | } | |
112 | ||
113 | flint_randclear(state); | |
114 | flint_cleanup(); | |
115 | flint_printf("PASS\n"); | |
116 | return EXIT_SUCCESS; | |
117 | } |
33 | 33 | void arb_hypgeom_rising_ui_jet_rs(arb_ptr res, const arb_t x, ulong n, ulong m, slong len, slong prec); |
34 | 34 | void arb_hypgeom_rising_ui_jet_bs(arb_ptr res, const arb_t x, ulong n, slong len, slong prec); |
35 | 35 | void arb_hypgeom_rising_ui_jet(arb_ptr res, const arb_t x, ulong n, slong len, slong prec); |
36 | ||
37 | void _arb_hypgeom_gamma_stirling_term_bounds(slong * bound, const mag_t zinv, slong N); | |
38 | void arb_hypgeom_gamma_stirling_sum_horner(arb_t s, const arb_t z, slong N, slong prec); | |
39 | void arb_hypgeom_gamma_stirling_sum_improved(arb_t s, const arb_t z, slong N, slong K, slong prec); | |
40 | ||
41 | #define ARB_HYPGEOM_GAMMA_TAB_NUM 536 | |
42 | #define ARB_HYPGEOM_GAMMA_TAB_PREC 3456 | |
43 | ||
44 | typedef struct | |
45 | { | |
46 | short exp; | |
47 | short tab_pos; | |
48 | char nlimbs; | |
49 | char negative; | |
50 | } arb_hypgeom_gamma_coeff_t; | |
51 | ||
52 | ARB_DLL extern arb_hypgeom_gamma_coeff_t arb_hypgeom_gamma_coeffs[ARB_HYPGEOM_GAMMA_TAB_NUM]; | |
53 | int _arb_hypgeom_gamma_coeff_shallow(arf_t c, mag_t err, slong i, slong prec); | |
54 | ||
55 | void arb_hypgeom_gamma_stirling(arb_t res, const arb_t x, int reciprocal, slong prec); | |
56 | int arb_hypgeom_gamma_taylor(arb_t res, const arb_t x, int reciprocal, slong prec); | |
57 | ||
58 | void arb_hypgeom_gamma(arb_t y, const arb_t x, slong prec); | |
59 | void arb_hypgeom_rgamma(arb_t y, const arb_t x, slong prec); | |
60 | ||
61 | void arb_hypgeom_lgamma(arb_t y, const arb_t x, slong prec); | |
62 | ||
63 | void arb_hypgeom_gamma_fmpq(arb_t y, const fmpq_t x, slong prec); | |
64 | void arb_hypgeom_gamma_fmpz(arb_t y, const fmpz_t x, slong prec); | |
36 | 65 | |
37 | 66 | void arb_hypgeom_pfq(arb_t res, arb_srcptr a, slong p, arb_srcptr b, slong q, |
38 | 67 | const arb_t z, int regularized, slong prec); |
10 | 10 | |
11 | 11 | #include "arb_poly.h" |
12 | 12 | |
13 | void arb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
13 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
14 | 14 | const arb_t x, int use_reflect, int digamma, slong prec); |
15 | 15 | |
16 | 16 | void _arb_poly_gamma_stirling_eval2(arb_ptr res, const arb_t z, slong n, slong num, int diff, slong prec); |
79 | 79 | else |
80 | 80 | { |
81 | 81 | /* use Stirling series */ |
82 | arb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 1, wp); | |
82 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 1, wp); | |
83 | 83 | |
84 | 84 | /* psi(x) = psi((1-x)+r) - h(1-x,r) - pi*cot(pi*x) */ |
85 | 85 | if (reflect) |
12 | 12 | |
13 | 13 | void arb_gamma_stirling_bound(mag_ptr err, const arb_t x, slong k0, slong knum, slong n); |
14 | 14 | |
15 | void arb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
15 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
16 | 16 | const arb_t x, int use_reflect, int digamma, slong prec); |
17 | 17 | |
18 | 18 | void arb_gamma_stirling_coeff(arb_t b, ulong k, int digamma, slong prec); |
276 | 276 | else |
277 | 277 | { |
278 | 278 | /* otherwise use Stirling series */ |
279 | arb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
279 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
280 | 280 | |
281 | 281 | /* gamma(h) = (rf(1-h, r) * pi) / (gamma(1-h+r) sin(pi h)), h = h0 + t*/ |
282 | 282 | if (reflect) |
0 | /* | |
1 | Copyright (C) 2021 Matthias Gessinger | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_poly.h" | |
12 | ||
13 | void | |
14 | _arb_poly_graeffe_transform(arb_ptr b, arb_srcptr a, slong len, slong prec) | |
15 | { | |
16 | slong lo, le, ls, deg, i; | |
17 | arb_ptr pe, po; | |
18 | ||
19 | if (len <= 1) | |
20 | { | |
21 | if (len) | |
22 | arb_sqr(b, a, prec); | |
23 | return; | |
24 | } | |
25 | ||
26 | deg = len - 1; | |
27 | lo = len / 2; | |
28 | ls = 2 * lo - 1; | |
29 | le = deg / 2 + 1; | |
30 | po = _arb_vec_init(lo); | |
31 | pe = _arb_vec_init(FLINT_MAX(le, ls)); | |
32 | ||
33 | for (i = deg; i >= 0; i--) | |
34 | { | |
35 | if (i % 2 == 0) | |
36 | arb_set(pe + i / 2, a + i); | |
37 | else | |
38 | arb_set(po + i / 2, a + i); | |
39 | } | |
40 | ||
41 | _arb_poly_mul(b, pe, le, pe, le, prec); | |
42 | _arb_poly_mul(pe, po, lo, po, lo, prec); | |
43 | _arb_poly_sub(b + 1, b + 1, ls, pe, ls, prec); | |
44 | ||
45 | if (len % 2 == 0) | |
46 | { | |
47 | _arb_vec_neg(b, b, deg); | |
48 | arb_set(b + deg, pe + (deg - 1)); | |
49 | } | |
50 | ||
51 | _arb_vec_clear(pe, FLINT_MAX(le, ls)); | |
52 | _arb_vec_clear(po, lo); | |
53 | } | |
54 | ||
55 | void | |
56 | arb_poly_graeffe_transform(arb_poly_t b, const arb_poly_t a, slong prec) | |
57 | { | |
58 | arb_poly_fit_length(b, a->length); | |
59 | _arb_poly_graeffe_transform(b->coeffs, a->coeffs, a->length, prec); | |
60 | _arb_poly_set_length(b, a->length); | |
61 | } |
9 | 9 | */ |
10 | 10 | |
11 | 11 | #include "arb_poly.h" |
12 | #include "arb_hypgeom.h" | |
12 | 13 | |
13 | 14 | slong arf_get_si(const arf_t x, arf_rnd_t rnd); |
14 | 15 | |
15 | 16 | void _arb_poly_lgamma_series_at_one(arb_ptr u, slong len, slong prec); |
16 | 17 | |
17 | void arb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
18 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
18 | 19 | const arb_t x, int use_reflect, int digamma, slong prec); |
19 | 20 | |
20 | 21 | void _arb_poly_gamma_stirling_eval(arb_ptr res, const arb_t z, slong n, slong num, slong prec); |
22 | 23 | static __inline__ void |
23 | 24 | _log_rising_ui_series(arb_ptr t, const arb_t x, slong r, slong len, slong prec) |
24 | 25 | { |
25 | arb_struct f[2]; | |
26 | 26 | slong rflen; |
27 | 27 | |
28 | arb_init(f); | |
29 | arb_init(f + 1); | |
30 | arb_set(f, x); | |
31 | arb_one(f + 1); | |
32 | ||
33 | 28 | rflen = FLINT_MIN(len, r + 1); |
34 | _arb_poly_rising_ui_series(t, f, FLINT_MIN(2, len), r, rflen, prec); | |
29 | arb_hypgeom_rising_ui_jet(t, x, r, rflen, prec); | |
35 | 30 | _arb_poly_log_series(t, t, rflen, len, prec); |
36 | ||
37 | arb_clear(f); | |
38 | arb_clear(f + 1); | |
39 | 31 | } |
40 | 32 | |
41 | 33 | void |
90 | 82 | else |
91 | 83 | { |
92 | 84 | /* otherwise use Stirling series */ |
93 | arb_gamma_stirling_choose_param(&reflect, &r, &n, h, 0, 0, wp); | |
85 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 0, 0, wp); | |
94 | 86 | arb_add_ui(zr, h, r, wp); |
95 | 87 | _arb_poly_gamma_stirling_eval(u, zr, n, len, wp); |
96 | 88 |
14 | 14 | |
15 | 15 | void _arb_poly_lgamma_series_at_one(arb_ptr u, slong len, slong prec); |
16 | 16 | |
17 | void arb_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
17 | void arb_hypgeom_gamma_stirling_choose_param(int * reflect, slong * r, slong * n, | |
18 | 18 | const arb_t x, int use_reflect, int digamma, slong prec); |
19 | 19 | |
20 | 20 | void _arb_poly_gamma_stirling_eval(arb_ptr res, const arb_t z, slong n, slong num, slong prec); |
100 | 100 | else |
101 | 101 | { |
102 | 102 | /* otherwise use Stirling series */ |
103 | arb_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
103 | arb_hypgeom_gamma_stirling_choose_param(&reflect, &r, &n, h, 1, 0, wp); | |
104 | 104 | |
105 | 105 | /* rgamma(h) = (gamma(1-h+r) sin(pi h)) / (rf(1-h, r) * pi), h = h0 + t*/ |
106 | 106 | if (reflect) |
0 | /* | |
1 | Copyright (C) 2013 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arb_poly.h" | |
12 | ||
13 | int main() | |
14 | { | |
15 | slong iter; | |
16 | flint_rand_t state; | |
17 | arb_poly_t a, b, c; | |
18 | arb_ptr roots; | |
19 | arb_t leading; | |
20 | ||
21 | flint_printf("graeffe_transform...."); | |
22 | fflush(stdout); | |
23 | ||
24 | flint_randinit(state); | |
25 | ||
26 | arb_poly_init(a); | |
27 | arb_poly_init(b); | |
28 | arb_poly_init(c); | |
29 | ||
30 | arb_init(leading); | |
31 | ||
32 | for (iter = 0; iter < 200 * arb_test_multiplier(); iter++) | |
33 | { | |
34 | slong n, prec, i; | |
35 | ||
36 | n = n_randint(state, 20); | |
37 | prec = 2 + n_randint(state, 256); | |
38 | ||
39 | roots = _arb_vec_init(n); | |
40 | ||
41 | arb_randtest(leading, state, prec, n_randint(state, 16)); | |
42 | ||
43 | for (i = 0; i < n; i++) | |
44 | arb_randtest(roots + i, state, prec, n_randint(state, 16)); | |
45 | arb_poly_product_roots(a, roots, n, prec); | |
46 | arb_poly_scalar_mul(a, a, leading, prec); | |
47 | ||
48 | for (i = 0; i < n; i++) | |
49 | arb_sqr(roots + i, roots + i, prec); | |
50 | arb_sqr(leading, leading, prec); | |
51 | arb_poly_product_roots(c, roots, n, prec); | |
52 | arb_poly_scalar_mul(c, c, leading, prec); | |
53 | ||
54 | arb_poly_graeffe_transform(b, a, prec); | |
55 | if (!arb_poly_overlaps(b, c)) | |
56 | { | |
57 | flint_printf("FAIL (overlap)\n\n"); | |
58 | flint_printf("n = %wd, prec = %wd\n\n", n, prec); | |
59 | ||
60 | flint_printf("a: "); arb_poly_printd(a, 15); flint_printf("\n\n"); | |
61 | flint_printf("b: "); arb_poly_printd(b, 15); flint_printf("\n\n"); | |
62 | flint_printf("c: "); arb_poly_printd(c, 15); flint_printf("\n\n"); | |
63 | ||
64 | flint_abort(); | |
65 | } | |
66 | ||
67 | arb_poly_graeffe_transform(a, a, prec); | |
68 | if (!arb_poly_equal(a, b)) | |
69 | { | |
70 | flint_printf("FAIL (aliasing)\n\n"); | |
71 | flint_printf("n = %wd, prec = %wd\n\n", n, prec); | |
72 | ||
73 | flint_printf("a: "); arb_poly_printd(a, 15); flint_printf("\n\n"); | |
74 | flint_printf("b: "); arb_poly_printd(b, 15); flint_printf("\n\n"); | |
75 | flint_printf("c: "); arb_poly_printd(c, 15); flint_printf("\n\n"); | |
76 | ||
77 | flint_abort(); | |
78 | } | |
79 | ||
80 | _arb_vec_clear(roots, n); | |
81 | } | |
82 | ||
83 | arb_poly_clear(a); | |
84 | arb_poly_clear(b); | |
85 | arb_poly_clear(c); | |
86 | ||
87 | arb_clear(leading); | |
88 | ||
89 | flint_randclear(state); | |
90 | flint_cleanup(); | |
91 | flint_printf("PASS\n"); | |
92 | return EXIT_SUCCESS; | |
93 | } | |
94 |
511 | 511 | |
512 | 512 | void arb_poly_binomial_transform(arb_poly_t b, const arb_poly_t a, slong len, slong prec); |
513 | 513 | |
514 | void _arb_poly_graeffe_transform(arb_ptr b, arb_srcptr a, slong len, slong prec); | |
515 | ||
516 | void arb_poly_graeffe_transform(arb_poly_t b, const arb_poly_t a, slong prec); | |
517 | ||
514 | 518 | /* Special functions */ |
515 | 519 | |
516 | 520 | void _arb_poly_pow_ui_trunc_binexp(arb_ptr res, |
0 | /* | |
1 | Copyright (C) 2021 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arf.h" | |
12 | ||
13 | int | |
14 | arf_fma(arf_ptr res, arf_srcptr x, arf_srcptr y, arf_srcptr z, slong prec, arf_rnd_t rnd) | |
15 | { | |
16 | mp_size_t xn, yn, zn, tn, alloc; | |
17 | mp_srcptr xptr, yptr, zptr; | |
18 | mp_ptr tptr, tptr2; | |
19 | fmpz_t texp; | |
20 | slong shift; | |
21 | int tsgnbit, inexact; | |
22 | ARF_MUL_TMP_DECL | |
23 | ||
24 | if (arf_is_special(x) || arf_is_special(y) || arf_is_special(z)) | |
25 | { | |
26 | if (arf_is_zero(z)) | |
27 | { | |
28 | return arf_mul(res, x, y, prec, rnd); | |
29 | } | |
30 | else if (arf_is_finite(x) && arf_is_finite(y)) | |
31 | { | |
32 | return arf_set_round(res, z, prec, rnd); | |
33 | } | |
34 | else | |
35 | { | |
36 | /* todo: speed up */ | |
37 | arf_t t; | |
38 | arf_init(t); | |
39 | arf_mul(t, x, y, ARF_PREC_EXACT, ARF_RND_DOWN); | |
40 | inexact = arf_add(res, z, t, prec, rnd); | |
41 | arf_clear(t); | |
42 | return inexact; | |
43 | } | |
44 | } | |
45 | ||
46 | tsgnbit = ARF_SGNBIT(x) ^ ARF_SGNBIT(y); | |
47 | ARF_GET_MPN_READONLY(xptr, xn, x); | |
48 | ARF_GET_MPN_READONLY(yptr, yn, y); | |
49 | ARF_GET_MPN_READONLY(zptr, zn, z); | |
50 | ||
51 | fmpz_init(texp); | |
52 | ||
53 | _fmpz_add2_fast(texp, ARF_EXPREF(x), ARF_EXPREF(y), 0); | |
54 | shift = _fmpz_sub_small(ARF_EXPREF(z), texp); | |
55 | ||
56 | alloc = tn = xn + yn; | |
57 | ARF_MUL_TMP_ALLOC(tptr2, alloc) | |
58 | tptr = tptr2; | |
59 | ||
60 | ARF_MPN_MUL(tptr, xptr, xn, yptr, yn); | |
61 | ||
62 | tn -= (tptr[0] == 0); | |
63 | tptr += (tptr[0] == 0); | |
64 | ||
65 | if (shift >= 0) | |
66 | inexact = _arf_add_mpn(res, zptr, zn, ARF_SGNBIT(z), ARF_EXPREF(z), | |
67 | tptr, tn, tsgnbit, shift, prec, rnd); | |
68 | else | |
69 | inexact = _arf_add_mpn(res, tptr, tn, tsgnbit, texp, | |
70 | zptr, zn, ARF_SGNBIT(z), -shift, prec, rnd); | |
71 | ||
72 | ARF_MUL_TMP_FREE(tptr2, alloc) | |
73 | fmpz_clear(texp); | |
74 | ||
75 | return inexact; | |
76 | } | |
77 |
78 | 78 | |
79 | 79 | int arf_load_file(arf_t x, FILE* stream) |
80 | 80 | { |
81 | mpz_t mantissa, exponent; | |
82 | fmpz_t mantissa_, exponent_; | |
81 | fmpz_t mantissa, exponent; | |
82 | __mpz_struct *mpz_mantissa, *mpz_exponent; | |
83 | int err; | |
83 | 84 | |
84 | mpz_init(mantissa); | |
85 | mpz_init(exponent); | |
85 | fmpz_init(mantissa); | |
86 | fmpz_init(exponent); | |
86 | 87 | |
87 | if (mpz_inp_str(mantissa, stream, 16) == 0) return 1; | |
88 | if (mpz_inp_str(exponent, stream, 16) == 0) return 1; | |
88 | mpz_mantissa = _fmpz_promote(mantissa); | |
89 | mpz_exponent = _fmpz_promote(exponent); | |
89 | 90 | |
90 | fmpz_init_set_readonly(mantissa_, mantissa); | |
91 | fmpz_init_set_readonly(exponent_, exponent); | |
91 | err = 0; | |
92 | 92 | |
93 | arf_set_fmpz_2exp_dump(x, mantissa_, exponent_); | |
93 | if (mpz_inp_str(mpz_mantissa, stream, 16) == 0) | |
94 | err = 1; | |
94 | 95 | |
95 | mpz_clear(mantissa); | |
96 | mpz_clear(exponent); | |
96 | if (!err && mpz_inp_str(mpz_exponent, stream, 16) == 0) | |
97 | err = 1; | |
97 | 98 | |
98 | return 0; | |
99 | _fmpz_demote_val(mantissa); | |
100 | _fmpz_demote_val(exponent); | |
101 | ||
102 | if (!err) | |
103 | arf_set_fmpz_2exp_dump(x, mantissa, exponent); | |
104 | ||
105 | fmpz_clear(mantissa); | |
106 | fmpz_clear(exponent); | |
107 | ||
108 | return err; | |
99 | 109 | } |
100 | 110 |
0 | /* | |
1 | Copyright (C) 2012 Fredrik Johansson | |
2 | ||
3 | This file is part of Arb. | |
4 | ||
5 | Arb is free software: you can redistribute it and/or modify it under | |
6 | the terms of the GNU Lesser General Public License (LGPL) as published | |
7 | by the Free Software Foundation; either version 2.1 of the License, or | |
8 | (at your option) any later version. See <http://www.gnu.org/licenses/>. | |
9 | */ | |
10 | ||
11 | #include "arf.h" | |
12 | ||
13 | int | |
14 | arf_fma_naive(arf_t res, const arf_t x, const arf_t y, const arf_t z, slong prec, arf_rnd_t rnd) | |
15 | { | |
16 | arf_t t; | |
17 | int inexact; | |
18 | ||
19 | arf_init(t); | |
20 | arf_mul(t, x, y, ARF_PREC_EXACT, ARF_RND_DOWN); | |
21 | ||
22 | inexact = arf_add(res, z, t, prec, rnd); | |
23 | ||
24 | arf_clear(t); | |
25 | ||
26 | return inexact; | |
27 | } | |
28 | ||
29 | int main() | |
30 | { | |
31 | slong iter; | |
32 | flint_rand_t state; | |
33 | ||
34 | flint_printf("fma...."); | |
35 | fflush(stdout); | |
36 | ||
37 | flint_randinit(state); | |
38 | ||
39 | for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) | |
40 | { | |
41 | arf_t x, y, z, res1, res2; | |
42 | slong prec, r1, r2; | |
43 | arf_rnd_t rnd; | |
44 | int aliasing; | |
45 | ||
46 | arf_init(x); | |
47 | arf_init(y); | |
48 | arf_init(z); | |
49 | arf_init(res1); | |
50 | arf_init(res2); | |
51 | ||
52 | prec = 2 + n_randint(state, 200); | |
53 | ||
54 | arf_randtest_special(x, state, 200, 100); | |
55 | arf_randtest_special(y, state, 200, 100); | |
56 | arf_randtest_special(z, state, 200, 100); | |
57 | arf_randtest_special(res1, state, 200, 100); | |
58 | arf_randtest_special(res2, state, 200, 100); | |
59 | ||
60 | if (n_randint(state, 10) == 0 && | |
61 | fmpz_bits(ARF_EXPREF(x)) < 10 && | |
62 | fmpz_bits(ARF_EXPREF(y)) < 10 && | |
63 | fmpz_bits(ARF_EXPREF(z)) < 10) | |
64 | { | |
65 | prec = ARF_PREC_EXACT; | |
66 | } | |
67 | ||
68 | switch (n_randint(state, 5)) | |
69 | { | |
70 | case 0: rnd = ARF_RND_DOWN; break; | |
71 | case 1: rnd = ARF_RND_UP; break; | |
72 | case 2: rnd = ARF_RND_FLOOR; break; | |
73 | case 3: rnd = ARF_RND_CEIL; break; | |
74 | default: rnd = ARF_RND_NEAR; break; | |
75 | } | |
76 | ||
77 | aliasing = n_randint(state, 7); | |
78 | ||
79 | switch (aliasing) | |
80 | { | |
81 | case 0: | |
82 | r1 = arf_fma(res1, x, y, z, prec, rnd); | |
83 | r2 = arf_fma_naive(res2, x, y, z, prec, rnd); | |
84 | break; | |
85 | case 1: | |
86 | arf_set(res1, z); | |
87 | r1 = arf_fma(res1, x, y, res1, prec, rnd); | |
88 | r2 = arf_fma_naive(res2, x, y, z, prec, rnd); | |
89 | break; | |
90 | case 2: | |
91 | arf_set(res1, x); | |
92 | r1 = arf_fma(res1, res1, y, z, prec, rnd); | |
93 | r2 = arf_fma_naive(res2, x, y, z, prec, rnd); | |
94 | break; | |
95 | case 3: | |
96 | arf_set(res1, y); | |
97 | r1 = arf_fma(res1, x, res1, z, prec, rnd); | |
98 | r2 = arf_fma_naive(res2, x, y, z, prec, rnd); | |
99 | break; | |
100 | case 4: | |
101 | r1 = arf_fma(res1, x, x, z, prec, rnd); | |
102 | r2 = arf_fma_naive(res2, x, x, z, prec, rnd); | |
103 | break; | |
104 | case 5: | |
105 | arf_set(res1, x); | |
106 | r1 = arf_fma(res1, res1, res1, z, prec, rnd); | |
107 | r2 = arf_fma_naive(res2, x, x, z, prec, rnd); | |
108 | break; | |
109 | default: | |
110 | arf_set(res1, x); | |
111 | r1 = arf_fma(res1, res1, res1, res1, prec, rnd); | |
112 | r2 = arf_fma_naive(res2, x, x, x, prec, rnd); | |
113 | break; | |
114 | } | |
115 | ||
116 | if (!arf_equal(res1, res2) || r1 != r2) | |
117 | { | |
118 | flint_printf("FAIL!\n"); | |
119 | flint_printf("prec = %wd, rnd = %d, aliasing = %d\n\n", prec, rnd, aliasing); | |
120 | flint_printf("x = "); arf_print(x); flint_printf("\n\n"); | |
121 | flint_printf("y = "); arf_print(y); flint_printf("\n\n"); | |
122 | flint_printf("z = "); arf_print(z); flint_printf("\n\n"); | |
123 | flint_printf("res1 = "); arf_print(res1); flint_printf("\n\n"); | |
124 | flint_printf("res2 = "); arf_print(res2); flint_printf("\n\n"); | |
125 | flint_printf("r1 = %wd, r2 = %wd\n", r1, r2); | |
126 | flint_abort(); | |
127 | } | |
128 | ||
129 | arf_clear(x); | |
130 | arf_clear(y); | |
131 | arf_clear(z); | |
132 | arf_clear(res1); | |
133 | arf_clear(res2); | |
134 | } | |
135 | ||
136 | flint_randclear(state); | |
137 | flint_cleanup(); | |
138 | flint_printf("PASS\n"); | |
139 | return EXIT_SUCCESS; | |
140 | } |
1070 | 1070 | return arf_submul_mpz(z, x, COEFF_TO_PTR(*y), prec, rnd); |
1071 | 1071 | } |
1072 | 1072 | |
1073 | int arf_fma(arf_ptr res, arf_srcptr x, arf_srcptr y, arf_srcptr z, slong prec, arf_rnd_t rnd); | |
1074 | ||
1073 | 1075 | int arf_sosq(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd); |
1074 | 1076 | |
1075 | 1077 | int arf_div(arf_ptr z, arf_srcptr x, arf_srcptr y, slong prec, arf_rnd_t rnd); |
40 | 40 | flint_register_cleanup_function(bernoulli_cleanup); |
41 | 41 | } |
42 | 42 | |
43 | new_num = FLINT_MAX(bernoulli_cache_num + 128, n); | |
43 | if (n <= 128) | |
44 | new_num = FLINT_MAX(bernoulli_cache_num + 32, n); | |
45 | else | |
46 | new_num = FLINT_MAX(bernoulli_cache_num + 128, n); | |
44 | 47 | |
45 | 48 | bernoulli_cache = flint_realloc(bernoulli_cache, new_num * sizeof(fmpq)); |
46 | 49 | for (i = bernoulli_cache_num; i < new_num; i++) |
47 | 50 | fmpq_init(bernoulli_cache + i); |
48 | 51 | |
49 | i = new_num - 1; | |
50 | i -= (i % 2); | |
51 | bernoulli_rev_init(iter, i); | |
52 | for ( ; i >= bernoulli_cache_num; i -= 2) | |
52 | if (new_num <= 128) | |
53 | 53 | { |
54 | bernoulli_rev_next(fmpq_numref(bernoulli_cache + i), | |
55 | fmpq_denref(bernoulli_cache + i), iter); | |
54 | arith_bernoulli_number_vec(bernoulli_cache, new_num); | |
56 | 55 | } |
57 | bernoulli_rev_clear(iter); | |
56 | else | |
57 | { | |
58 | i = new_num - 1; | |
59 | i -= (i % 2); | |
60 | bernoulli_rev_init(iter, i); | |
61 | for ( ; i >= bernoulli_cache_num; i -= 2) | |
62 | { | |
63 | bernoulli_rev_next(fmpq_numref(bernoulli_cache + i), | |
64 | fmpq_denref(bernoulli_cache + i), iter); | |
65 | } | |
66 | bernoulli_rev_clear(iter); | |
58 | 67 | |
59 | if (new_num > 1) | |
60 | fmpq_set_si(bernoulli_cache + 1, -1, 2); | |
68 | if (new_num > 1) | |
69 | fmpq_set_si(bernoulli_cache + 1, -1, 2); | |
70 | } | |
61 | 71 | |
62 | 72 | bernoulli_cache_num = new_num; |
63 | 73 | } |
9 | 9 | # arb => soname |
10 | 10 | # 2.7.0 => 0.0.0 |
11 | 11 | ARB_MAJOR=2 |
12 | ARB_MINOR=11 | |
12 | ARB_MINOR=12 | |
13 | 13 | ARB_PATCH=0 |
14 | 14 | |
15 | 15 | PREFIX="/usr/local" |
138 | 138 | |
139 | 139 | Swaps *z* and *x* efficiently. |
140 | 140 | |
141 | .. function:: void acb_add_error_arf(acb_t x, const arf_t err) | |
142 | ||
141 | 143 | .. function:: void acb_add_error_mag(acb_t x, const mag_t err) |
144 | ||
145 | .. function:: void acb_add_error_arb(acb_t x, const arb_t err) | |
142 | 146 | |
143 | 147 | Adds *err* to the error bounds of both the real and imaginary |
144 | 148 | parts of *x*, modifying *x* in-place. |
661 | 665 | |
662 | 666 | .. function:: void acb_exp_invexp(acb_t s, acb_t t, const acb_t z, slong prec) |
663 | 667 | |
664 | Sets `v = \exp(z)` and `w = \exp(-z)`. | |
668 | Sets `s = \exp(z)` and `t = \exp(-z)`. | |
665 | 669 | |
666 | 670 | .. function:: void acb_expm1(acb_t res, const acb_t z, slong prec) |
667 | 671 | |
668 | Computes `\exp(z)-1`, using an accurate method when `z \approx 0`. | |
672 | Sets *res* to `\exp(z)-1`, using a more accurate method when `z \approx 0`. | |
669 | 673 | |
670 | 674 | .. function:: void acb_log(acb_t y, const acb_t z, slong prec) |
671 | 675 | |
863 | 867 | Rising factorials |
864 | 868 | ------------------------------------------------------------------------------- |
865 | 869 | |
866 | .. function:: void acb_rising_ui_bs(acb_t z, const acb_t x, ulong n, slong prec) | |
867 | ||
868 | .. function:: void acb_rising_ui_rs(acb_t z, const acb_t x, ulong n, ulong step, slong prec) | |
869 | ||
870 | .. function:: void acb_rising_ui_rec(acb_t z, const acb_t x, ulong n, slong prec) | |
871 | ||
872 | .. function:: void acb_rising_ui(acb_t z, const acb_t x, ulong n, slong prec) | |
873 | ||
874 | .. function:: void acb_rising(acb_t z, const acb_t x, const acb_t n, slong prec) | |
870 | .. function:: void acb_rising_ui(acb_t z, const acb_t x, const acb_t n, slong prec) | |
871 | void acb_rising(acb_t z, const acb_t x, const acb_t n, slong prec) | |
875 | 872 | |
876 | 873 | Computes the rising factorial `z = x (x+1) (x+2) \cdots (x+n-1)`. |
877 | ||
878 | The *bs* version uses binary splitting. The *rs* version uses rectangular | |
879 | splitting. The *rec* version uses either *bs* or *rs* depending | |
880 | on the input. The default version uses the gamma function unless | |
881 | *n* is a small integer. | |
882 | ||
883 | The *rs* version takes an optional *step* parameter for tuning | |
884 | purposes (to use the default step length, pass zero). | |
885 | ||
886 | .. function :: void acb_rising2_ui_bs(acb_t u, acb_t v, const acb_t x, ulong n, slong prec) | |
887 | ||
888 | .. function :: void acb_rising2_ui_rs(acb_t u, acb_t v, const acb_t x, ulong n, ulong step, slong prec) | |
874 | These functions are aliases for :func:`acb_hypgeom_rising_ui` | |
875 | and :func:`acb_hypgeom_rising`. | |
889 | 876 | |
890 | 877 | .. function :: void acb_rising2_ui(acb_t u, acb_t v, const acb_t x, ulong n, slong prec) |
891 | 878 | |
892 | 879 | Letting `u(x) = x (x+1) (x+2) \cdots (x+n-1)`, simultaneously compute |
893 | `u(x)` and `v(x) = u'(x)`, respectively using binary splitting, | |
894 | rectangular splitting (with optional nonzero step length *step* | |
895 | to override the default choice), and an automatic algorithm choice. | |
880 | `u(x)` and `v(x) = u'(x)`. | |
881 | This function is a wrapper of :func:`acb_hypgeom_rising_ui_jet`. | |
896 | 882 | |
897 | 883 | .. function :: void acb_rising_ui_get_mag(mag_t bound, const acb_t x, ulong n) |
898 | 884 | |
906 | 892 | .. function:: void acb_gamma(acb_t y, const acb_t x, slong prec) |
907 | 893 | |
908 | 894 | Computes the gamma function `y = \Gamma(x)`. |
895 | This is an alias for :func:`acb_hypgeom_gamma`. | |
909 | 896 | |
910 | 897 | .. function:: void acb_rgamma(acb_t y, const acb_t x, slong prec) |
911 | 898 | |
912 | 899 | Computes the reciprocal gamma function `y = 1/\Gamma(x)`, |
913 | 900 | avoiding division by zero at the poles of the gamma function. |
901 | This is an alias for :func:`acb_hypgeom_rgamma`. | |
914 | 902 | |
915 | 903 | .. function:: void acb_lgamma(acb_t y, const acb_t x, slong prec) |
916 | 904 | |
917 | 905 | Computes the logarithmic gamma function `y = \log \Gamma(x)`. |
906 | This is an alias for :func:`acb_hypgeom_lgamma`. | |
918 | 907 | |
919 | 908 | The branch cut of the logarithmic gamma function is placed on the |
920 | 909 | negative half-axis, which means that |
1180 | 1169 | |
1181 | 1170 | Sets *res* to a copy of *vec*, rounding each entry to *prec* bits. |
1182 | 1171 | |
1172 | .. function:: void _acb_vec_swap(acb_ptr vec1, acb_ptr vec2, slong len) | |
1173 | ||
1174 | Swaps the entries of *vec1* and *vec2*. | |
1175 | ||
1183 | 1176 | .. function:: void _acb_vec_neg(acb_ptr res, acb_srcptr vec, slong len) |
1184 | 1177 | |
1185 | 1178 | .. function:: void _acb_vec_add(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) |
18 | 18 | Rising factorials |
19 | 19 | ------------------------------------------------------------------------------- |
20 | 20 | |
21 | .. function:: void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec) | |
22 | ||
23 | Computes the rising factorial `(x)_n` using rectangular splitting. | |
24 | The splitting parameter *m* can be set to zero to choose automatically. | |
21 | .. function:: void acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec) | |
22 | void acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec) | |
23 | void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec) | |
24 | void acb_hypgeom_rising_ui_rec(acb_t res, const acb_t x, ulong n, slong prec) | |
25 | void acb_hypgeom_rising_ui(acb_t res, const acb_t x, ulong n, slong prec) | |
26 | void acb_hypgeom_rising(acb_t res, const acb_t x, const acb_t n, slong prec) | |
27 | ||
28 | Computes the rising factorial `(x)_n`. | |
29 | ||
30 | The *forward* version uses the forward recurrence. | |
31 | The *bs* version uses binary splitting. | |
32 | The *rs* version uses rectangular splitting. It takes an extra tuning | |
33 | parameter *m* which can be set to zero to choose automatically. | |
34 | The *rec* version chooses an algorithm automatically, avoiding | |
35 | use of the gamma function (so that it can be used in the computation | |
36 | of the gamma function). | |
37 | The default versions (*rising_ui* and *rising_ui*) choose an algorithm | |
38 | automatically and may additionally fall back on the gamma function. | |
39 | ||
40 | .. function:: void acb_hypgeom_rising_ui_jet_powsum(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
41 | void acb_hypgeom_rising_ui_jet_bs(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
42 | void acb_hypgeom_rising_ui_jet_rs(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec) | |
43 | void acb_hypgeom_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
44 | ||
45 | Computes the jet of the rising factorial `(x)_n`, truncated to length *len*. | |
46 | In other words, constructs the polynomial `(X + x)_n \in \mathbb{R}[X]`, | |
47 | truncated if `\operatorname{len} < n + 1` (and zero-extended | |
48 | if `\operatorname{len} > n + 1`). | |
49 | ||
50 | The *powsum* version computes the sequence of powers of *x* and forms integral | |
51 | linear combinations of these. | |
52 | The *bs* version uses binary splitting. | |
53 | The *rs* version uses rectangular splitting. It takes an extra tuning | |
54 | parameter *m* which can be set to zero to choose automatically. | |
55 | The default version chooses an algorithm automatically. | |
56 | ||
57 | .. function:: void acb_hypgeom_log_rising_ui(acb_ptr res, const acb_t x, ulong n, slong prec) | |
58 | ||
59 | Computes the log-rising factorial `\log \, (x)_n = \sum_{k=0}^{n-1} \log(x+k)`. | |
60 | ||
61 | This first computes the ordinary rising factorial and then determines | |
62 | the branch correction `2 \pi i m` with respect to the principal | |
63 | logarithm. The correction is computed using Hare's algorithm in | |
64 | floating-point arithmetic if this is safe; otherwise, | |
65 | a direct computation of `\sum_{k=0}^{n-1} \arg(x+k)` is used as a fallback. | |
66 | ||
67 | .. function:: void acb_hypgeom_log_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) | |
68 | ||
69 | Computes the jet of the log-rising factorial `\log \, (x)_n`, | |
70 | truncated to length *len*. | |
71 | ||
72 | Gamma function | |
73 | ------------------------------------------------------------------------------- | |
74 | ||
75 | .. function:: void acb_hypgeom_gamma_stirling_sum_horner(acb_t s, const acb_t z, slong N, slong prec) | |
76 | void acb_hypgeom_gamma_stirling_sum_improved(acb_t s, const acb_t z, slong N, slong K, slong prec) | |
77 | ||
78 | Sets *res* to the final sum in the Stirling series for the gamma function | |
79 | truncated before the term with index *N*, i.e. computes | |
80 | `\sum_{n=1}^{N-1} B_{2n} / (2n(2n-1) z^{2n-1})`. | |
81 | The *horner* version uses Horner scheme with gradual precision adjustments. | |
82 | The *improved* version uses rectangular splitting for the low-index | |
83 | terms and reexpands the high-index terms as hypergeometric polynomials, | |
84 | using a splitting parameter *K* (which can be set to 0 to use a default | |
85 | value). | |
86 | ||
87 | .. function:: void acb_hypgeom_gamma_stirling(acb_t res, const acb_t x, int reciprocal, slong prec) | |
88 | ||
89 | Sets *res* to the gamma function of *x* computed using the Stirling | |
90 | series together with argument reduction. If *reciprocal* is set, | |
91 | the reciprocal gamma function is computed instead. | |
92 | ||
93 | .. function:: int acb_hypgeom_gamma_taylor(acb_t res, const acb_t x, int reciprocal, slong prec) | |
94 | ||
95 | Attempts to compute the gamma function of *x* using Taylor series | |
96 | together with argument reduction. This is only supported if *x* and *prec* | |
97 | are both small enough. If successful, returns 1; otherwise, does nothing | |
98 | and returns 0. If *reciprocal* is set, the reciprocal gamma function is | |
99 | computed instead. | |
100 | ||
101 | .. function:: void acb_hypgeom_gamma(acb_t res, const acb_t x, slong prec) | |
102 | ||
103 | Sets *res* to the gamma function of *x* computed using a default | |
104 | algorithm choice. | |
105 | ||
106 | .. function:: void acb_hypgeom_rgamma(acb_t res, const acb_t x, slong prec) | |
107 | ||
108 | Sets *res* to the reciprocal gamma function of *x* computed using a default | |
109 | algorithm choice. | |
110 | ||
111 | .. function:: void acb_hypgeom_lgamma(acb_t res, const acb_t x, slong prec) | |
112 | ||
113 | Sets *res* to the principal branch of the log-gamma function of *x* | |
114 | computed using a default algorithm choice. | |
115 | ||
25 | 116 | |
26 | 117 | Convergent series |
27 | 118 | ------------------------------------------------------------------------------- |
655 | 655 | The underscore methods do not support aliasing, and assume that |
656 | 656 | the lengths are nonzero. |
657 | 657 | |
658 | .. function:: void _acb_poly_graeffe_transform(acb_ptr b, acb_srcptr a, slong len, slong prec) | |
659 | ||
660 | .. function:: void acb_poly_graeffe_transform(acb_poly_t b, acb_poly_t a, slong prec) | |
661 | ||
662 | Computes the Graeffe transform of input polynomial, which is of length *len*. | |
663 | See :func:`arb_poly_graeffe_transform` for details. | |
664 | ||
665 | The underscore method assumes that *a* and *b* are initialized, | |
666 | *a* is of length *len*, and *b* is of length at least *len*. | |
667 | Both methods allow aliasing. | |
658 | 668 | |
659 | 669 | Elementary functions |
660 | 670 | ------------------------------------------------------------------------------- |
826 | 826 | |
827 | 827 | Sets `z = z - x \cdot y`, rounded to prec bits. The precision can be |
828 | 828 | *ARF_PREC_EXACT* provided that the result fits in memory. |
829 | ||
830 | .. function:: void arb_fma(arb_t res, const arb_t x, const arb_t y, const arb_t z, slong prec) | |
831 | void arb_fma_arf(arb_t res, const arb_t x, const arf_t y, const arb_t z, slong prec) | |
832 | void arb_fma_ui(arb_t res, const arb_t x, ulong y, const arb_t z, slong prec) | |
833 | ||
834 | Sets *res* to `x \cdot y + z`. This is equivalent to an *addmul* except | |
835 | that *res* and *z* can be separate variables. | |
829 | 836 | |
830 | 837 | .. function:: void arb_inv(arb_t z, const arb_t x, slong prec) |
831 | 838 | |
1064 | 1071 | |
1065 | 1072 | .. function:: void arb_expm1(arb_t z, const arb_t x, slong prec) |
1066 | 1073 | |
1067 | Sets `z = \exp(x)-1`, computed accurately when `x \approx 0`. | |
1074 | Sets `z = \exp(x)-1`, using a more accurate method when `x \approx 0`. | |
1068 | 1075 | |
1069 | 1076 | .. function:: void arb_exp_invexp(arb_t z, arb_t w, const arb_t x, slong prec) |
1070 | 1077 | |
1310 | 1317 | Gamma function and factorials |
1311 | 1318 | ------------------------------------------------------------------------------- |
1312 | 1319 | |
1313 | .. function:: void arb_rising_ui_bs(arb_t z, const arb_t x, ulong n, slong prec) | |
1314 | ||
1315 | .. function:: void arb_rising_ui_rs(arb_t z, const arb_t x, ulong n, ulong step, slong prec) | |
1316 | ||
1317 | .. function:: void arb_rising_ui_rec(arb_t z, const arb_t x, ulong n, slong prec) | |
1318 | ||
1319 | 1320 | .. function:: void arb_rising_ui(arb_t z, const arb_t x, ulong n, slong prec) |
1320 | ||
1321 | .. function:: void arb_rising(arb_t z, const arb_t x, const arb_t n, slong prec) | |
1321 | void arb_rising(arb_t z, const arb_t x, const arb_t n, slong prec) | |
1322 | 1322 | |
1323 | 1323 | Computes the rising factorial `z = x (x+1) (x+2) \cdots (x+n-1)`. |
1324 | ||
1325 | The *bs* version uses binary splitting. The *rs* version uses rectangular | |
1326 | splitting. The *rec* version uses either *bs* or *rs* depending | |
1327 | on the input. The default version uses the gamma function unless | |
1328 | *n* is a small integer. | |
1329 | ||
1330 | The *rs* version takes an optional *step* parameter for tuning | |
1331 | purposes (to use the default step length, pass zero). | |
1324 | These functions are aliases for :func:`arb_hypgeom_rising_ui` | |
1325 | and :func:`arb_hypgeom_rising`. | |
1332 | 1326 | |
1333 | 1327 | .. function:: void arb_rising_fmpq_ui(arb_t z, const fmpq_t x, ulong n, slong prec) |
1334 | 1328 | |
1337 | 1331 | compared to *prec*, it is more efficient to convert *x* to an approximation |
1338 | 1332 | and use :func:`arb_rising_ui`. |
1339 | 1333 | |
1340 | .. function :: void arb_rising2_ui_bs(arb_t u, arb_t v, const arb_t x, ulong n, slong prec) | |
1341 | ||
1342 | .. function :: void arb_rising2_ui_rs(arb_t u, arb_t v, const arb_t x, ulong n, ulong step, slong prec) | |
1343 | ||
1344 | 1334 | .. function :: void arb_rising2_ui(arb_t u, arb_t v, const arb_t x, ulong n, slong prec) |
1345 | 1335 | |
1346 | 1336 | Letting `u(x) = x (x+1) (x+2) \cdots (x+n-1)`, simultaneously compute |
1347 | `u(x)` and `v(x) = u'(x)`, respectively using binary splitting, | |
1348 | rectangular splitting (with optional nonzero step length *step* | |
1349 | to override the default choice), and an automatic algorithm choice. | |
1337 | `u(x)` and `v(x) = u'(x)`. | |
1338 | This function is a wrapper of :func:`arb_hypgeom_rising_ui_jet`. | |
1350 | 1339 | |
1351 | 1340 | .. function:: void arb_fac_ui(arb_t z, ulong n, slong prec) |
1352 | 1341 | |
1364 | 1353 | rising factorial as `{n \choose k} = (n-k+1)_k / k!`. |
1365 | 1354 | |
1366 | 1355 | .. function:: void arb_gamma(arb_t z, const arb_t x, slong prec) |
1367 | ||
1368 | .. function:: void arb_gamma_fmpq(arb_t z, const fmpq_t x, slong prec) | |
1369 | ||
1370 | .. function:: void arb_gamma_fmpz(arb_t z, const fmpz_t x, slong prec) | |
1356 | void arb_gamma_fmpq(arb_t z, const fmpq_t x, slong prec) | |
1357 | void arb_gamma_fmpz(arb_t z, const fmpz_t x, slong prec) | |
1371 | 1358 | |
1372 | 1359 | Computes the gamma function `z = \Gamma(x)`. |
1360 | ||
1361 | These functions are aliases for :func:`arb_hypgeom_gamma`, | |
1362 | :func:`arb_hypgeom_gamma_fmpq`, :func:`arb_hypgeom_gamma_fmpz`. | |
1373 | 1363 | |
1374 | 1364 | .. function:: void arb_lgamma(arb_t z, const arb_t x, slong prec) |
1375 | 1365 | |
1376 | 1366 | Computes the logarithmic gamma function `z = \log \Gamma(x)`. |
1377 | 1367 | The complex branch structure is assumed, so if `x \le 0`, the |
1378 | 1368 | result is an indeterminate interval. |
1369 | This function is an alias for :func:`arb_hypgeom_lgamma`. | |
1379 | 1370 | |
1380 | 1371 | .. function:: void arb_rgamma(arb_t z, const arb_t x, slong prec) |
1381 | 1372 | |
1382 | 1373 | Computes the reciprocal gamma function `z = 1/\Gamma(x)`, |
1383 | 1374 | avoiding division by zero at the poles of the gamma function. |
1375 | This function is an alias for :func:`arb_hypgeom_rgamma`. | |
1384 | 1376 | |
1385 | 1377 | .. function:: void arb_digamma(arb_t y, const arb_t x, slong prec) |
1386 | 1378 |
0 | .. _arb_fpwrap: | |
1 | ||
2 | **arb_fpwrap.h** -- floating-point wrappers of Arb mathematical functions | |
3 | ========================================================================================= | |
4 | ||
5 | This module provides wrappers of Arb functions intended users who | |
6 | want accurate floating-point mathematical functions | |
7 | without necessarily caring about ball arithmetic. | |
8 | The wrappers take floating-point input, give floating-point output, | |
9 | and automatically increase the internal working precision | |
10 | to ensure that the output is accurate | |
11 | (in the rare case of failure, they output NaN along with an error code). | |
12 | ||
13 | **Warning:** This module is experimental (as of Arb 2.21). It has not | |
14 | been extensively tested, and interfaces may change in the future. | |
15 | ||
16 | Supported types: | |
17 | ||
18 | * ``double`` and ``complex_double`` (53-bit precision) | |
19 | ||
20 | Limitations: | |
21 | ||
22 | * The wrappers currently only handle finite input and points where function | |
23 | value is finite. For example, | |
24 | they do not know that `\log(0) = -\infty` or that `\exp(-\infty) = 0`. | |
25 | Singular input or output result in ``FPWRAP_UNABLE`` and a NaN output value. | |
26 | Evaluation of limit values may be implemented in the future for some functions. | |
27 | * The wrappers currently treat ``-0.0`` as ``+0.0``. Users who need to | |
28 | distinguish signs of zero, e.g. on branch cuts, currently need to do so | |
29 | manually. | |
30 | * When requesting *correct rounding*, the wrappers can fail to converge | |
31 | in asymptotic or exact cases (where special algorithms are required). | |
32 | * If the value is computed accurately internally but is too small to represent | |
33 | as a floating-point number, the result will be ``-0.0`` or ``+0.0`` (on underflow) | |
34 | or ``-Inf`` or ``+Inf`` (on overflow). Since the underflowed or overflowed | |
35 | result is the best possible floating-point approximation of the true value, | |
36 | this outcome is considered correct and the flag ``FPWRAP_SUCCESS`` is returned. | |
37 | In the future, return status flags may be added to indicate that underflow | |
38 | or overflow has occurred. | |
39 | * Different rounding modes are not yet implemented. | |
40 | ||
41 | Option and return flags | |
42 | ------------------------------------------------------------------------------- | |
43 | ||
44 | Functions return an ``int`` flag indicating the status. | |
45 | ||
46 | .. macro:: FPWRAP_SUCCESS | |
47 | ||
48 | Indicates an accurate result. (Up to inevitable underflow or | |
49 | overflow in the final conversion to a floating-point result; see above.) | |
50 | ||
51 | This flag has the numerical value 0. | |
52 | ||
53 | .. macro:: FPWRAP_UNABLE | |
54 | ||
55 | Indicates failure (unable to achieve to target accuracy, | |
56 | possibly because of a singularity). The output is set to NaN. | |
57 | ||
58 | This flag has the numerical value 1. | |
59 | ||
60 | Functions take a *flags* parameter specifying optional rounding and termination | |
61 | behavior. This can be set to 0 to use defaults. | |
62 | ||
63 | .. macro:: FPWRAP_ACCURATE_PARTS | |
64 | ||
65 | For complex output, compute both real and imaginary parts to full relative accuracy. | |
66 | By default (if this flag is not set), complex results are computed to | |
67 | at least 53-bit accuracy as a whole, but if either the real or imaginary | |
68 | part is much smaller than the other, that part can have a large relative error. | |
69 | Setting this flag can result in slower evaluation or failure to converge | |
70 | in some cases. | |
71 | ||
72 | This flag has the numerical value 1. | |
73 | ||
74 | .. macro:: FPWRAP_CORRECT_ROUNDING | |
75 | ||
76 | Guarantees *correct rounding*. | |
77 | By default (if this flag is not set), real results are accurate up to the | |
78 | rounding of the last bit, but the last bit is not guaranteed to | |
79 | be rounded optimally. | |
80 | Setting this flag can result in slower | |
81 | evaluation or failure to converge in some cases. | |
82 | Correct rounding automatically applies to both real and imaginary parts | |
83 | of complex numbers, so it is unnecessary to set both this flag and | |
84 | *FPWRAP_ACCURATE_PARTS*. | |
85 | ||
86 | This flag has the numerical value 2. | |
87 | ||
88 | .. macro:: FPWRAP_WORK_LIMIT | |
89 | ||
90 | Multiplied by an integer, specifies the maximum working precision to use | |
91 | before giving up. With ``n * FPWRAP_WORK_LIMIT`` added to *flags*, | |
92 | `n` levels of precision will be used. | |
93 | The default `n = 0` is equivalent to `n = 8`, which for ``double`` | |
94 | means trying with a working precision of 64, 128, 256, 512, 1024, 2048, | |
95 | 4096, 8192 bits. | |
96 | With ``flags = 2 * FPWRAP_WORK_LIMIT``, we only try 64 and 128 | |
97 | bits, and with ``flags = 16 * FPWRAP_WORK_LIMIT`` we | |
98 | go up to 2097152 bits. | |
99 | ||
100 | This flag has the numerical value 65536. | |
101 | ||
102 | Types | |
103 | ------------------------------------------------------------------------------- | |
104 | ||
105 | Outputs are passed by reference so that we can return status | |
106 | flags and so that the interface is uniform for functions with | |
107 | multiple outputs. | |
108 | ||
109 | .. type:: complex_double | |
110 | ||
111 | A struct of two ``double`` components (``real`` and ``imag``), used to | |
112 | represent a machine-precision complex number. We use this custom type | |
113 | instead of the complex types defined in ``<complex.h>`` since Arb | |
114 | does not depend on C99. Users should easily be able to convert | |
115 | to the C99 complex type since the layout in memory is identical. | |
116 | ||
117 | Functions | |
118 | ------------------------------------------------------------------------------- | |
119 | ||
120 | Elementary functions | |
121 | ............................................................................... | |
122 | ||
123 | .. function:: int arb_fpwrap_double_exp(double * res, double x, int flags) | |
124 | int arb_fpwrap_cdouble_exp(complex_double * res, complex_double x, int flags) | |
125 | ||
126 | .. function:: int arb_fpwrap_double_expm1(double * res, double x, int flags) | |
127 | int arb_fpwrap_cdouble_expm1(complex_double * res, complex_double x, int flags) | |
128 | ||
129 | .. function:: int arb_fpwrap_double_log(double * res, double x, int flags) | |
130 | int arb_fpwrap_cdouble_log(complex_double * res, complex_double x, int flags) | |
131 | ||
132 | .. function:: int arb_fpwrap_double_log1p(double * res, double x, int flags) | |
133 | int arb_fpwrap_cdouble_log1p(complex_double * res, complex_double x, int flags) | |
134 | ||
135 | .. function:: int arb_fpwrap_double_sqrt(double * res, double x, int flags) | |
136 | int arb_fpwrap_cdouble_sqrt(complex_double * res, complex_double x, int flags) | |
137 | ||
138 | .. function:: int arb_fpwrap_double_rsqrt(double * res, double x, int flags) | |
139 | int arb_fpwrap_cdouble_rsqrt(complex_double * res, complex_double x, int flags) | |
140 | ||
141 | .. function:: int arb_fpwrap_double_cbrt(double * res, double x, int flags) | |
142 | int arb_fpwrap_cdouble_cbrt(complex_double * res, complex_double x, int flags) | |
143 | ||
144 | .. function:: int arb_fpwrap_double_sin(double * res, double x, int flags) | |
145 | int arb_fpwrap_cdouble_sin(complex_double * res, complex_double x, int flags) | |
146 | ||
147 | .. function:: int arb_fpwrap_double_cos(double * res, double x, int flags) | |
148 | int arb_fpwrap_cdouble_cos(complex_double * res, complex_double x, int flags) | |
149 | ||
150 | .. function:: int arb_fpwrap_double_tan(double * res, double x, int flags) | |
151 | int arb_fpwrap_cdouble_tan(complex_double * res, complex_double x, int flags) | |
152 | ||
153 | .. function:: int arb_fpwrap_double_cot(double * res, double x, int flags) | |
154 | int arb_fpwrap_cdouble_cot(complex_double * res, complex_double x, int flags) | |
155 | ||
156 | .. function:: int arb_fpwrap_double_sec(double * res, double x, int flags) | |
157 | int arb_fpwrap_cdouble_sec(complex_double * res, complex_double x, int flags) | |
158 | ||
159 | .. function:: int arb_fpwrap_double_csc(double * res, double x, int flags) | |
160 | int arb_fpwrap_cdouble_csc(complex_double * res, complex_double x, int flags) | |
161 | ||
162 | .. function:: int arb_fpwrap_double_sinc(double * res, double x, int flags) | |
163 | int arb_fpwrap_cdouble_sinc(complex_double * res, complex_double x, int flags) | |
164 | ||
165 | .. function:: int arb_fpwrap_double_sin_pi(double * res, double x, int flags) | |
166 | int arb_fpwrap_cdouble_sin_pi(complex_double * res, complex_double x, int flags) | |
167 | ||
168 | .. function:: int arb_fpwrap_double_cos_pi(double * res, double x, int flags) | |
169 | int arb_fpwrap_cdouble_cos_pi(complex_double * res, complex_double x, int flags) | |
170 | ||
171 | .. function:: int arb_fpwrap_double_tan_pi(double * res, double x, int flags) | |
172 | int arb_fpwrap_cdouble_tan_pi(complex_double * res, complex_double x, int flags) | |
173 | ||
174 | .. function:: int arb_fpwrap_double_cot_pi(double * res, double x, int flags) | |
175 | int arb_fpwrap_cdouble_cot_pi(complex_double * res, complex_double x, int flags) | |
176 | ||
177 | .. function:: int arb_fpwrap_double_sinc_pi(double * res, double x, int flags) | |
178 | int arb_fpwrap_cdouble_sinc_pi(complex_double * res, complex_double x, int flags) | |
179 | ||
180 | .. function:: int arb_fpwrap_double_asin(double * res, double x, int flags) | |
181 | int arb_fpwrap_cdouble_asin(complex_double * res, complex_double x, int flags) | |
182 | ||
183 | .. function:: int arb_fpwrap_double_acos(double * res, double x, int flags) | |
184 | int arb_fpwrap_cdouble_acos(complex_double * res, complex_double x, int flags) | |
185 | ||
186 | .. function:: int arb_fpwrap_double_atan(double * res, double x, int flags) | |
187 | int arb_fpwrap_cdouble_atan(complex_double * res, complex_double x, int flags) | |
188 | ||
189 | .. function:: int arb_fpwrap_double_atan2(double * res, double x1, double x2, int flags) | |
190 | ||
191 | .. function:: int arb_fpwrap_double_asinh(double * res, double x, int flags) | |
192 | int arb_fpwrap_cdouble_asinh(complex_double * res, complex_double x, int flags) | |
193 | ||
194 | .. function:: int arb_fpwrap_double_acosh(double * res, double x, int flags) | |
195 | int arb_fpwrap_cdouble_acosh(complex_double * res, complex_double x, int flags) | |
196 | ||
197 | .. function:: int arb_fpwrap_double_atanh(double * res, double x, int flags) | |
198 | int arb_fpwrap_cdouble_atanh(complex_double * res, complex_double x, int flags) | |
199 | ||
200 | .. function:: int arb_fpwrap_double_lambertw(double * res, double x, slong branch, int flags) | |
201 | int arb_fpwrap_cdouble_lambertw(complex_double * res, complex_double x, slong branch, int flags) | |
202 | ||
203 | Gamma, zeta and related functions | |
204 | ............................................................................... | |
205 | ||
206 | .. function:: int arb_fpwrap_double_rising(double * res, double x, double n, int flags) | |
207 | int arb_fpwrap_cdouble_rising(complex_double * res, complex_double x, complex_double n, int flags) | |
208 | ||
209 | Rising factorial. | |
210 | ||
211 | .. function:: int arb_fpwrap_double_gamma(double * res, double x, int flags) | |
212 | int arb_fpwrap_cdouble_gamma(complex_double * res, complex_double x, int flags) | |
213 | ||
214 | Gamma function. | |
215 | ||
216 | .. function:: int arb_fpwrap_double_rgamma(double * res, double x, int flags) | |
217 | int arb_fpwrap_cdouble_rgamma(complex_double * res, complex_double x, int flags) | |
218 | ||
219 | Reciprocal gamma function. | |
220 | ||
221 | .. function:: int arb_fpwrap_double_lgamma(double * res, double x, int flags) | |
222 | int arb_fpwrap_cdouble_lgamma(complex_double * res, complex_double x, int flags) | |
223 | ||
224 | Log-gamma function. | |
225 | ||
226 | .. function:: int arb_fpwrap_double_digamma(double * res, double x, int flags) | |
227 | int arb_fpwrap_cdouble_digamma(complex_double * res, complex_double x, int flags) | |
228 | ||
229 | Digamma function. | |
230 | ||
231 | .. function:: int arb_fpwrap_double_zeta(double * res, double x, int flags) | |
232 | int arb_fpwrap_cdouble_zeta(complex_double * res, complex_double x, int flags) | |
233 | ||
234 | Riemann zeta function. | |
235 | ||
236 | .. function:: int arb_fpwrap_double_hurwitz_zeta(double * res, double s, double z, int flags) | |
237 | int arb_fpwrap_cdouble_hurwitz_zeta(complex_double * res, complex_double s, complex_double z, int flags) | |
238 | ||
239 | Hurwitz zeta function. | |
240 | ||
241 | .. function:: int arb_fpwrap_double_barnes_g(double * res, double x, int flags) | |
242 | int arb_fpwrap_cdouble_barnes_g(complex_double * res, complex_double x, int flags) | |
243 | ||
244 | Barnes G-function. | |
245 | ||
246 | .. function:: int arb_fpwrap_double_log_barnes_g(double * res, double x, int flags) | |
247 | int arb_fpwrap_cdouble_log_barnes_g(complex_double * res, complex_double x, int flags) | |
248 | ||
249 | Logarithmic Barnes G-function. | |
250 | ||
251 | .. function:: int arb_fpwrap_double_polygamma(double * res, double s, double z, int flags) | |
252 | int arb_fpwrap_cdouble_polygamma(complex_double * res, complex_double s, complex_double z, int flags) | |
253 | ||
254 | Polygamma function. | |
255 | ||
256 | .. function:: int arb_fpwrap_double_polylog(double * res, double s, double z, int flags) | |
257 | int arb_fpwrap_cdouble_polylog(complex_double * res, complex_double s, complex_double z, int flags) | |
258 | ||
259 | Polylogarithm. | |
260 | ||
261 | .. function:: int arb_fpwrap_cdouble_dirichlet_eta(complex_double * res, complex_double s, int flags) | |
262 | ||
263 | .. function:: int arb_fpwrap_cdouble_riemann_xi(complex_double * res, complex_double s, int flags) | |
264 | ||
265 | .. function:: int arb_fpwrap_cdouble_hardy_theta(complex_double * res, complex_double z, int flags) | |
266 | ||
267 | .. function:: int arb_fpwrap_cdouble_hardy_z(complex_double * res, complex_double z, int flags) | |
268 | ||
269 | .. function:: int arb_fpwrap_cdouble_zeta_zero(complex_double * res, ulong n, int flags) | |
270 | ||
271 | Error functions and exponential integrals | |
272 | ............................................................................... | |
273 | ||
274 | .. function:: int arb_fpwrap_double_erf(double * res, double x, int flags) | |
275 | int arb_fpwrap_cdouble_erf(complex_double * res, complex_double x, int flags) | |
276 | ||
277 | .. function:: int arb_fpwrap_double_erfc(double * res, double x, int flags) | |
278 | int arb_fpwrap_cdouble_erfc(complex_double * res, complex_double x, int flags) | |
279 | ||
280 | .. function:: int arb_fpwrap_double_erfi(double * res, double x, int flags) | |
281 | int arb_fpwrap_cdouble_erfi(complex_double * res, complex_double x, int flags) | |
282 | ||
283 | .. function:: int arb_fpwrap_double_fresnel_s(double * res, double x, int normalized, int flags) | |
284 | int arb_fpwrap_cdouble_fresnel_s(complex_double * res, complex_double x, int normalized, int flags) | |
285 | ||
286 | .. function:: int arb_fpwrap_double_fresnel_c(double * res, double x, int normalized, int flags) | |
287 | int arb_fpwrap_cdouble_fresnel_c(complex_double * res, complex_double x, int normalized, int flags) | |
288 | ||
289 | .. function:: int arb_fpwrap_double_gamma_upper(double * res, double s, double z, int regularized, int flags) | |
290 | int arb_fpwrap_cdouble_gamma_upper(complex_double * res, complex_double s, complex_double z, int regularized, int flags) | |
291 | ||
292 | .. function:: int arb_fpwrap_double_gamma_lower(double * res, double s, double z, int regularized, int flags) | |
293 | int arb_fpwrap_cdouble_gamma_lower(complex_double * res, complex_double s, complex_double z, int regularized, int flags) | |
294 | ||
295 | .. function:: int arb_fpwrap_double_beta_lower(double * res, double a, double b, double z, int regularized, int flags) | |
296 | int arb_fpwrap_cdouble_beta_lower(complex_double * res, complex_double a, complex_double b, complex_double z, int regularized, int flags) | |
297 | ||
298 | .. function:: int arb_fpwrap_double_exp_integral_e(double * res, double s, double z, int flags) | |
299 | int arb_fpwrap_cdouble_exp_integral_e(complex_double * res, complex_double s, complex_double z, int flags) | |
300 | ||
301 | .. function:: int arb_fpwrap_double_exp_integral_ei(double * res, double x, int flags) | |
302 | int arb_fpwrap_cdouble_exp_integral_ei(complex_double * res, complex_double x, int flags) | |
303 | ||
304 | .. function:: int arb_fpwrap_double_sin_integral(double * res, double x, int flags) | |
305 | int arb_fpwrap_cdouble_sin_integral(complex_double * res, complex_double x, int flags) | |
306 | ||
307 | .. function:: int arb_fpwrap_double_cos_integral(double * res, double x, int flags) | |
308 | int arb_fpwrap_cdouble_cos_integral(complex_double * res, complex_double x, int flags) | |
309 | ||
310 | .. function:: int arb_fpwrap_double_sinh_integral(double * res, double x, int flags) | |
311 | int arb_fpwrap_cdouble_sinh_integral(complex_double * res, complex_double x, int flags) | |
312 | ||
313 | .. function:: int arb_fpwrap_double_cosh_integral(double * res, double x, int flags) | |
314 | int arb_fpwrap_cdouble_cosh_integral(complex_double * res, complex_double x, int flags) | |
315 | ||
316 | .. function:: int arb_fpwrap_double_log_integral(double * res, double x, int offset, int flags) | |
317 | int arb_fpwrap_cdouble_log_integral(complex_double * res, complex_double x, int offset, int flags) | |
318 | ||
319 | Bessel, Airy and Coulomb functions | |
320 | ............................................................................... | |
321 | ||
322 | .. function:: int arb_fpwrap_double_bessel_j(double * res, double nu, double x, int flags) | |
323 | int arb_fpwrap_cdouble_bessel_j(complex_double * res, complex_double nu, complex_double x, int flags) | |
324 | ||
325 | .. function:: int arb_fpwrap_double_bessel_y(double * res, double nu, double x, int flags) | |
326 | int arb_fpwrap_cdouble_bessel_y(complex_double * res, complex_double nu, complex_double x, int flags) | |
327 | ||
328 | .. function:: int arb_fpwrap_double_bessel_i(double * res, double nu, double x, int flags) | |
329 | int arb_fpwrap_cdouble_bessel_i(complex_double * res, complex_double nu, complex_double x, int flags) | |
330 | ||
331 | .. function:: int arb_fpwrap_double_bessel_k(double * res, double nu, double x, int flags) | |
332 | int arb_fpwrap_cdouble_bessel_k(complex_double * res, complex_double nu, complex_double x, int flags) | |
333 | ||
334 | .. function:: int arb_fpwrap_double_bessel_k_scaled(double * res, double nu, double x, int flags) | |
335 | int arb_fpwrap_cdouble_bessel_k_scaled(complex_double * res, complex_double nu, complex_double x, int flags) | |
336 | ||
337 | .. function:: int arb_fpwrap_double_airy_ai(double * res, double x, int flags) | |
338 | int arb_fpwrap_cdouble_airy_ai(complex_double * res, complex_double x, int flags) | |
339 | ||
340 | .. function:: int arb_fpwrap_double_airy_ai_prime(double * res, double x, int flags) | |
341 | int arb_fpwrap_cdouble_airy_ai_prime(complex_double * res, complex_double x, int flags) | |
342 | ||
343 | .. function:: int arb_fpwrap_double_airy_bi(double * res, double x, int flags) | |
344 | int arb_fpwrap_cdouble_airy_bi(complex_double * res, complex_double x, int flags) | |
345 | ||
346 | .. function:: int arb_fpwrap_double_airy_bi_prime(double * res, double x, int flags) | |
347 | int arb_fpwrap_cdouble_airy_bi_prime(complex_double * res, complex_double x, int flags) | |
348 | ||
349 | .. function:: int arb_fpwrap_double_airy_ai_zero(double * res, ulong n, int flags) | |
350 | ||
351 | .. function:: int arb_fpwrap_double_airy_ai_prime_zero(double * res, ulong n, int flags) | |
352 | ||
353 | .. function:: int arb_fpwrap_double_airy_bi_zero(double * res, ulong n, int flags) | |
354 | ||
355 | .. function:: int arb_fpwrap_double_airy_bi_prime_zero(double * res, ulong n, int flags) | |
356 | ||
357 | .. function:: int arb_fpwrap_double_coulomb_f(double * res, double l, double eta, double x, int flags) | |
358 | int arb_fpwrap_cdouble_coulomb_f(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) | |
359 | ||
360 | .. function:: int arb_fpwrap_double_coulomb_g(double * res, double l, double eta, double x, int flags) | |
361 | int arb_fpwrap_cdouble_coulomb_g(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) | |
362 | ||
363 | .. function:: int arb_fpwrap_cdouble_coulomb_hpos(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) | |
364 | int arb_fpwrap_cdouble_coulomb_hneg(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) | |
365 | ||
366 | Orthogonal polynomials | |
367 | ............................................................................... | |
368 | ||
369 | .. function:: int arb_fpwrap_double_chebyshev_t(double * res, double n, double x, int flags) | |
370 | int arb_fpwrap_cdouble_chebyshev_t(complex_double * res, complex_double n, complex_double x, int flags) | |
371 | ||
372 | .. function:: int arb_fpwrap_double_chebyshev_u(double * res, double n, double x, int flags) | |
373 | int arb_fpwrap_cdouble_chebyshev_u(complex_double * res, complex_double n, complex_double x, int flags) | |
374 | ||
375 | .. function:: int arb_fpwrap_double_jacobi_p(double * res, double n, double a, double b, double x, int flags) | |
376 | int arb_fpwrap_cdouble_jacobi_p(complex_double * res, complex_double n, complex_double a, complex_double b, complex_double x, int flags) | |
377 | ||
378 | .. function:: int arb_fpwrap_double_gegenbauer_c(double * res, double n, double m, double x, int flags) | |
379 | int arb_fpwrap_cdouble_gegenbauer_c(complex_double * res, complex_double n, complex_double m, complex_double x, int flags) | |
380 | ||
381 | .. function:: int arb_fpwrap_double_laguerre_l(double * res, double n, double m, double x, int flags) | |
382 | int arb_fpwrap_cdouble_laguerre_l(complex_double * res, complex_double n, complex_double m, complex_double x, int flags) | |
383 | ||
384 | .. function:: int arb_fpwrap_double_hermite_h(double * res, double n, double x, int flags) | |
385 | int arb_fpwrap_cdouble_hermite_h(complex_double * res, complex_double n, complex_double x, int flags) | |
386 | ||
387 | .. function:: int arb_fpwrap_double_legendre_p(double * res, double n, double m, double x, int type, int flags) | |
388 | int arb_fpwrap_cdouble_legendre_p(complex_double * res, complex_double n, complex_double m, complex_double x, int type, int flags) | |
389 | ||
390 | .. function:: int arb_fpwrap_double_legendre_q(double * res, double n, double m, double x, int type, int flags) | |
391 | int arb_fpwrap_cdouble_legendre_q(complex_double * res, complex_double n, complex_double m, complex_double x, int type, int flags) | |
392 | ||
393 | .. function:: int arb_fpwrap_double_legendre_root(double * res1, double * res2, ulong n, ulong k, int flags) | |
394 | ||
395 | Sets *res1* to the index *k* root of the Legendre polynomial `P_n(x)`, | |
396 | and simultaneously sets *res2* to the corresponding weight for | |
397 | Gauss-Legendre quadrature. | |
398 | ||
399 | .. function:: int arb_fpwrap_cdouble_spherical_y(complex_double * res, slong n, slong m, complex_double x1, complex_double x2, int flags) | |
400 | ||
401 | Hypergeometric functions | |
402 | ............................................................................... | |
403 | ||
404 | .. function:: int arb_fpwrap_double_hypgeom_0f1(double * res, double a, double x, int regularized, int flags) | |
405 | int arb_fpwrap_cdouble_hypgeom_0f1(complex_double * res, complex_double a, complex_double x, int regularized, int flags) | |
406 | ||
407 | .. function:: int arb_fpwrap_double_hypgeom_1f1(double * res, double a, double b, double x, int regularized, int flags) | |
408 | int arb_fpwrap_cdouble_hypgeom_1f1(complex_double * res, complex_double a, complex_double b, complex_double x, int regularized, int flags) | |
409 | ||
410 | .. function:: int arb_fpwrap_double_hypgeom_u(double * res, double a, double b, double x, int flags) | |
411 | int arb_fpwrap_cdouble_hypgeom_u(complex_double * res, complex_double a, complex_double b, complex_double x, int flags) | |
412 | ||
413 | .. function:: int arb_fpwrap_double_hypgeom_2f1(double * res, double a, double b, double c, double x, int regularized, int flags) | |
414 | int arb_fpwrap_cdouble_hypgeom_2f1(complex_double * res, complex_double a, complex_double b, complex_double c, complex_double x, int regularized, int flags) | |
415 | ||
416 | .. function:: int arb_fpwrap_double_hypgeom_pfq(double * res, const double * a, slong p, const double * b, slong q, double z, int regularized, int flags) | |
417 | int arb_fpwrap_cdouble_hypgeom_pfq(complex_double * res, const complex_double * a, slong p, const complex_double * b, slong q, complex_double z, int regularized, int flags) | |
418 | ||
419 | ||
420 | Elliptic integrals, elliptic functions and modular forms | |
421 | ............................................................................... | |
422 | ||
423 | .. function:: int arb_fpwrap_double_agm(double * res, double x, double y, int flags) | |
424 | int arb_fpwrap_cdouble_agm(complex_double * res, complex_double x, complex_double y, int flags) | |
425 | ||
426 | Arithmetic-geometric mean. | |
427 | ||
428 | .. function:: int arb_fpwrap_cdouble_elliptic_k(complex_double * res, complex_double m, int flags) | |
429 | ||
430 | .. function:: int arb_fpwrap_cdouble_elliptic_e(complex_double * res, complex_double m, int flags) | |
431 | ||
432 | .. function:: int arb_fpwrap_cdouble_elliptic_pi(complex_double * res, complex_double n, complex_double m, int flags) | |
433 | ||
434 | .. function:: int arb_fpwrap_cdouble_elliptic_f(complex_double * res, complex_double phi, complex_double m, int pi, int flags) | |
435 | ||
436 | .. function:: int arb_fpwrap_cdouble_elliptic_e_inc(complex_double * res, complex_double phi, complex_double m, int pi, int flags) | |
437 | ||
438 | .. function:: int arb_fpwrap_cdouble_elliptic_pi_inc(complex_double * res, complex_double n, complex_double phi, complex_double m, int pi, int flags) | |
439 | ||
440 | Complete and incomplete elliptic integrals. | |
441 | ||
442 | .. function:: int arb_fpwrap_cdouble_elliptic_rf(complex_double * res, complex_double x, complex_double y, complex_double z, int option, int flags) | |
443 | ||
444 | .. function:: int arb_fpwrap_cdouble_elliptic_rg(complex_double * res, complex_double x, complex_double y, complex_double z, int option, int flags) | |
445 | ||
446 | .. function:: int arb_fpwrap_cdouble_elliptic_rj(complex_double * res, complex_double x, complex_double y, complex_double z, complex_double w, int option, int flags) | |
447 | ||
448 | Carlson symmetric elliptic integrals. | |
449 | ||
450 | .. function:: int arb_fpwrap_cdouble_elliptic_p(complex_double * res, complex_double z, complex_double tau, int flags) | |
451 | ||
452 | .. function:: int arb_fpwrap_cdouble_elliptic_p_prime(complex_double * res, complex_double z, complex_double tau, int flags) | |
453 | ||
454 | .. function:: int arb_fpwrap_cdouble_elliptic_inv_p(complex_double * res, complex_double z, complex_double tau, int flags) | |
455 | ||
456 | .. function:: int arb_fpwrap_cdouble_elliptic_zeta(complex_double * res, complex_double z, complex_double tau, int flags) | |
457 | ||
458 | .. function:: int arb_fpwrap_cdouble_elliptic_sigma(complex_double * res, complex_double z, complex_double tau, int flags) | |
459 | ||
460 | Weierstrass elliptic functions. | |
461 | ||
462 | .. function:: int arb_fpwrap_cdouble_jacobi_theta_1(complex_double * res, complex_double z, complex_double tau, int flags) | |
463 | ||
464 | .. function:: int arb_fpwrap_cdouble_jacobi_theta_2(complex_double * res, complex_double z, complex_double tau, int flags) | |
465 | ||
466 | .. function:: int arb_fpwrap_cdouble_jacobi_theta_3(complex_double * res, complex_double z, complex_double tau, int flags) | |
467 | ||
468 | .. function:: int arb_fpwrap_cdouble_jacobi_theta_4(complex_double * res, complex_double z, complex_double tau, int flags) | |
469 | ||
470 | Jacobi theta functions. | |
471 | ||
472 | .. function:: int arb_fpwrap_cdouble_dedekind_eta(complex_double * res, complex_double tau, int flags) | |
473 | ||
474 | .. function:: int arb_fpwrap_cdouble_modular_j(complex_double * res, complex_double tau, int flags) | |
475 | ||
476 | .. function:: int arb_fpwrap_cdouble_modular_lambda(complex_double * res, complex_double tau, int flags) | |
477 | ||
478 | .. function:: int arb_fpwrap_cdouble_modular_delta(complex_double * res, complex_double tau, int flags) | |
479 | ||
480 | Calling from C | |
481 | ------------------------------------------------------------------------------- | |
482 | ||
483 | The program ``examples/fpwrap.c`` provides a usage example:: | |
484 | ||
485 | #include "arb_fpwrap.h" | |
486 | ||
487 | int main() | |
488 | { | |
489 | double x, y; | |
490 | complex_double cx, cy; | |
491 | int flags = 0; /* default options */ | |
492 | ||
493 | x = 2.0; | |
494 | cx.real = 0.5; | |
495 | cx.imag = 123.0; | |
496 | ||
497 | arb_fpwrap_double_zeta(&y, x, flags); | |
498 | arb_fpwrap_cdouble_zeta(&cy, cx, flags); | |
499 | ||
500 | printf("zeta(%g) = %.16g\n", x, y); | |
501 | printf("zeta(%g + %gi) = %.16g + %.16gi\n", cx.real, cx.imag, cy.real, cy.imag); | |
502 | ||
503 | flint_cleanup(); | |
504 | return 0; | |
505 | } | |
506 | ||
507 | .. highlight:: text | |
508 | ||
509 | This should print:: | |
510 | ||
511 | > build/examples/fpwrap | |
512 | zeta(2) = 1.644934066848226 | |
513 | zeta(0.5 + 123i) = 0.006252861175594465 + 0.08206030514520983i | |
514 | ||
515 | Note that this program does not check the return flag | |
516 | to perform error handling. | |
517 | ||
518 | ||
519 | Interfacing from Python | |
520 | ------------------------------------------------------------------------------- | |
521 | ||
522 | .. highlight:: python | |
523 | ||
524 | This illustrates how to call functions from Python using ``ctypes``:: | |
525 | ||
526 | import ctypes | |
527 | import ctypes.util | |
528 | ||
529 | libarb_path = ctypes.util.find_library('arb') | |
530 | libarb = ctypes.CDLL(libarb_path) | |
531 | ||
532 | class _complex_double(ctypes.Structure): | |
533 | _fields_ = [('real', ctypes.c_double), | |
534 | ('imag', ctypes.c_double)] | |
535 | ||
536 | def wrap_double_fun(fun): | |
537 | def f(x): | |
538 | y = ctypes.c_double() | |
539 | if fun(ctypes.byref(y), ctypes.c_double(x), 0): | |
540 | raise ValueError(f"unable to evaluate function accurately at {x}") | |
541 | return y.value | |
542 | return f | |
543 | ||
544 | def wrap_cdouble_fun(fun): | |
545 | def f(x): | |
546 | x = complex(x) | |
547 | cx = _complex_double() | |
548 | cy = _complex_double() | |
549 | cx.real = x.real | |
550 | cx.imag = x.imag | |
551 | if fun(ctypes.byref(cy), cx, 0): | |
552 | raise ValueError(f"unable to evaluate function accurately at {x}") | |
553 | return complex(cy.real, cy.imag) | |
554 | return f | |
555 | ||
556 | zeta = wrap_double_fun(libarb.arb_fpwrap_double_zeta) | |
557 | czeta = wrap_cdouble_fun(libarb.arb_fpwrap_cdouble_zeta) | |
558 | ||
559 | print(zeta(2.0)) | |
560 | print(czeta(0.5+1e9j)) | |
561 | print(zeta(1.0)) # pole, where wrapper throws exception | |
562 | ||
563 | .. highlight:: text | |
564 | ||
565 | This should print:: | |
566 | ||
567 | 1.6449340668482264 | |
568 | (-2.761748029838061-1.6775122409894598j) | |
569 | Traceback (most recent call last): | |
570 | ... | |
571 | ValueError: unable to evaluate function accurately at 1.0 | |
572 | ||
573 | Interfacing from Julia | |
574 | ------------------------------------------------------------------------------- | |
575 | ||
576 | .. highlight:: julia | |
577 | ||
578 | This illustrates how to call functions from Julia using ``ccall``:: | |
579 | ||
580 | using Libdl | |
581 | ||
582 | dlopen("/home/fredrik/src/arb/libarb.so") | |
583 | ||
584 | function zeta(x::Float64) | |
585 | cy = Ref{Float64}() | |
586 | if Bool(ccall((:arb_fpwrap_double_zeta, :libarb), Cint, (Ptr{Float64}, Float64, Cint), cy, x, 0)) | |
587 | error("unable to evaluate accurately at ", x) | |
588 | end | |
589 | return cy[] | |
590 | end | |
591 | ||
592 | function zeta(x::Complex{Float64}) | |
593 | cy = Ref{Complex{Float64}}() | |
594 | if Bool(ccall((:arb_fpwrap_cdouble_zeta, :libarb), Cint, (Ptr{Complex{Float64}}, Complex{Float64}, Cint), cy, x, 0)) | |
595 | error("unable to evaluate accurately at ", x) | |
596 | end | |
597 | return cy[] | |
598 | end | |
599 | ||
600 | println(zeta(2.0)) | |
601 | println(zeta(0.5 + 1e9im)) | |
602 | println(zeta(1.0)) # pole, where wrapper throws exception | |
603 | ||
604 | .. highlight:: text | |
605 | ||
606 | This should print:: | |
607 | ||
608 | 1.6449340668482264 | |
609 | -2.761748029838061 - 1.6775122409894598im | |
610 | ERROR: unable to evaluate accurately at 1.0 | |
611 | Stacktrace: | |
612 | ... | |
613 | ||
614 | ||
615 | .. highlight:: c | |
616 |
34 | 34 | void arb_hypgeom_rising_ui_bs(arb_t res, const arb_t x, ulong n, slong prec) |
35 | 35 | void arb_hypgeom_rising_ui_rs(arb_t res, const arb_t x, ulong n, ulong m, slong prec) |
36 | 36 | void arb_hypgeom_rising_ui_rec(arb_t res, const arb_t x, ulong n, slong prec) |
37 | void arb_hypgeom_rising_ui(arb_t y, const arb_t x, ulong n, slong prec) | |
38 | void arb_hypgeom_rising(arb_t y, const arb_t x, const arb_t n, slong prec) | |
37 | void arb_hypgeom_rising_ui(arb_t res, const arb_t x, ulong n, slong prec) | |
38 | void arb_hypgeom_rising(arb_t res, const arb_t x, const arb_t n, slong prec) | |
39 | 39 | |
40 | 40 | Computes the rising factorial `(x)_n`. |
41 | 41 | |
66 | 66 | parameter *m* which can be set to zero to choose automatically. |
67 | 67 | The default version chooses an algorithm automatically. |
68 | 68 | |
69 | Gamma function | |
70 | ------------------------------------------------------------------------------- | |
71 | ||
72 | .. function:: void _arb_hypgeom_gamma_stirling_term_bounds(slong * bound, const mag_t zinv, slong N) | |
73 | ||
74 | For `1 \le n < N`, sets *bound* to an exponent bounding the *n*-th term | |
75 | in the Stirling series for the gamma function, given a precomputed upper | |
76 | bound for `|z|^{-1}`. This function is intended for internal use and | |
77 | does not check for underflow or underflow in the exponents. | |
78 | ||
79 | .. function:: void arb_hypgeom_gamma_stirling_sum_horner(arb_t res, const arb_t z, slong N, slong prec) | |
80 | void arb_hypgeom_gamma_stirling_sum_improved(arb_t res, const arb_t z, slong N, slong K, slong prec) | |
81 | ||
82 | Sets *res* to the final sum in the Stirling series for the gamma function | |
83 | truncated before the term with index *N*, i.e. computes | |
84 | `\sum_{n=1}^{N-1} B_{2n} / (2n(2n-1) z^{2n-1})`. | |
85 | The *horner* version uses Horner scheme with gradual precision adjustments. | |
86 | The *improved* version uses rectangular splitting for the low-index | |
87 | terms and reexpands the high-index terms as hypergeometric polynomials, | |
88 | using a splitting parameter *K* (which can be set to 0 to use a default | |
89 | value). | |
90 | ||
91 | .. function:: void arb_hypgeom_gamma_stirling(arb_t res, const arb_t x, int reciprocal, slong prec) | |
92 | ||
93 | Sets *res* to the gamma function of *x* computed using the Stirling | |
94 | series together with argument reduction. If *reciprocal* is set, | |
95 | the reciprocal gamma function is computed instead. | |
96 | ||
97 | .. function:: int arb_hypgeom_gamma_taylor(arb_t res, const arb_t x,int reciprocal, slong prec) | |
98 | ||
99 | Attempts to compute the gamma function of *x* using Taylor series | |
100 | together with argument reduction. This is only supported if *x* and *prec* | |
101 | are both small enough. If successful, returns 1; otherwise, does nothing | |
102 | and returns 0. If *reciprocal* is set, the reciprocal gamma function is | |
103 | computed instead. | |
104 | ||
105 | .. function:: void arb_hypgeom_gamma(arb_t res, const arb_t x, slong prec) | |
106 | void arb_hypgeom_gamma_fmpq(arb_t res, const fmpq_t x, slong prec) | |
107 | void arb_hypgeom_gamma_fmpz(arb_t res, const fmpz_t x, slong prec) | |
108 | ||
109 | Sets *res* to the gamma function of *x* computed using a default | |
110 | algorithm choice. | |
111 | ||
112 | .. function:: void arb_hypgeom_rgamma(arb_t res, const arb_t x, slong prec) | |
113 | ||
114 | Sets *res* to the reciprocal gamma function of *x* computed using a default | |
115 | algorithm choice. | |
116 | ||
117 | .. function:: void arb_hypgeom_lgamma(arb_t res, const arb_t x, slong prec) | |
118 | ||
119 | Sets *res* to the log-gamma function of *x* computed using a default | |
120 | algorithm choice. | |
121 | ||
69 | 122 | |
70 | 123 | Binomial coefficients |
71 | 124 | ------------------------------------------------------------------------------- |
126 | 179 | Computes the error function `\operatorname{erf}(z)`. |
127 | 180 | |
128 | 181 | .. function:: void _arb_hypgeom_erf_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
129 | ||
130 | .. function:: void arb_hypgeom_erf_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
182 | void arb_hypgeom_erf_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
131 | 183 | |
132 | 184 | Computes the error function of the power series *z*, |
133 | 185 | truncated to length *len*. |
139 | 191 | This function avoids catastrophic cancellation for large positive *z*. |
140 | 192 | |
141 | 193 | .. function:: void _arb_hypgeom_erfc_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
142 | ||
143 | .. function:: void arb_hypgeom_erfc_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
194 | void arb_hypgeom_erfc_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
144 | 195 | |
145 | 196 | Computes the complementary error function of the power series *z*, |
146 | 197 | truncated to length *len*. |
151 | 202 | `\operatorname{erfi}(z) = -i\operatorname{erf}(iz)`. |
152 | 203 | |
153 | 204 | .. function:: void _arb_hypgeom_erfi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
154 | ||
155 | .. function:: void arb_hypgeom_erfi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
205 | void arb_hypgeom_erfi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
156 | 206 | |
157 | 207 | Computes the imaginary error function of the power series *z*, |
158 | 208 | truncated to length *len*. |
168 | 218 | `C(z)` is defined analogously. |
169 | 219 | |
170 | 220 | .. function:: void _arb_hypgeom_fresnel_series(arb_ptr res1, arb_ptr res2, arb_srcptr z, slong zlen, int normalized, slong len, slong prec) |
171 | ||
172 | .. function:: void arb_hypgeom_fresnel_series(arb_poly_t res1, arb_poly_t res2, const arb_poly_t z, int normalized, slong len, slong prec) | |
221 | void arb_hypgeom_fresnel_series(arb_poly_t res1, arb_poly_t res2, const arb_poly_t z, int normalized, slong len, slong prec) | |
173 | 222 | |
174 | 223 | Sets *res1* to the Fresnel sine integral and *res2* to the Fresnel |
175 | 224 | cosine integral of the power series *z*, truncated to length *len*. |
193 | 242 | interface for computing the exponential integral). |
194 | 243 | |
195 | 244 | .. function:: void _arb_hypgeom_gamma_upper_series(arb_ptr res, const arb_t s, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) |
196 | ||
197 | .. function:: void arb_hypgeom_gamma_upper_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, slong n, slong prec) | |
245 | void arb_hypgeom_gamma_upper_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, slong n, slong prec) | |
198 | 246 | |
199 | 247 | Sets *res* to an upper incomplete gamma function where *s* is |
200 | 248 | a constant and *z* is a power series, truncated to length *n*. |
213 | 261 | gamma function `\gamma^{*}(s,z) = z^{-s} P(s,z)`. |
214 | 262 | |
215 | 263 | .. function:: void _arb_hypgeom_gamma_lower_series(arb_ptr res, const arb_t s, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) |
216 | ||
217 | .. function:: void arb_hypgeom_gamma_lower_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, slong n, slong prec) | |
264 | void arb_hypgeom_gamma_lower_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, slong n, slong prec) | |
218 | 265 | |
219 | 266 | Sets *res* to an lower incomplete gamma function where *s* is |
220 | 267 | a constant and *z* is a power series, truncated to length *n*. |
229 | 276 | `I(a,b;z) = B(a,b;z) / B(a,b;1)`. |
230 | 277 | |
231 | 278 | .. function:: void _arb_hypgeom_beta_lower_series(arb_ptr res, const arb_t a, const arb_t b, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) |
232 | ||
233 | .. function:: void arb_hypgeom_beta_lower_series(arb_poly_t res, const arb_t a, const arb_t b, const arb_poly_t z, int regularized, slong n, slong prec) | |
279 | void arb_hypgeom_beta_lower_series(arb_poly_t res, const arb_t a, const arb_t b, const arb_poly_t z, int regularized, slong n, slong prec) | |
234 | 280 | |
235 | 281 | Sets *res* to the lower incomplete beta function `B(a,b;z)` (optionally |
236 | 282 | the regularized version `I(a,b;z)`) where *a* and *b* are constants |
250 | 296 | Computes the exponential integral `\operatorname{Ei}(z)`. |
251 | 297 | |
252 | 298 | .. function:: void _arb_hypgeom_ei_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
253 | ||
254 | .. function:: void arb_hypgeom_ei_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
299 | void arb_hypgeom_ei_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
255 | 300 | |
256 | 301 | Computes the exponential integral of the power series *z*, |
257 | 302 | truncated to length *len*. |
261 | 306 | Computes the sine integral `\operatorname{Si}(z)`. |
262 | 307 | |
263 | 308 | .. function:: void _arb_hypgeom_si_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
264 | ||
265 | .. function:: void arb_hypgeom_si_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
309 | void arb_hypgeom_si_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
266 | 310 | |
267 | 311 | Computes the sine integral of the power series *z*, |
268 | 312 | truncated to length *len*. |
273 | 317 | The result is indeterminate if `z < 0` since the value of the function would be complex. |
274 | 318 | |
275 | 319 | .. function:: void _arb_hypgeom_ci_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
276 | ||
277 | .. function:: void arb_hypgeom_ci_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
320 | void arb_hypgeom_ci_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
278 | 321 | |
279 | 322 | Computes the cosine integral of the power series *z*, |
280 | 323 | truncated to length *len*. |
284 | 327 | Computes the hyperbolic sine integral `\operatorname{Shi}(z) = -i \operatorname{Si}(iz)`. |
285 | 328 | |
286 | 329 | .. function:: void _arb_hypgeom_shi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
287 | ||
288 | .. function:: void arb_hypgeom_shi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
330 | void arb_hypgeom_shi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
289 | 331 | |
290 | 332 | Computes the hyperbolic sine integral of the power series *z*, |
291 | 333 | truncated to length *len*. |
296 | 338 | The result is indeterminate if `z < 0` since the value of the function would be complex. |
297 | 339 | |
298 | 340 | .. function:: void _arb_hypgeom_chi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) |
299 | ||
300 | .. function:: void arb_hypgeom_chi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
341 | void arb_hypgeom_chi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) | |
301 | 342 | |
302 | 343 | Computes the hyperbolic cosine integral of the power series *z*, |
303 | 344 | truncated to length *len*. |
313 | 354 | The result is indeterminate if `z < 0` since the value of the function would be complex. |
314 | 355 | |
315 | 356 | .. function:: void _arb_hypgeom_li_series(arb_ptr res, arb_srcptr z, slong zlen, int offset, slong len, slong prec) |
316 | ||
317 | .. function:: void arb_hypgeom_li_series(arb_poly_t res, const arb_poly_t z, int offset, slong len, slong prec) | |
357 | void arb_hypgeom_li_series(arb_poly_t res, const arb_poly_t z, int offset, slong len, slong prec) | |
318 | 358 | |
319 | 359 | Computes the logarithmic integral (optionally the offset version) |
320 | 360 | of the power series *z*, truncated to length *len*. |
373 | 413 | the output with :func:`_arb_poly_derivative`. |
374 | 414 | |
375 | 415 | .. function:: void _arb_hypgeom_airy_series(arb_ptr ai, arb_ptr ai_prime, arb_ptr bi, arb_ptr bi_prime, arb_srcptr z, slong zlen, slong len, slong prec) |
376 | ||
377 | .. function:: void arb_hypgeom_airy_series(arb_poly_t ai, arb_poly_t ai_prime, arb_poly_t bi, arb_poly_t bi_prime, const arb_poly_t z, slong len, slong prec) | |
416 | void arb_hypgeom_airy_series(arb_poly_t ai, arb_poly_t ai_prime, arb_poly_t bi, arb_poly_t bi_prime, const arb_poly_t z, slong len, slong prec) | |
378 | 417 | |
379 | 418 | Computes the Airy functions evaluated at the power series *z*, |
380 | 419 | truncated to length *len*. As with the other Airy methods, any of the |
407 | 446 | Either of the outputs can be *NULL*. |
408 | 447 | |
409 | 448 | .. function:: void _arb_hypgeom_coulomb_series(arb_ptr F, arb_ptr G, const arb_t l, const arb_t eta, arb_srcptr z, slong zlen, slong len, slong prec) |
410 | ||
411 | .. function:: void arb_hypgeom_coulomb_series(arb_poly_t F, arb_poly_t G, const arb_t l, const arb_t eta, const arb_poly_t z, slong len, slong prec) | |
449 | void arb_hypgeom_coulomb_series(arb_poly_t F, arb_poly_t G, const arb_t l, const arb_t eta, const arb_poly_t z, slong len, slong prec) | |
412 | 450 | |
413 | 451 | Computes the Coulomb wave functions evaluated at the power series *z*, |
414 | 452 | truncated to length *len*. Either of the outputs can be *NULL*. |
417 | 455 | ------------------------------------------------------------------------------- |
418 | 456 | |
419 | 457 | .. function:: void arb_hypgeom_chebyshev_t(arb_t res, const arb_t nu, const arb_t z, slong prec) |
420 | ||
421 | .. function:: void arb_hypgeom_chebyshev_u(arb_t res, const arb_t nu, const arb_t z, slong prec) | |
422 | ||
423 | .. function:: void arb_hypgeom_jacobi_p(arb_t res, const arb_t n, const arb_t a, const arb_t b, const arb_t z, slong prec) | |
424 | ||
425 | .. function:: void arb_hypgeom_gegenbauer_c(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) | |
426 | ||
427 | .. function:: void arb_hypgeom_laguerre_l(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) | |
428 | ||
429 | .. function:: void arb_hypgeom_hermite_h(arb_t res, const arb_t nu, const arb_t z, slong prec) | |
458 | void arb_hypgeom_chebyshev_u(arb_t res, const arb_t nu, const arb_t z, slong prec) | |
459 | void arb_hypgeom_jacobi_p(arb_t res, const arb_t n, const arb_t a, const arb_t b, const arb_t z, slong prec) | |
460 | void arb_hypgeom_gegenbauer_c(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) | |
461 | void arb_hypgeom_laguerre_l(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) | |
462 | void arb_hypgeom_hermite_h(arb_t res, const arb_t nu, const arb_t z, slong prec) | |
430 | 463 | |
431 | 464 | Computes Chebyshev, Jacobi, Gegenbauer, Laguerre or Hermite polynomials, |
432 | 465 | or their extensions to non-integer orders. |
433 | 466 | |
434 | 467 | .. function:: void arb_hypgeom_legendre_p(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) |
435 | ||
436 | .. function:: void arb_hypgeom_legendre_q(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) | |
468 | void arb_hypgeom_legendre_q(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) | |
437 | 469 | |
438 | 470 | Computes Legendre functions of the first and second kind. |
439 | 471 | See :func:`acb_hypgeom_legendre_p` and :func:`acb_hypgeom_legendre_q` |
448 | 480 | internally to bound the propagated error for Legendre polynomials. |
449 | 481 | |
450 | 482 | .. function:: void arb_hypgeom_legendre_p_ui_zero(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) |
451 | ||
452 | .. function:: void arb_hypgeom_legendre_p_ui_one(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) | |
453 | ||
454 | .. function:: void arb_hypgeom_legendre_p_ui_asymp(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) | |
455 | ||
456 | .. function:: void arb_hypgeom_legendre_p_rec(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) | |
457 | ||
458 | .. function:: void arb_hypgeom_legendre_p_ui(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) | |
483 | void arb_hypgeom_legendre_p_ui_one(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) | |
484 | void arb_hypgeom_legendre_p_ui_asymp(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) | |
485 | void arb_hypgeom_legendre_p_rec(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) | |
486 | void arb_hypgeom_legendre_p_ui(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) | |
459 | 487 | |
460 | 488 | Evaluates the ordinary Legendre polynomial `P_n(x)`. If *res_prime* is |
461 | 489 | non-NULL, simultaneously evaluates the derivative `P'_n(x)`. |
720 | 720 | |
721 | 721 | The underscore methods do not support aliasing, and assume that |
722 | 722 | the lengths are nonzero. |
723 | ||
724 | .. function:: void _arb_poly_graeffe_transform(arb_ptr b, arb_srcptr a, slong len, slong prec) | |
725 | ||
726 | .. function:: void arb_poly_graeffe_transform(arb_poly_t b, arb_poly_t a, slong prec) | |
727 | ||
728 | Computes the Graeffe transform of input polynomial. | |
729 | ||
730 | The Graeffe transform `G` of a polynomial `P` is defined through the | |
731 | equation `G(x^2) = \pm P(x)P(-x)`. | |
732 | The sign is given by `(-1)^d`, where `d = deg(P)`. | |
733 | The Graeffe transform has the property that its roots are exactly the | |
734 | squares of the roots of P. | |
735 | ||
736 | The underscore method assumes that *a* and *b* are initialized, | |
737 | *a* is of length *len*, and *b* is of length at least *len*. | |
738 | Both methods allow aliasing. | |
723 | 739 | |
724 | 740 | Powers and elementary functions |
725 | 741 | ------------------------------------------------------------------------------- |
620 | 620 | |
621 | 621 | Performs a fused multiply-subtract `z = z - x \cdot y`, updating *z* in-place. |
622 | 622 | |
623 | .. function:: int arf_fma(arf_t res, const arf_t x, const arf_t y, const arf_t z, slong prec, arf_rnd_t rnd) | |
624 | ||
625 | Sets *res* to `x \cdot y + z`. This is equivalent to an *addmul* except | |
626 | that *res* and *z* can be separate variables. | |
627 | ||
623 | 628 | .. function:: int arf_sosq(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) |
624 | 629 | |
625 | 630 | Sets *res* to `x^2 + y^2`, rounded to *prec* bits in the direction specified by *rnd*. |
73 | 73 | * David Berghaus - aliased window matrix multiplication |
74 | 74 | * Albin Ahlbäck - uniformly distributed random numbers |
75 | 75 | * Daniel Schultz - derivative of Weierstrass elliptic function |
76 | * Matthias Gessinger - Graeffe transforms | |
76 | 77 | |
77 | 78 | Funding |
78 | 79 | ------------------------------------------------------------------------------- |
706 | 706 | cpu/wall(s): 0.019 0.018 |
707 | 707 | I9 = [0.3785300 +/- 3.17e-8] |
708 | 708 | |
709 | fpwrap.c | |
710 | ------------------------------------------------------------------------------- | |
711 | ||
712 | This program demonstrates calling the floating-point wrapper:: | |
713 | ||
714 | > build/examples/fpwrap | |
715 | zeta(2) = 1.644934066848226 | |
716 | zeta(0.5 + 123i) = 0.006252861175594465 + 0.08206030514520983i | |
717 | ||
718 | ||
709 | 719 | .. highlight:: c |
710 | 720 |
11 | 11 | Old versions of the documentation |
12 | 12 | ------------------------------------------------------------------------------- |
13 | 13 | |
14 | * http://arblib.org/arb-2.21.0.pdf | |
14 | 15 | * http://arblib.org/arb-2.20.0.pdf |
15 | 16 | * http://arblib.org/arb-2.19.0.pdf |
16 | 17 | * http://arblib.org/arb-2.18.1.pdf |
33 | 34 | * http://arblib.org/arb-2.4.0.pdf |
34 | 35 | * http://arblib.org/arb-2.3.0.pdf |
35 | 36 | |
37 | 2021-09-25 -- version 2.21.0 | |
38 | ------------------------------------------------------------------------------- | |
39 | ||
40 | * Experimental new arb_fpwrap module: accurate floating-point wrappers | |
41 | of Arb mathematical functions (supersedes the external arbcmath.h). | |
42 | * Fixed memory leak in arf_load_file (reported by Dave Platt). | |
43 | * New and faster gamma function code. | |
44 | * Most gamma function internals are now located in the arb_hypgeom and | |
45 | acb_hypgeom modules. The user-facing functions (arb_gamma, etc.) are still | |
46 | available under the old names for compatibility. The internal | |
47 | algorithms for rising factorials (binary splitting, etc.) have been moved | |
48 | without aliases. | |
49 | * Added arb_fma, arb_fma_arf, arb_fma_ui (like addmul, but take a separate input and output). | |
50 | * Slightly faster internal Bernoulli number generation for small n. | |
51 | * Better enclosures for acb_barnes_g at negative reals. | |
52 | * Added Graeffe transforms (arb_poly_graeffe_transform, acb_poly_graeffe_transform) | |
53 | (contributed by Matthias Gessinger). | |
54 | * Fixed conflict with musl libc (reported by Gonzalo Tornaría). | |
55 | * Added acb_add_error_arb (contributed by Albin Ahlbäck). | |
56 | ||
36 | 57 | 2021-07-25 -- version 2.20.0 |
37 | 58 | ------------------------------------------------------------------------------- |
38 | 59 | |
39 | * Flint 2.18 support. | |
60 | * Flint 2.8 support. | |
40 | 61 | * Change arb_get_str with ARB_STR_NO_RADIUS: [+/- 1.20e-15] now prints as 0e-14. |
41 | 62 | * Uniformly distributed random number functions arf_urandom, arb_urandom |
42 | 63 | (contributed by Albin Ahlbäck). |
197 | 197 | arb_calc.rst |
198 | 198 | acb_calc.rst |
199 | 199 | |
200 | Wrappers | |
201 | :::::::::::::::::::::::::::::::::::: | |
202 | ||
203 | Floating-point wrappers for Arb functions. | |
204 | ||
205 | .. toctree:: | |
206 | :maxdepth: 2 | |
207 | ||
208 | arb_fpwrap.rst | |
209 | ||
210 | ||
200 | 211 | Extra utility modules |
201 | 212 | :::::::::::::::::::::::::::::::::::: |
202 | 213 |
0 | /* This file is public domain. Author: Fredrik Johansson. */ | |
1 | ||
2 | #include "arb_fpwrap.h" | |
3 | ||
4 | int main() | |
5 | { | |
6 | double x, y; | |
7 | complex_double cx, cy; | |
8 | int flags = 0; /* default options */ | |
9 | ||
10 | x = 2.0; | |
11 | cx.real = 0.5; | |
12 | cx.imag = 123.0; | |
13 | ||
14 | arb_fpwrap_double_zeta(&y, x, flags); | |
15 | arb_fpwrap_cdouble_zeta(&cy, cx, flags); | |
16 | ||
17 | printf("zeta(%g) = %.16g\n", x, y); | |
18 | printf("zeta(%g + %gi) = %.16g + %.16gi\n", cx.real, cx.imag, cy.real, cy.imag); | |
19 | ||
20 | flint_cleanup(); | |
21 | return 0; | |
22 | } | |
23 |