void mpoly_randtest_not_zero(mpoly_t rop, flint_rand_t state, long d, long N, const ctx_t ctx) { long i, n = rop->n; if (!(d >= 0 && N > 0)) { printf("ERROR (mpoly_randtest_not_zero).\n"); abort(); } do mpoly_randtest(rop, state, d, N, ctx); while (mpoly_is_zero(rop, ctx)); }
int main(void) { int i, result; flint_rand_t state; ctx_t ctx; printf("add_coeff... "); fflush(stdout); _randinit(state); ctx_init_mpq(ctx); for (i = 0; i < 1000; i++) { mpoly_t a; long n, d, N; mon_t m; char *x, *y, *z; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mon_init(m); mon_randtest(m, state, n, d); x = malloc(ctx->size); y = malloc(ctx->size); z = malloc(ctx->size); ctx->init(ctx, x); ctx->init(ctx, y); ctx->init(ctx, z); ctx->randtest(ctx, x, state); mpoly_init(a, n, ctx); mpoly_randtest(a, state, d, N, ctx); mpoly_get_coeff(y, a, m, ctx); ctx->add(ctx, y, y, x); mpoly_add_coeff(a, m, x, ctx); mpoly_get_coeff(z, a, m, ctx); result = (ctx->equal(ctx, y, z)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); ctx->print(ctx, x); printf("\n"); ctx->print(ctx, y); printf("\n"); ctx->print(ctx, z); printf("\n"); abort(); } mpoly_clear(a, ctx); mon_clear(m); ctx->clear(ctx, x); ctx->clear(ctx, y); ctx->clear(ctx, z); free(x); free(y); free(z); } _randclear(state); _fmpz_cleanup(); printf("PASS\n"); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; ctx_t ctx; printf("addmul... "); fflush(stdout); _randinit(state); ctx_init_mpq(ctx); /* Check aliasing of a and c */ for (i = 0; i < 1000; i++) { mpoly_t a, b, c; long n, d, N; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mpoly_init(a, n, ctx); mpoly_init(b, n, ctx); mpoly_init(c, n, ctx); mpoly_randtest(a, state, d, N, ctx); mpoly_randtest(b, state, d, N, ctx); mpoly_set(c, a, ctx); mpoly_addmul(c, a, b, ctx); mpoly_addmul(a, a, b, ctx); result = (mpoly_equal(a, c, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); mpoly_print(b, ctx); printf("\n"); mpoly_print(c, ctx); printf("\n"); abort(); } mpoly_clear(a, ctx); mpoly_clear(b, ctx); mpoly_clear(c, ctx); } /* Check aliasing of b and c */ for (i = 0; i < 1000; i++) { mpoly_t a, b, c; long n, d, N; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mpoly_init(a, n, ctx); mpoly_init(b, n, ctx); mpoly_init(c, n, ctx); mpoly_randtest(a, state, d, N, ctx); mpoly_randtest(b, state, d, N, ctx); mpoly_set(c, b, ctx); mpoly_addmul(c, a, b, ctx); mpoly_addmul(b, a, b, ctx); result = (mpoly_equal(b, c, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); mpoly_print(b, ctx); printf("\n"); mpoly_print(c, ctx); printf("\n"); abort(); } mpoly_clear(a, ctx); mpoly_clear(b, ctx); mpoly_clear(c, ctx); } _randclear(state); _fmpz_cleanup(); printf("PASS\n"); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; ctx_t ctx; printf("mul_mon... "); fflush(stdout); _randinit(state); ctx_init_mpq(ctx); /* Check aliasing of a and b */ for (i = 0; i < 1000; i++) { mpoly_t a, b; mon_t m; long n, d, N; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mon_init(m); mon_randtest(m, state, n, d); mpoly_init(a, n, ctx); mpoly_init(b, n, ctx); mpoly_randtest(a, state, d, N, ctx); mpoly_mul_mon(b, a, m, ctx); mpoly_mul_mon(a, a, m, ctx); result = (mpoly_equal(a, b, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); mpoly_print(b, ctx); printf("\n"); mon_print(m, n); printf("\n"); abort(); } mpoly_clear(a, ctx); mpoly_clear(b, ctx); mon_clear(m); } /* Check (b*c) + (b*d) = b*(c+d) */ for (i = 0; i < 1000; i++) { mpoly_t a1, a2, c1, c2; mon_t b; long n, d, N; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mon_init(b); mon_randtest(b, state, n, d); mpoly_init(a1, n, ctx); mpoly_init(a2, n, ctx); mpoly_init(c1, n, ctx); mpoly_init(c2, n, ctx); mpoly_randtest(c1, state, d, N, ctx); mpoly_randtest(c2, state, d, N, ctx); mpoly_mul_mon(a1, c1, b, ctx); mpoly_mul_mon(a2, c2, b, ctx); mpoly_add(a1, a1, a2, ctx); mpoly_add(c1, c1, c2, ctx); mpoly_mul_mon(a2, c1, b, ctx); result = (mpoly_equal(a1, a2, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a1, ctx); printf("\n"); mpoly_print(a2, ctx); printf("\n"); mon_print(b, n); printf("\n"); mpoly_print(c1, ctx); printf("\n"); mpoly_print(c2, ctx); printf("\n"); abort(); } mpoly_clear(a1, ctx); mpoly_clear(a2, ctx); mpoly_clear(c1, ctx); mpoly_clear(c2, ctx); mon_clear(b); } _randclear(state); _fmpz_cleanup(); printf("PASS\n"); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; ctx_t ctx; printf("is_zero/ zero... "); fflush(stdout); _randinit(state); ctx_init_mpq(ctx); for (i = 0; i < 1000; i++) { mpoly_t a; long n, d, N; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mpoly_init(a, n, ctx); mpoly_randtest(a, state, d, N, ctx); mpoly_zero(a, ctx); result = (mpoly_is_zero(a, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); abort(); } mpoly_clear(a, ctx); } for (i = 0; i < 1000; i++) { mpoly_t a; long n, d, N; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; mpoly_init(a, n, ctx); mpoly_randtest_not_zero(a, state, d, N, ctx); result = (!mpoly_is_zero(a, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); abort(); } mpoly_clear(a, ctx); } _randclear(state); _fmpz_cleanup(); printf("PASS\n"); return EXIT_SUCCESS; }
int main(void) { int i, result; flint_rand_t state; ctx_t ctx; printf("scalar_div... "); fflush(stdout); _randinit(state); ctx_init_mpq(ctx); /* Check aliasing of a and b */ for (i = 0; i < 1000; i++) { mpoly_t a, b; long n, d, N; char *x; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; x = malloc(ctx->size); ctx->init(ctx, x); mpoly_init(a, n, ctx); mpoly_init(b, n, ctx); mpoly_randtest(b, state, d, N, ctx); ctx->randtest_not_zero(ctx, x, state); mpoly_scalar_div(a, b, x, ctx); mpoly_scalar_div(b, b, x, ctx); result = (mpoly_equal(a, b, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); mpoly_print(b, ctx); printf("\n"); ctx->print(ctx, x); printf("\n"); abort(); } mpoly_clear(a, ctx); mpoly_clear(b, ctx); ctx->clear(ctx, x); free(x); } /* Check that (a + b) / x == a / x + b / x */ for (i = 0; i < 1000; i++) { mpoly_t a, b, c1, c2; long n, d, N; char *x; n = n_randint(state, MON_MAX_VARS) + 1; d = n_randint(state, 50) + 1; N = n_randint(state, 50) + 1; x = malloc(ctx->size); ctx->init(ctx, x); mpoly_init(a, n, ctx); mpoly_init(b, n, ctx); mpoly_init(c1, n, ctx); mpoly_init(c2, n, ctx); mpoly_randtest(a, state, d, N, ctx); mpoly_randtest(b, state, d, N, ctx); ctx->randtest_not_zero(ctx, x, state); mpoly_scalar_div(c1, a, x, ctx); mpoly_scalar_div(c2, b, x, ctx); mpoly_add(c2, c1, c2, ctx); mpoly_add(c1, a, b, ctx); mpoly_scalar_div(c1, c1, x, ctx); result = (mpoly_equal(c1, c2, ctx)); if (!result) { printf("FAIL:\n"); mpoly_print(a, ctx); printf("\n"); mpoly_print(b, ctx); printf("\n"); mpoly_print(c1, ctx); printf("\n"); mpoly_print(c2, ctx); printf("\n"); ctx->print(ctx, x); printf("\n"); abort(); } mpoly_clear(a, ctx); mpoly_clear(b, ctx); mpoly_clear(c1, ctx); mpoly_clear(c2, ctx); ctx->clear(ctx, x); free(x); } _randclear(state); _fmpz_cleanup(); printf("PASS\n"); return EXIT_SUCCESS; }