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

◆ rank()

int SchreyerFrame::rank ( int slanted_degree,
int lev )

Definition at line 705 of file res-f4-m2-interface.cpp.

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
714 if (M2_gbTrace >= 2)
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 {
724 rkSparse = rankUsingSparseMatrix(D);
725 return rkSparse;
726 }
727 else
728 {
729 rkDense = rankUsingDenseMatrix(D);
730 return rkDense;
731 }
732}
static const int nelements
int rankUsingSparseMatrix(Gen &D)
int rankUsingDenseMatrix(Gen &D, bool transposed=true)
int M2_gbTrace
Definition m2-types.cpp:52

References M2_gbTrace, nelements, DegreeZeroMapGenerator::numColumns(), DegreeZeroMapGenerator::numNonzero(), DegreeZeroMapGenerator::numRows(), rankUsingDenseMatrix(), and rankUsingSparseMatrix().

Referenced by computeRank(), and start_computation().