706{
707 DegreeZeroMapGenerator D(*this, slanted_degree, lev);
708 long nnonzero = D.numNonzero();
709 long nelements =
static_cast<long>(D.numRows()) *
static_cast<long>(D.numColumns());
710 double nnonzeroD = static_cast<double>(nnonzero);
711 double nelementsD =
static_cast<double>(
nelements);
712 double frac_nonzero = (
nelements > 0 ? nnonzeroD/nelementsD : 1.0);
713
715 {
716 std::cout << " rank(" << lev << "," << slanted_degree << ") size = "
717 << D.numRows() << " x " << D.numColumns()
718 << " frac non-zero= " << frac_nonzero << std::endl << std::flush;
719 }
720 int rkSparse = -1;
721 int rkDense = -1;
722 if (frac_nonzero <= .007)
723 {
725 return rkSparse;
726 }
727 else
728 {
730 return rkDense;
731 }
732}
static const int nelements
int rankUsingSparseMatrix(Gen &D)
int rankUsingDenseMatrix(Gen &D, bool transposed=true)