Macaulay2 Engine
Loading...
Searching...
No Matches

◆ nullSpace() [2/5]

size_t MatrixOps::nullSpace ( const DMatQQFlint & A,
DMatQQFlint & result_nullspace )
inline

Definition at line 1127 of file mat-linalg.hpp.

1128{
1129 fmpz_mat_t m1;
1130 fmpz_mat_t m2;
1131 fmpz_mat_init(m1, A.numRows(), A.numColumns());
1132 fmpz_mat_init(m2, A.numColumns(), A.numColumns());
1133 fmpq_mat_get_fmpz_mat_rowwise(m1, nullptr, A.fmpq_mat());
1134 // fmpz_mat_print_pretty(m1);
1135 size_t nullity = fmpz_mat_nullspace(m2, m1);
1136 // now copy the first 'nullity' columns into result_nullspace
1137 result_nullspace.resize(A.numColumns(), nullity);
1138 for (size_t c = 0; c < nullity; c++)
1139 for (size_t r = 0; r < A.numColumns(); r++)
1140 fmpz_set(fmpq_numref(&result_nullspace.entry(r, c)),
1141 fmpz_mat_entry(m2, r, c));
1142 fmpz_mat_clear(m1);
1143 fmpz_mat_clear(m2);
1144 return nullity;
1145}
void resize(size_t new_nrows, size_t new_ncols)
ElementType & entry(size_t row, size_t column)
const fmpq_mat_t & fmpq_mat() const

References DMat< M2::ARingQQFlint >::entry(), DMat< M2::ARingQQFlint >::fmpq_mat(), DMat< M2::ARingQQFlint >::numColumns(), DMat< M2::ARingQQFlint >::numRows(), and DMat< M2::ARingQQFlint >::resize().