Skip to content

Commit

Permalink
Add aliased generator composition tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Jake-Moss committed Oct 1, 2024
1 parent 978827e commit 73f751f
Showing 1 changed file with 31 additions and 6 deletions.
37 changes: 31 additions & 6 deletions src/fmpz_mod_mpoly/test/t-compose_fmpz_mod_mpoly.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,22 @@ TEST_FUNCTION_START(fmpz_mod_mpoly_compose, state)

{
fmpz_t p;
fmpz_mod_mpoly_t A, A1, A2, B;
slong nvarsAC = 2, nvarsB = 3;
fmpz_mod_mpoly_t A, A1, A2, B, B2;
fmpz_mod_mpoly_struct * Cp[3];
fmpz_mod_mpoly_struct C[3];
fmpz_mod_mpoly_ctx_t ctxAC, ctxB;
slong * c;

fmpz_init_set_ui(p, 13);
fmpz_mod_mpoly_ctx_init(ctxB, 3, ORD_LEX, p);
fmpz_mod_mpoly_ctx_init(ctxAC, 2, ORD_LEX, p);
fmpz_mod_mpoly_ctx_init(ctxB, nvarsB, ORD_LEX, p);
fmpz_mod_mpoly_ctx_init(ctxAC, nvarsAC, ORD_LEX, p);

fmpz_mod_mpoly_init(B, ctxB);
fmpz_mod_mpoly_init(A, ctxAC);
fmpz_mod_mpoly_init(A1, ctxAC);
fmpz_mod_mpoly_init(A2, ctxAC);
for (i = 0; i < 3; i++)
for (i = 0; i < nvarsB; i++)
{
Cp[i] = C + i;
fmpz_mod_mpoly_init(C + i, ctxAC);
Expand Down Expand Up @@ -62,13 +64,36 @@ TEST_FUNCTION_START(fmpz_mod_mpoly_compose, state)
if (!fmpz_mod_mpoly_compose_fmpz_mod_mpoly(A, B, Cp, ctxB, ctxAC) ||
!fmpz_mod_mpoly_compose_fmpz_mod_mpoly_horner(A1, B, Cp, ctxB, ctxAC) ||
!fmpz_mod_mpoly_compose_fmpz_mod_mpoly_geobucket(A2, B, Cp, ctxB, ctxAC))
TEST_FUNCTION_FAIL("Check example 3\n");
TEST_FUNCTION_FAIL("Check example nvarsB\n");

/* Aliased generator composition */
c = (slong *) flint_malloc(nvarsB*sizeof(slong));
fmpz_mod_mpoly_init(B2, ctxB);
fmpz_mod_mpoly_set(B2, B, ctxB);
for (i = 0; i < nvarsB; i++)
c[i] = i;

fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(B2, B2, c, ctxB, ctxB);
if (!fmpz_mod_mpoly_equal(B, B2, ctxB))
TEST_FUNCTION_FAIL("Check composition with aliased generators\n");

/* Reverse the generators, twice */
for (i = 0; i < nvarsB; i++)
c[i] = nvarsB - i - 1;

fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(B2, B2, c, ctxB, ctxB);
if (fmpz_mod_mpoly_equal(B, B2, ctxB))
TEST_FUNCTION_FAIL("Check composition with reversed aliased generators\n");

fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(B2, B2, c, ctxB, ctxB);
if (!fmpz_mod_mpoly_equal(B, B2, ctxB))
TEST_FUNCTION_FAIL("Check composition with un-reversed aliased generators\n");

fmpz_mod_mpoly_clear(B, ctxB);
fmpz_mod_mpoly_clear(A, ctxAC);
fmpz_mod_mpoly_clear(A1, ctxAC);
fmpz_mod_mpoly_clear(A2, ctxAC);
for (i = 0; i < 3; i++)
for (i = 0; i < nvarsB; i++)
fmpz_mod_mpoly_clear(C + i, ctxAC);

fmpz_mod_mpoly_ctx_clear(ctxB);
Expand Down

0 comments on commit 73f751f

Please sign in to comment.