#include "test_helpers.h"
#include "perm.h"
TEST_FUNCTION_START(perm_compose_inv1, state)
{
int i;
for (i = 0; i < 10000; i++)
{
slong n, *a, *ainv, *b, *c, *d;
n = n_randint(state, 100);
a = _perm_init(n);
ainv = _perm_init(n);
b = _perm_init(n);
c = _perm_init(n);
d = _perm_init(n);
_perm_randtest(a, n, state);
_perm_randtest(b, n, state);
_perm_inv(ainv, a, n);
_perm_compose_inv1(c, a, b, n);
_perm_compose(d, ainv, b, n);
if (!_perm_equal(c, d, n))
TEST_FUNCTION_FAIL("FAIL (1):\n"
"n = %wd\n"
"a = %{slong*}\n\n"
"ainv = %{slong*}\n\n"
"b = %{slong*}\n\n"
"c = %{slong*}\n\n"
"d = %{slong*}\n\n",
n,
a, n,
ainv, n,
b, n,
c, n,
d, n);
_perm_clear(a);
_perm_clear(ainv);
_perm_clear(b);
_perm_clear(c);
_perm_clear(d);
}
for (i = 0; i < 10000; i++)
{
slong n, *a, *b, *c;
n = n_randint(state, 100);
a = _perm_init(n);
b = _perm_init(n);
c = _perm_init(n);
_perm_randtest(a, n, state);
_perm_randtest(b, n, state);
_perm_compose_inv1(c, a, b, n);
_perm_compose_inv1(a, a, b, n);
if (!_perm_equal(c, a, n))
TEST_FUNCTION_FAIL("FAIL (2):\n"
"n = %wd\n"
"a = %{slong*}\n\n"
"b = %{slong*}\n\n"
"c = %{slong*}\n\n",
n,
a, n,
b, n,
c, n);
_perm_clear(a);
_perm_clear(b);
_perm_clear(c);
}
for (i = 0; i < 10000; i++)
{
slong n, *a, *b, *c;
n = n_randint(state, 100);
a = _perm_init(n);
b = _perm_init(n);
c = _perm_init(n);
_perm_randtest(a, n, state);
_perm_randtest(b, n, state);
_perm_compose_inv1(c, a, b, n);
_perm_compose_inv1(b, a, b, n);
if (!_perm_equal(c, b, n))
TEST_FUNCTION_FAIL("FAIL (3):\n"
"n = %wd\n"
"a = %{slong*}\n\n"
"b = %{slong*}\n\n"
"c = %{slong*}\n\n",
n,
a, n,
b, n,
c, n);
_perm_clear(a);
_perm_clear(b);
_perm_clear(c);
}
for (i = 0; i < 10000; i++)
{
slong n, *a, *c;
n = n_randint(state, 100);
a = _perm_init(n);
c = _perm_init(n);
_perm_randtest(a, n, state);
_perm_compose_inv1(c, a, a, n);
_perm_compose_inv1(a, a, a, n);
if (!_perm_equal(c, a, n))
TEST_FUNCTION_FAIL("FAIL (4):\n"
"n = %wd\n"
"a = %{slong*}\n\n"
"c = %{slong*}\n\n",
n,
a, n,
c, n);
_perm_clear(a);
_perm_clear(c);
}
TEST_FUNCTION_END(state);
}