int main() { fmpq_poly_t P, Q; mpz_t t; slong k, n; FLINT_TEST_INIT(state); flint_printf("bernoulli_polynomial...."); fflush(stdout); for (n = 0; n <= 100; n++) { fmpq_poly_init(P); fmpq_poly_init(Q); mpz_init(t); for (k = 0; k <= n; k++) { arith_bernoulli_polynomial(P, k); flint_mpz_bin_uiui(t, n+1, k); fmpq_poly_scalar_mul_mpz(P, P, t); fmpq_poly_add(Q, Q, P); } fmpq_poly_scalar_div_ui(Q, Q, n+1); mpz_clear(t); fmpq_poly_zero(P); fmpq_poly_set_coeff_ui(P, n, UWORD(1)); if (!fmpq_poly_equal(P, Q)) { flint_printf("ERROR: sum up to n = %wd did not add to x^n\n", n); flint_printf("Sum: "); fmpq_poly_print_pretty(Q, "x"); flint_printf("\nExpected: "); fmpq_poly_print_pretty(P, "x"); flint_printf("\n"); abort(); } fmpq_poly_clear(P); fmpq_poly_clear(Q); } FLINT_TEST_CLEANUP(state); flint_printf("PASS\n"); return 0; }
int main() { fmpq_poly_t Pn, Pn1, Pn2, R; long n; printf("legendre_polynomial...."); fflush(stdout); fmpq_poly_init(Pn); fmpq_poly_init(Pn1); fmpq_poly_init(Pn2); fmpq_poly_init(R); fmpq_poly_set_ui(Pn, 1UL); fmpq_poly_set_coeff_ui(Pn1, 1, 1UL); for (n = 0; n <= 500; n++) { legendre_polynomial(R, n); if (!fmpq_poly_equal(Pn, R)) { printf("FAIL: n = %ld\n", n); printf("Direct: "); fmpq_poly_print_pretty(R, "x"); printf("\n"); printf("Recur.: "); fmpq_poly_print_pretty(Pn, "x"); printf("\n"); abort(); } fmpq_poly_shift_left(Pn2, Pn1, 1); fmpq_poly_scalar_mul_ui(Pn2, Pn2, 2*n + 3); fmpq_poly_scalar_mul_si(Pn, Pn, -(n+1)); fmpq_poly_add(Pn2, Pn2, Pn); fmpq_poly_scalar_div_ui(Pn2, Pn2, n+2); fmpq_poly_swap(Pn, Pn1); fmpq_poly_swap(Pn1, Pn2); } fmpq_poly_clear(Pn); fmpq_poly_clear(Pn1); fmpq_poly_clear(Pn2); fmpq_poly_clear(R); _fmpz_cleanup(); printf("PASS\n"); return 0; }
void check_renf(renf_t nf) { arb_ptr a; arb_t b; a = nf->emb; if (fmpq_poly_length(nf->nf->pol) != fmpz_poly_length(nf->der) + 1) { printf("FAIL:\n"); printf("uninitalized derivative"); fflush(stdout); abort(); } arb_init(b); fmpq_poly_evaluate_arb(b, nf->nf->pol, a, nf->prec); if (!arb_contains_zero(b)) { printf("FAIL:\n"); printf("evaluation does not contain zero\n"); printf("pol = "); fmpq_poly_print_pretty(nf->nf->pol, "x"); printf("\n"); printf("a = "); arb_printd(a, 10); printf("\n"); printf("b = "); arb_printd(b, 10); printf("\n"); fflush(stdout); abort(); } arb_clear(b); }
int main(void) { int i, result; FLINT_TEST_INIT(state); flint_printf("resultant_div...."); fflush(stdout); for (i = 0; i < 50; i++) { fmpq_poly_t f, g, h, p; fmpq_t x, y, z, zz; fmpz_t den; slong nbits; fmpq_poly_init(f); fmpq_poly_init(g); fmpq_poly_init(p); fmpq_poly_init(h); fmpq_init(x); fmpq_init(y); fmpq_init(z); fmpq_init(zz); fmpz_init(den); fmpq_poly_randtest(f, state, n_randint(state, 50), 100); fmpq_poly_randtest(g, state, n_randint(state, 50), 100); fmpq_poly_randtest(h, state, n_randint(state, 50), 100); fmpz_set(den, fmpq_poly_denref(f)); fmpq_poly_scalar_mul_fmpz(f, f, den); fmpz_set(den, fmpq_poly_denref(g)); fmpq_poly_scalar_mul_fmpz(g, g, den); fmpz_set(den, fmpq_poly_denref(h)); fmpq_poly_scalar_mul_fmpz(h, h, den); fmpq_poly_mul(p, f, g); fmpq_poly_resultant(x, f, h); if (!fmpz_is_one(fmpq_denref(x))) { flint_printf("FAIL resultant not integral\n"); flint_printf("f = "), fmpq_poly_print(f), flint_printf("\n\n"); flint_printf("g = "), fmpq_poly_print(g), flint_printf("\n\n"); flint_printf("y = "), fmpq_print(y), flint_printf("\n\n"); abort(); } fmpq_poly_resultant(y, g, h); if (!fmpz_is_one(fmpq_denref(y))) { flint_printf("FAIL resultant not integral\n"); flint_printf("h = "), fmpq_poly_print(f), flint_printf("\n\n"); flint_printf("g = "), fmpq_poly_print(g), flint_printf("\n\n"); flint_printf("z = "), fmpq_print(y), flint_printf("\n\n"); abort(); } fmpq_poly_resultant(z, p, h); if (!fmpz_is_one(fmpq_denref(z))) { flint_printf("FAIL resultant not integral\n"); flint_printf("p = "), fmpq_poly_print(f), flint_printf("\n\n"); flint_printf("g = "), fmpq_poly_print(g), flint_printf("\n\n"); flint_printf("y = "), fmpq_print(y), flint_printf("\n\n"); abort(); } if (fmpq_is_zero(z)) { fmpq_poly_clear(f); fmpq_poly_clear(g); fmpq_poly_clear(h); fmpq_poly_clear(p); fmpq_clear(x); fmpq_clear(y); fmpq_clear(z); fmpq_clear(zz); fmpz_clear(den); continue; } nbits = (slong)fmpz_bits(fmpq_numref(y)) + 1; fmpq_poly_resultant_div(z, p, h, fmpq_numref(x), nbits); fmpq_poly_resultant(zz, p, h); result = fmpq_equal(z, y); if (!result) { flint_printf("FAIL (res(p, g)/div == res(p, g)/div:\n"); flint_printf("p = "), fmpq_poly_print_pretty(p, "x"), flint_printf("\n\n"); flint_printf("h = "), fmpq_poly_print_pretty(h, "x"), flint_printf("\n\n"); flint_printf("res(p, h) = "), fmpq_print(zz), flint_printf("\n\n"); flint_printf("res(p, h) = "), fmpq_print(x), flint_printf(" * "), fmpq_print(y), flint_printf("\n\n"); flint_printf("supplied divisor = "), fmpq_print(x), flint_printf("\n\n"); flint_printf("nbits = %wu\n\n", nbits); flint_printf("divisor found = "), fmpq_print(z), flint_printf("\n\n"); flint_printf("correct result = "), fmpq_print(y), flint_printf("\n\n"); abort(); } fmpq_poly_clear(f); fmpq_poly_clear(g); fmpq_poly_clear(h); fmpq_poly_clear(p); fmpq_clear(x); fmpq_clear(y); fmpq_clear(z); fmpq_clear(zz); fmpz_clear(den); } FLINT_TEST_CLEANUP(state); flint_printf("PASS\n"); return 0; }