static void _fmpq_mat_sum_of_squares(fmpq_t res, const fmpq_mat_t Q) { slong i, j; fmpq_zero(res); for (i = 0; i < fmpq_mat_nrows(Q); i++) { for (j = 0; j < fmpq_mat_ncols(Q); j++) { fmpq_addmul(res, fmpq_mat_entry(Q, i, j), fmpq_mat_entry(Q, i, j)); } } }
void _fmpq_mat_mul_entrywise(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) { slong i, j; for (i = 0; i < fmpq_mat_nrows(A); i++) { for (j = 0; j < fmpq_mat_ncols(A); j++) { fmpq_mul(fmpq_mat_entry(C, i, j), fmpq_mat_entry(A, i, j), fmpq_mat_entry(B, i, j)); } } }
void _fmpq_mat_randtest_positive_semidefinite(fmpq_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) { slong n; fmpq_mat_t R, RT; if (!fmpq_mat_is_square(mat)) abort(); /* assert */ n = fmpq_mat_nrows(mat); fmpq_mat_init(R, n, n); fmpq_mat_init(RT, n, n); fmpq_mat_randtest(R, state, bits); fmpq_mat_transpose(RT, R); fmpq_mat_mul(mat, R, RT); fmpq_mat_clear(R); fmpq_mat_clear(RT); }
void _fmpq_mat_randtest_for_exp(fmpq_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) { slong i, j; slong l, u; l = n_randint(state, 5); u = n_randint(state, 5); fmpq_mat_zero(mat); for (i = 0; i < fmpq_mat_nrows(mat); i++) { for (j = 0; j < fmpq_mat_ncols(mat); j++) { if ((i == j) || (i < j && u) || (i > j && l)) { fmpq_randtest(fmpq_mat_entry(mat, i, j), state, bits); } } } }
size_t numRows() const { return fmpq_mat_nrows(mArray); }