void arb_zeta_ui_vec_even(arb_ptr x, ulong start, slong num, slong prec) { slong i; for (i = 0; i < num; i++) arb_zeta_ui(x + i, start + 2 * i, prec); }
int main() { long iter; flint_rand_t state; printf("zeta_ui...."); fflush(stdout); flint_randinit(state); for (iter = 0; iter < 1000; iter++) { arb_t r; ulong n; mpfr_t s; long prec, accuracy; prec = 2 + n_randint(state, 1 << n_randint(state, 14)); arb_init(r); mpfr_init2(s, prec + 100); do { n = n_randint(state, 1 << n_randint(state, 10)); } while (n == 1); arb_zeta_ui(r, n, prec); mpfr_zeta_ui(s, n, MPFR_RNDN); if (!arb_contains_mpfr(r, s)) { printf("FAIL: containment\n\n"); printf("n = %lu\n\n", n); printf("r = "); arb_printd(r, prec / 3.33); printf("\n\n"); printf("s = "); mpfr_printf("%.275Rf\n", s); printf("\n\n"); abort(); } accuracy = arb_rel_accuracy_bits(r); if (accuracy < prec - 4) { printf("FAIL: accuracy = %ld, prec = %ld\n\n", accuracy, prec); printf("r = "); arb_printd(r, prec / 3.33); printf("\n\n"); abort(); } arb_clear(r); mpfr_clear(s); } flint_randclear(state); flint_cleanup(); printf("PASS\n"); return EXIT_SUCCESS; }
void acb_zeta_si(acb_t z, slong s, slong prec) { if (s >= 0) { arb_zeta_ui(acb_realref(z), s, prec); } else { arb_bernoulli_ui(acb_realref(z), 1-s, prec); arb_div_ui(acb_realref(z), acb_realref(z), 1-s, prec); arb_neg(acb_realref(z), acb_realref(z)); } arb_zero(acb_imagref(z)); return; }