#include "test_helpers.h"
#include "fq_nmod_mpoly.h"
#if 0#endif
TEST_FUNCTION_START(fq_nmod_mpoly_univar_resultant, state)
{
{
fq_nmod_mpoly_ctx_t ctx;
fq_nmod_mpoly_t t, s;
fq_nmod_mpoly_univar_t f;
const char * vars[] = {"a", "b", "c", "d"};
fq_nmod_mpoly_ctx_init_deg(ctx, 4, ORD_DEGLEX, 3, 4);
fq_nmod_mpoly_init(t, ctx);
fq_nmod_mpoly_init(s, ctx);
fq_nmod_mpoly_univar_init(f, ctx);
fq_nmod_mpoly_univar_zero(f, ctx);
fq_nmod_mpoly_set_str_pretty(t, "a", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 1, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "b", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 0, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "1", vars, ctx);
fq_nmod_mpoly_univar_discriminant(s, f, ctx);
if (!fq_nmod_mpoly_equal(s, t, ctx))
{
flint_printf("FAIL: check linear discriminant\n");
fflush(stdout);
flint_abort();
}
fq_nmod_mpoly_univar_zero(f, ctx);
fq_nmod_mpoly_set_str_pretty(t, "a", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 2, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "b", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 1, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "c", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 0, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "b^2-4*a*c", vars, ctx);
fq_nmod_mpoly_univar_discriminant(s, f, ctx);
if (!fq_nmod_mpoly_equal(s, t, ctx))
{
flint_printf("FAIL: check quadratic discriminant\n");
fflush(stdout);
flint_abort();
}
fq_nmod_mpoly_univar_zero(f, ctx);
fq_nmod_mpoly_set_str_pretty(t, "a", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 3, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "b", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 2, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "c", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 1, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "d", vars, ctx);
fq_nmod_mpoly_univar_set_coeff_ui(f, 0, t, ctx);
fq_nmod_mpoly_set_str_pretty(t, "b^2*c^2-4*a*c^3-4*b^3*d-27*a^2*d^2+18*a*b*c*d", vars, ctx);
fq_nmod_mpoly_univar_discriminant(s, f, ctx);
if (!fq_nmod_mpoly_equal(s, t, ctx))
{
flint_printf("FAIL: check cubic discriminant\n");
fflush(stdout);
flint_abort();
}
fq_nmod_mpoly_clear(t, ctx);
fq_nmod_mpoly_clear(s, ctx);
fq_nmod_mpoly_univar_clear(f, ctx);
fq_nmod_mpoly_ctx_clear(ctx);
}
#if 0#endif
TEST_FUNCTION_END(state);
}