int main(void) { int i, result; flint_rand_t state; _randinit(state); { const char *str = "3 [5 0 0] [0 5 0] [0 0 5] (2 0 1)[1 1 3]"; const long n = atoi(str) - 1; mpoly_t P; ctx_t ctxFracQt; qadic_ctx_t Qq; fmpz_t p = {3L}; long d = 40; qadic_t t1; prec_t prec, prec_in; /* prec_in.N0 = 9; prec_in.N1 = 9; prec_in.N2 = 9; prec_in.N3 = 13; prec_in.N3i = 14; prec_in.N3w = 23; prec_in.N3iw = 22; prec_in.N4 = 18; prec_in.m = 29; prec_in.K = 178; prec_in.r = 0; prec_in.s = 0; */ ctx_init_fmpz_poly_q(ctxFracQt); qadic_ctx_init_conway(Qq, p, d, 1, 1, "X", PADIC_SERIES); qadic_init2(t1, 1); qadic_gen(t1, Qq); mpoly_init(P, n + 1, ctxFracQt); mpoly_set_str(P, str, ctxFracQt); frob(P, ctxFracQt, t1, Qq, &prec, NULL, 1); qadic_clear(t1); mpoly_clear(P, ctxFracQt); ctx_clear(ctxFracQt); qadic_ctx_clear(Qq); } _randclear(state); _fmpz_cleanup(); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; _randinit(state); /* A generic sextic curve. */ { const char *str = "3 [6 0 0] [0 6 0] [0 0 6] " "(2 0 -1)[5 1 0] (2 0 7)[5 0 1] (2 0 2)[1 5 0] (2 0 1)[0 5 1] (2 0 2)[1 0 5] (2 0 1)[0 1 5] " "(2 0 2)[4 2 0] (2 0 2)[4 0 2] (2 0 3)[2 4 0] (2 0 1)[0 4 2] (2 0 3)[2 0 4] (2 0 1)[0 2 4] " "(2 0 3)[4 1 1] (2 0 3)[1 4 1] (2 0 1)[1 1 4] " "(2 0 -1)[3 3 0] (2 0 -2)[3 0 3] (2 0 4)[0 3 3] " "(2 0 2)[3 2 1] (2 0 1)[3 1 2] (2 0 -1)[2 3 1] (2 0 1)[1 3 2] (2 0 2)[2 1 3] (2 0 1)[1 2 3] " "(2 0 1)[2 2 2]"; const long n = atoi(str) - 1; mpoly_t P; ctx_t ctxFracQt; qadic_ctx_t Qq; fmpz_t p = {5L}; long d = 1; qadic_t t1; prec_t prec, prec_in; ctx_init_fmpz_poly_q(ctxFracQt); qadic_ctx_init_conway(Qq, p, d, 1, 1, "X", PADIC_SERIES); qadic_init2(t1, 1); qadic_set_ui(t1, 2, Qq); mpoly_init(P, n + 1, ctxFracQt); mpoly_set_str(P, str, ctxFracQt); frob(P, ctxFracQt, t1, Qq, &prec, NULL, 1); qadic_clear(t1); mpoly_clear(P, ctxFracQt); ctx_clear(ctxFracQt); qadic_ctx_clear(Qq); } _randclear(state); _fmpz_cleanup(); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; _randinit(state); /* A quartic surface from Example 4.2.1 in [AKR]. TODO: This currently still fails! */ { const char *str = "4 (2 2 -1)[4 0 0 0] [0 4 0 0] [0 0 4 0] [0 0 0 4] " "(2 0 -1)[0 1 3 0] (2 0 1)[1 1 2 0] (2 0 1)[1 1 1 1] " "(2 0 1)[2 1 1 0] (2 0 -1)[2 1 0 1] (2 0 1)[1 0 3 0] (2 0 -1)[1 0 2 1]"; const long n = atoi(str) - 1; mpoly_t P; ctx_t ctxFracQt; qadic_ctx_t Qq; fmpz_t p = {3L}; long d = 2; qadic_t t1; prec_t prec, prec_in; ctx_init_fmpz_poly_q(ctxFracQt); qadic_ctx_init_conway(Qq, p, d, 1, 1, "X", PADIC_SERIES); qadic_init2(t1, 1); qadic_gen(t1, Qq); mpoly_init(P, n + 1, ctxFracQt); mpoly_set_str(P, str, ctxFracQt); frob(P, ctxFracQt, t1, Qq, &prec, NULL, 1); qadic_clear(t1); mpoly_clear(P, ctxFracQt); ctx_clear(ctxFracQt); qadic_ctx_clear(Qq); } _randclear(state); _fmpz_cleanup(); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; _randinit(state); { const char *str = "4 [5 0 0 0] [0 5 0 0] [0 0 5 0] [0 0 0 5] (2 0 1)[2 1 1 1]"; const long n = atoi(str) - 1; mpoly_t P; ctx_t ctxFracQt; qadic_ctx_t Qq; fmpz_t p = {2L}; long d = 10; qadic_t t1; prec_t prec, prec_in; ctx_init_fmpz_poly_q(ctxFracQt); qadic_ctx_init_conway(Qq, p, d, 1, 1, "X", PADIC_SERIES); qadic_init2(t1, 1); qadic_gen(t1, Qq); mpoly_init(P, n + 1, ctxFracQt); mpoly_set_str(P, str, ctxFracQt); frob(P, ctxFracQt, t1, Qq, &prec, NULL, 1); qadic_clear(t1); mpoly_clear(P, ctxFracQt); ctx_clear(ctxFracQt); qadic_ctx_clear(Qq); } _randclear(state); _fmpz_cleanup(); return EXIT_SUCCESS; }
int main(void) { int i, result; FLINT_TEST_INIT(state); flint_printf("mul... "); fflush(stdout); /* Check aliasing: a = a * b */ for (i = 0; i < 2000; i++) { fmpz_t p; slong d, N; qadic_ctx_t ctx; qadic_t a, b, c; fmpz_init_set_ui(p, n_randprime(state, 2 + n_randint(state, 3), 1)); d = n_randint(state, 10) + 1; N = z_randint(state, 50) + 1; qadic_ctx_init_conway(ctx, p, d, FLINT_MAX(0,N-10), FLINT_MAX(0,N+10), "a", PADIC_SERIES); qadic_init2(a, N); qadic_init2(b, N); qadic_init2(c, N); qadic_randtest(a, state, ctx); qadic_randtest(b, state, ctx); qadic_mul(c, a, b, ctx); qadic_mul(a, a, b, ctx); result = (qadic_equal(a, c)); if (!result) { flint_printf("FAIL:\n\n"); flint_printf("a = "), qadic_print_pretty(a, ctx), flint_printf("\n"); flint_printf("b = "), qadic_print_pretty(b, ctx), flint_printf("\n"); flint_printf("c = "), qadic_print_pretty(c, ctx), flint_printf("\n"); abort(); } qadic_clear(a); qadic_clear(b); qadic_clear(c); fmpz_clear(p); qadic_ctx_clear(ctx); } /* Check aliasing: b = a * b */ for (i = 0; i < 2000; i++) { fmpz_t p; slong d, N; qadic_ctx_t ctx; qadic_t a, b, c; fmpz_init_set_ui(p, n_randprime(state, 2 + n_randint(state, 3), 1)); d = n_randint(state, 10) + 1; N = z_randint(state, 50) + 1; qadic_ctx_init_conway(ctx, p, d, FLINT_MAX(0, N-10), FLINT_MAX(0, N+10), "a", PADIC_SERIES); qadic_init2(a, N); qadic_init2(b, N); qadic_init2(c, N); qadic_randtest(a, state, ctx); qadic_randtest(b, state, ctx); qadic_mul(c, a, b, ctx); qadic_mul(b, a, b, ctx); result = (qadic_equal(b, c)); if (!result) { flint_printf("FAIL:\n\n"); flint_printf("a = "), qadic_print_pretty(a, ctx), flint_printf("\n"); flint_printf("b = "), qadic_print_pretty(b, ctx), flint_printf("\n"); flint_printf("c = "), qadic_print_pretty(c, ctx), flint_printf("\n"); abort(); } qadic_clear(a); qadic_clear(b); qadic_clear(c); fmpz_clear(p); qadic_ctx_clear(ctx); } /* Check aliasing: a = a + a */ for (i = 0; i < 2000; i++) { fmpz_t p; slong d, N; qadic_ctx_t ctx; qadic_t a, c; fmpz_init_set_ui(p, n_randprime(state, 2 + n_randint(state, 3), 1)); d = n_randint(state, 10) + 1; N = z_randint(state, 50) + 1; qadic_ctx_init_conway(ctx, p, d, FLINT_MAX(0,N-10), FLINT_MAX(0,N+10), "a", PADIC_SERIES); qadic_init2(a, N); qadic_init2(c, N); qadic_randtest(a, state, ctx); qadic_add(c, a, a, ctx); qadic_add(a, a, a, ctx); result = (qadic_equal(a, c)); if (!result) { flint_printf("FAIL:\n\n"); flint_printf("a = "), qadic_print_pretty(a, ctx), flint_printf("\n"); flint_printf("c = "), qadic_print_pretty(c, ctx), flint_printf("\n"); abort(); } qadic_clear(a); qadic_clear(c); fmpz_clear(p); qadic_ctx_clear(ctx); } /* Check that a * b == b * a */ for (i = 0; i < 2000; i++) { fmpz_t p; slong d, N; qadic_ctx_t ctx; qadic_t a, b, c1, c2; fmpz_init_set_ui(p, n_randprime(state, 2 + n_randint(state, 3), 1)); d = n_randint(state, 10) + 1; N = z_randint(state, 50) + 1; qadic_ctx_init_conway(ctx, p, d, FLINT_MAX(0,N-10), FLINT_MAX(0,N+10), "a", PADIC_SERIES); qadic_init2(a, N); qadic_init2(b, N); qadic_init2(c1, N); qadic_init2(c2, N); qadic_randtest(a, state, ctx); qadic_randtest(b, state, ctx); qadic_mul(c1, a, b, ctx); qadic_mul(c2, b, a, ctx); result = (qadic_equal(c1, c2)); if (!result) { flint_printf("FAIL:\n\n"); flint_printf("a = "), qadic_print_pretty(a, ctx), flint_printf("\n"); flint_printf("b = "), qadic_print_pretty(b, ctx), flint_printf("\n"); flint_printf("c1 = "), qadic_print_pretty(c1, ctx), flint_printf("\n"); flint_printf("c2 = "), qadic_print_pretty(c2, ctx), flint_printf("\n"); abort(); } qadic_clear(a); qadic_clear(b); qadic_clear(c1); qadic_clear(c2); fmpz_clear(p); qadic_ctx_clear(ctx); } /* Check that (a * b) * c == a * (b * c) for integral values */ for (i = 0; i < 2000; i++) { fmpz_t p; slong d, N; qadic_ctx_t ctx; qadic_t a, b, c, lhs, rhs; fmpz_init_set_ui(p, n_randprime(state, 2 + n_randint(state, 3), 1)); d = n_randint(state, 10) + 1; N = n_randint(state, 50) + 1; qadic_ctx_init_conway(ctx, p, d, FLINT_MAX(0,N-10), FLINT_MAX(0,N+10), "a", PADIC_SERIES); qadic_init2(a, N); qadic_init2(b, N); qadic_init2(c, N); qadic_init2(lhs, N); qadic_init2(rhs, N); qadic_randtest_int(a, state, ctx); qadic_randtest_int(b, state, ctx); qadic_randtest_int(c, state, ctx); qadic_mul(lhs, a, b, ctx); qadic_mul(lhs, lhs, c, ctx); qadic_mul(rhs, b, c, ctx); qadic_mul(rhs, a, rhs, ctx); result = (qadic_equal(lhs, rhs)); if (!result) { flint_printf("FAIL:\n\n"); flint_printf("a = "), qadic_print_pretty(a, ctx), flint_printf("\n"); flint_printf("b = "), qadic_print_pretty(b, ctx), flint_printf("\n"); flint_printf("c = "), qadic_print_pretty(c, ctx), flint_printf("\n"); flint_printf("lhs = "), qadic_print_pretty(lhs, ctx), flint_printf("\n"); flint_printf("rhs = "), qadic_print_pretty(rhs, ctx), flint_printf("\n"); abort(); } qadic_clear(a); qadic_clear(b); qadic_clear(c); qadic_clear(lhs); qadic_clear(rhs); fmpz_clear(p); qadic_ctx_clear(ctx); } FLINT_TEST_CLEANUP(state); flint_printf("PASS\n"); return EXIT_SUCCESS; }
int main(void) { int i, result; FLINT_TEST_INIT(state); flint_printf("norm... "); fflush(stdout); /* Compare with product of Galois conjugates */ for (i = 0; i < 2000; i++) { fmpz_t p; slong d, N; qadic_ctx_t ctx; qadic_t a, b, c; padic_t x, y; slong j; int ans; fmpz_init_set_ui(p, n_randprime(state, 2 + n_randint(state, 3), 1)); d = n_randint(state, 10) + 1; N = z_randint(state, 50) + 1; qadic_ctx_init_conway(ctx, p, d, FLINT_MAX(0,N-10), FLINT_MAX(0,N+10), "a", PADIC_SERIES); qadic_init2(a, N); qadic_init2(b, N); qadic_init2(c, N); padic_init2(x, N); padic_init2(y, N); qadic_randtest_val(a, state, 0, ctx); qadic_reduce(a, ctx); qadic_norm(x, a, ctx); qadic_one(b); for (j = 0; j < d; j++) { qadic_frobenius(c, a, j, ctx); qadic_mul(b, b, c, ctx); } ans = qadic_get_padic(y, b, ctx); result = (ans && padic_equal(x, y)); if (!result) { flint_printf("FAIL:\n\n"); flint_printf("a = "), qadic_print_pretty(a, ctx), flint_printf("\n"); flint_printf("b = "), qadic_print_pretty(b, ctx), flint_printf("\n"); flint_printf("x = "), padic_print(x, &ctx->pctx), flint_printf("\n"); flint_printf("y = "), padic_print(y, &ctx->pctx), flint_printf("\n"); for (j = 0; j < d; j++) { qadic_frobenius(c, a, j, ctx); flint_printf("sigma^%wd = ", j), qadic_print_pretty(c, ctx), flint_printf("\n"); } flint_printf("ans = %d\n", ans); abort(); } qadic_clear(a); qadic_clear(b); qadic_clear(c); padic_clear(x); padic_clear(y); fmpz_clear(p); qadic_ctx_clear(ctx); } FLINT_TEST_CLEANUP(state); flint_printf("PASS\n"); return EXIT_SUCCESS; }