641{
642 unsigned int charac =
644 M2::ARingZZpFFPACK R(charac);
645 DMat<M2::ARingZZpFFPACK> M(R, 0, 0);
646 if (!transposed)
648 else
650 auto a = DMatLinAlg<M2::ARingZZpFFPACK>(M);
651
652
653
654 auto timeA =
timer();
655 int rk = static_cast<int>(a.rank());
656 auto timeB =
timer();
657 double nsecs =
seconds(timeB - timeA);
658
660
662 {
663 if (M.numRows() > 0 and M.numColumns() > 0)
664 std::cout << " dense rank = " << rk
665 << " time = " << nsecs << " sec"
666 << std::endl;
667 }
668
669 return rk;
670}
long characteristic() const
const VectorArithmetic & vectorArithmetic() const
const Ring * ring() const
void setDMatFromSparseMatrixGeneratorTransposed(Gen &G, DMat< RingType > &M)
void setDMatFromSparseMatrixGenerator(Gen &G, DMat< RingType > &M)
std::chrono::steady_clock::time_point timer()
double seconds(DurationType time_diff)