#include "test_helpers.h"
#include "perm.h"
TEST_FUNCTION_START(perm_compose, state)
{
int i;
for (i = 0; i < 10000; i++)
{
slong n, *a, *b, *binv, *c;
n = n_randint(state, 100);
a = _perm_init(n);
b = _perm_init(n);
binv = _perm_init(n);
c = _perm_init(n);
_perm_randtest(a, n, state);
_perm_randtest(b, n, state);
_perm_inv(binv, b, n);
_perm_compose(c, b, a, n);
_perm_compose(c, binv, c, n);
if (!_perm_equal(a, c, n))
TEST_FUNCTION_FAIL(
"n = %wd\n"
"a = %{slong*}\n\n"
"b = %{slong*}\n\n"
"binv = %{slong*}\n\n"
"c = %{slong*}\n\n",
n,
a, n,
b, n,
binv, n,
c, n);
_perm_clear(a);
_perm_clear(b);
_perm_clear(binv);
_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(c, b, a, n);
_perm_compose(b, b, a, n);
if (!_perm_equal(b, c, n))
TEST_FUNCTION_FAIL(
"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);
}
TEST_FUNCTION_END(state);
}