int main(void) { int i; FLINT_TEST_INIT(state); flint_printf("is_square...."); fflush(stdout); for (i = 0; i < 1000 * flint_test_multiplier(); i++) { fmpz_mat_t A; slong rows = n_randint(state, 10); slong cols = n_randint(state, 10); fmpz_mat_init(A, rows, cols); if (fmpz_mat_is_square(A) != (rows == cols)) { flint_printf("FAIL!\n"); abort(); } fmpz_mat_clear(A); } FLINT_TEST_CLEANUP(state); flint_printf("PASS\n"); return 0; }
int _is_superficially_ok_entrywise(const fmpz_mat_t A) { slong n, i, j, d; if (!fmpz_mat_is_square(A)) return 0; n = fmpz_mat_nrows(A); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { d = fmpz_get_si(fmpz_mat_entry(A, i, j)); if (d < -2 || d > n-1) return 0; if (i == j && d == -1) return 0; if (i != j && d == 0) return 0; } } return 1; }
void _fmpz_mat_permute(fmpz_mat_t B, const fmpz_mat_t A, const slong *perm) { slong n, i, j; if (!fmpz_mat_is_square(A)) abort(); /* assert */ if (A == B) abort(); /* assert */ n = fmpz_mat_nrows(A); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { fmpz_set( fmpz_mat_entry(B, perm[i], perm[j]), fmpz_mat_entry(A, i, j)); } } }