[mathicgb] 344/393: Pruned unused or less important stuff from the MonomialTableArray interface.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Fri Apr 3 15:59:32 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch upstream
in repository mathicgb.

commit 3654c0feca3750845e2e2db10bc309d90712ad24
Author: Bjarke Hammersholt Roune <bjarkehr.code at gmail.com>
Date:   Wed Aug 28 17:36:13 2013 +0200

    Pruned unused or less important stuff from the MonomialTableArray interface.
---
 src/cli/SigGBAction.cpp          |   2 +-
 src/mathicgb/MTArray.cpp         | 102 ++++++++-------------------------------
 src/mathicgb/MTArray.hpp         |  62 ++----------------------
 src/mathicgb/MonTableDivList.hpp |   9 ++--
 src/mathicgb/MonTableKDTree.hpp  |   3 +-
 src/mathicgb/SigSPairs.cpp       |   5 +-
 src/mathicgb/SignatureGB.cpp     |  30 +++---------
 src/mathicgb/io-util.cpp         |   2 +-
 src/test/poly-test.cpp           |  30 ++++++------
 9 files changed, 53 insertions(+), 192 deletions(-)

diff --git a/src/cli/SigGBAction.cpp b/src/cli/SigGBAction.cpp
index dbe5291..216a402 100755
--- a/src/cli/SigGBAction.cpp
+++ b/src/cli/SigGBAction.cpp
@@ -96,7 +96,7 @@ void SigGBAction::performAction() {
       {
         std::ofstream syzygyOut((mParams.inputFileNameStem(0) + ".syz").c_str());
         syzygyOut << "-- syz: ----\n";
-        alg.getSyzTable()->display(syzygyOut, 1);
+        alg.getSyzTable()->display(syzygyOut);
         syzygyOut << std::endl;
       }
     }
diff --git a/src/mathicgb/MTArray.cpp b/src/mathicgb/MTArray.cpp
index 1cbc88b..5cf68b2 100755
--- a/src/mathicgb/MTArray.cpp
+++ b/src/mathicgb/MTArray.cpp
@@ -13,7 +13,6 @@ class MTArrayT : public MonomialTableArray
 {
   typedef MT T;
   typedef typename MT::Configuration Conf;
-  typedef MonomialTableArray::V V; // value type
 public:
   MTArrayT(size_t components, const Conf &conf):
     MonomialTableArray(conf.getPolyRing()), conf_(conf) {
@@ -30,87 +29,45 @@ public:
   Conf& getConfiguration() { return conf_; }
   const Conf &getConfiguration() const { return conf_; }
 
-  bool insert(const_monomial m, V val);
+  bool insert(const_monomial m);
   // Only inserts if minimal, in this case "true" is returned.
   // and the object takes ownership of 'm'.
 
   void addComponent() {tables.push_back(new T(conf_));}
 
-  bool member(const_monomial m, V &result);
-
-  void getStats(MonomialTableArray::Stats &stats) const;
+  bool member(const_monomial m);
 
   std::string description() const;
 
-  void displayStats(std::ostream &o) const;
-
-  void display(std::ostream &o, int level) const;
+  void display(std::ostream &o) const;
 
   void getMonomials(std::vector<const_monomial>& monomials) const;
   
-  virtual void printFrobbyM2Format
-    (std::ostream& out, size_t component) const;
-
-  void dump(int level=0) const;
-
   size_t n_elems() const;
 
   size_t getMemoryUse() const;
 private:
   Conf conf_; // Used to create new instances of T.
   std::vector<T *> tables;
-
-  mutable MonomialTableArray::Stats stats_;
 };
 
 template <typename MT>
-bool MTArrayT<MT>::insert(const_monomial m, V val)
+bool MTArrayT<MT>::insert(const_monomial m)
 {
-  stats_.n_calls_insert++;
   size_t x = R->monomialGetComponent(m);
   MATHICGB_ASSERT(x < tables.size());
   MATHICGB_ASSERT(tables[x] != 0);
-  bool result = tables[x]->insert(m, val);
-  if (result) stats_.n_actual_inserts++;
+  bool result = tables[x]->insert(m);
   return result;
 }
 
 template <typename MT>
-bool MTArrayT<MT>::member(const_monomial m, V &result)
+bool MTArrayT<MT>::member(const_monomial m)
 {
-  stats_.n_calls_member++;
   size_t x = R->monomialGetComponent(m);
   MATHICGB_ASSERT(x < tables.size());
   MATHICGB_ASSERT(tables[x] != 0);
-  return tables[x]->member(m, result);
-}
-
-template <typename MT>
-void MTArrayT<MT>::getStats(Stats &stats) const
-{
-  stats = stats_;
-
-  // compute denseness
-  std::vector<const_monomial> monomials;
-  unsigned long long support = 0;
-  unsigned long long exponentCount = 0;
-  for (size_t i=0; i<tables.size(); i++) {
-    T *p = tables[i];
-    MATHICGB_ASSERT(p != 0);
-    monomials.clear();
-    p->getMonomials(monomials);
-    typedef std::vector<const_monomial>::const_iterator iter;
-    for (iter it = monomials.begin(); it != monomials.end(); ++it) {
-      support += R->monomialSizeOfSupport(*it);
-      exponentCount += R->getNumVars();
-    }
-  }
-  stats.denseness = static_cast<double>(support) / exponentCount;
-}
-
-template <typename MT>
-void MTArrayT<MT>::displayStats(std::ostream & /* o */) const
-{
+  return tables[x]->member(m);
 }
 
 template <typename MT>
@@ -120,8 +77,18 @@ void MTArrayT<MT>::getMonomials(std::vector<const_monomial>& monomials) const {
 }
 
 template <typename MT>
-void MTArrayT<MT>::display(std::ostream &o, int level) const
+void MTArrayT<MT>::display(std::ostream &o) const
 {
+  class MonomialCompare {
+  public:
+    MonomialCompare(const PolyRing& ring): mRing(ring) {}
+    bool operator()(const_monomial a, const_monomial b) {
+      return mRing.monomialLT(a, b);
+    }
+  private:
+    const PolyRing& mRing;
+  };
+
   std::vector<const_monomial> monomials;
   for (size_t i=0; i<tables.size(); i++)
     {
@@ -133,8 +100,7 @@ void MTArrayT<MT>::display(std::ostream &o, int level) const
       o << "  " << i << ": ";
       monomials.clear();
       p->getMonomials(monomials);
-      std::sort(monomials.begin(), monomials.end(),
-        MonomialTableArray::MonomialCompare(*R));
+      std::sort(monomials.begin(), monomials.end(), MonomialCompare(*R));
       typedef std::vector<const_monomial>::const_iterator iter;
       for (iter it = monomials.begin(); it != monomials.end(); ++it)
         {
@@ -146,36 +112,6 @@ void MTArrayT<MT>::display(std::ostream &o, int level) const
 }
 
 template <typename MT>
-void MTArrayT<MT>::printFrobbyM2Format
-  (std::ostream& out, size_t component) const
-{
-  MATHICGB_ASSERT(component < tables.size());
-  T* p = tables[component];
-  MATHICGB_ASSERT(p != 0);
-  std::vector<const_monomial> monomials;
-  p->getMonomials(monomials);
-  std::sort(monomials.begin(), monomials.end(),
-    MonomialTableArray::MonomialCompare(*R));
-
-  out << "I = monomialIdeal(\n";
-  typedef std::vector<const_monomial>::const_iterator iter;
-  for (iter it = monomials.begin(); it != monomials.end(); ++it) {
-    if (it != monomials.begin())
-      out << ",\n";
-    R->printMonomialFrobbyM2Format(out, *it);
-  }
-  out << "\n);\n";
-}
-
-template <typename MT>
-void MTArrayT<MT>::dump(int level) const
-{
-  // display on stderr the table.
-  displayStats(std::cerr);
-  if (level > 0) display(std::cerr, level-1);
-}
-
-template <typename MT>
 size_t MTArrayT<MT>::n_elems() const
 {
   size_t result = 0;
diff --git a/src/mathicgb/MTArray.hpp b/src/mathicgb/MTArray.hpp
index 28d84a1..2931aa3 100755
--- a/src/mathicgb/MTArray.hpp
+++ b/src/mathicgb/MTArray.hpp
@@ -13,71 +13,26 @@ MATHICGB_NAMESPACE_BEGIN
 class MonomialTableArray
 {
 public:
-  typedef size_t V; // value type
-
-  static MonomialTableArray *makeMonomialTableArray(int type, // 0=naive, 1=DivList, 2=KDTree
-                                                    const PolyRing *R,
-                                                    // for each type, only some of the following are relevant
-                                                    bool use_cache,
-                                                    bool remin);
-
-  MonomialTableArray(const PolyRing *R0) : R(R0) {}
   virtual ~MonomialTableArray() {};
 
-  virtual bool insert(const_monomial m, V val) = 0;
   // returns true if the monomial actually needs to be inserted.
   // If the monomial is inserted, the caller agrees to keep that monomial
   // active until it is removed from the table.
-  //TODO: At some point: deal with removals too
+  virtual bool insert(const_monomial m) = 0;
 
   // Adds a new component, increasing the number of monomial tables
   // in the array by one. Its index is one more than the previous
   // maximum index.
   virtual void addComponent() = 0;
 
-  bool member(const_monomial m) {
-    size_t dummy;
-    return member(m, dummy);
-  }
-  virtual bool member(const_monomial m, V &result) = 0;
-
-  struct Stats {
-    size_t n_actual_inserts;
-    size_t n_calls_member;
-    size_t n_calls_insert;
-    size_t n_compares;
-
-    // ratio of non-zero exponents. 0.75 means a
-    // quarter of all exponents are zero.
-    double denseness;
-
-    Stats() : n_actual_inserts(0),
-              n_calls_member(0),
-              n_calls_insert(0),
-              n_compares(0),
-              denseness(0.0) {}
-  };
+  virtual bool member(const_monomial m) = 0;
 
-  virtual void getStats(Stats &stats) const = 0;
-
-  virtual void display(std::ostream &o, int level) const = 0;
-
-  virtual void printFrobbyM2Format
-    (std::ostream& out, size_t component) const = 0;
-
-  virtual void displayStats(std::ostream &o) const = 0;
+  virtual void display(std::ostream& o) const = 0;
 
   virtual void getMonomials(std::vector<const_monomial>& monomials) const = 0;
 
   virtual size_t n_elems() const = 0;
 
-  void dump(int level=0) const
-  {
-    // display on stderr the table.
-    displayStats(std::cerr);
-    if (level > 0) display(std::cerr, level-1);
-  }
-
   virtual std::string description() const = 0;
 
   virtual size_t getMemoryUse() const = 0;
@@ -88,16 +43,7 @@ public:
     make(const PolyRing *R, int typ, size_t components, bool allowRemovals);
 
 protected:
-  class MonomialCompare {
-  public:
-    MonomialCompare(const PolyRing& ring): mRing(ring) {}
-    bool operator()(const_monomial a, const_monomial b) {
-      return mRing.monomialLT(a, b);
-    }
-  private:
-    const PolyRing& mRing;
-  };
-
+  MonomialTableArray(const PolyRing *R0) : R(R0) {}
   const PolyRing *R;
 };
 
diff --git a/src/mathicgb/MonTableDivList.hpp b/src/mathicgb/MonTableDivList.hpp
index d8e4220..d159074 100755
--- a/src/mathicgb/MonTableDivList.hpp
+++ b/src/mathicgb/MonTableDivList.hpp
@@ -168,15 +168,14 @@ public:
 
   const PolyRing * getPolyRing() const { return getConfiguration().getPolyRing(); }
 
-  bool member(const_monomial t, ValueType & val) const {
+  bool member(const_monomial t) const {
       const Entry* i = findDivisor(t);
       if (i == 0) return false;
-      val = 0;
       return true;
   }
   bool insert(const_monomial t, ValueType /* val */) { return insert(t); } // Only insert if not there
 
-  void display(std::ostream &o, int level) const;
+  void display(std::ostream &o) const;
 
   void dump(int level) const;
 
@@ -243,7 +242,7 @@ inline std::string MonTableDivList<ULL, UDM>::getName() const {
 }
 
 template <bool UDL, bool UDM>
-void MonTableDivList<UDL,UDM>::display(std::ostream &o, int /* level */) const
+void MonTableDivList<UDL,UDM>::display(std::ostream &o) const
 {
   const_iterator e = _finder.end();
 
@@ -259,7 +258,7 @@ template <bool UDL, bool UDM>
 void MonTableDivList<UDL,UDM>::dump(int level) const
 {
   displayStats(std::cerr);
-  if (level > 0) display(std::cerr, level-1);
+  if (level > 0) display(std::cerr);
 }
 
 template <bool UDL, bool UDM>
diff --git a/src/mathicgb/MonTableKDTree.hpp b/src/mathicgb/MonTableKDTree.hpp
index 32da9da..f8b2889 100755
--- a/src/mathicgb/MonTableKDTree.hpp
+++ b/src/mathicgb/MonTableKDTree.hpp
@@ -156,11 +156,10 @@ public:
 
   const PolyRing * getPolyRing() const { return getConfiguration().getPolyRing(); }
 
-  inline bool member(const_monomial t, ValueType & val) const {
+  inline bool member(const_monomial t) const {
     const Entry* entry = findDivisor(t);
     if (entry == 0)
       return false;
-    val = 0;
     return true;
   }
   bool insert(const_monomial t, ValueType /* val */) { return insert(t); } // Only insert if not there
diff --git a/src/mathicgb/SigSPairs.cpp b/src/mathicgb/SigSPairs.cpp
index 696075a..f30c0d3 100755
--- a/src/mathicgb/SigSPairs.cpp
+++ b/src/mathicgb/SigSPairs.cpp
@@ -228,8 +228,7 @@ void SigSPairs::makePreSPairs(size_t newGen)
       R->monomialFindSignature(oldLead, newLead, oldSig, pairSig);
     }
 
-    size_t result_ignored;
-    if (Hsyz->member(pairSig, result_ignored)) {
+    if (Hsyz->member(pairSig)) {
       ++mStats.syzygyModuleHits;
 #ifdef DEBUG
       // Check if actually already elim. by low/high base divisor.
@@ -253,7 +252,7 @@ void SigSPairs::makePreSPairs(size_t newGen)
         R->monomialMult(newSig, oldLead, hsyz);
       else
         R->monomialMult(oldSig, newLead, hsyz);
-      if (Hsyz->insert(hsyz, 0))
+      if (Hsyz->insert(hsyz))
         hsyz = R->allocMonomial();
       if (R->monomialRelativelyPrime(newLead, oldLead))
         {
diff --git a/src/mathicgb/SignatureGB.cpp b/src/mathicgb/SignatureGB.cpp
index cb7be16..a8bad68 100755
--- a/src/mathicgb/SignatureGB.cpp
+++ b/src/mathicgb/SignatureGB.cpp
@@ -74,10 +74,6 @@ SignatureGB::SignatureGB(
   // Populate SP
   for (size_t i = 0; i < basis.size(); i++)
     SP->newPairs(i);
-
-  if (tracingLevel >= 2) {
-    Hsyz->dump();
-  }
 }
 
 void SignatureGB::computeGrobnerBasis()
@@ -98,8 +94,7 @@ void SignatureGB::computeGrobnerBasis()
         if (sig.isNull())
           break;
         ++sigs;
-        size_t dummy;
-        if (Hsyz->member(sig, dummy))
+        if (Hsyz->member(sig))
           ++syzygySigs;
         else
           GB->minimalLeadInSig(sig);
@@ -137,7 +132,7 @@ void SignatureGB::computeGrobnerBasis()
       auto sig = R->allocMonomial();
       R->monomialCopy(v[i], sig);
       mProcessor->postprocess(sig);
-      Hsyz2->insert(sig, 0);
+      Hsyz2->insert(sig);
     }
   }
 }
@@ -171,7 +166,7 @@ bool SignatureGB::processSPair
   if (f->isZero()) { // reduction to zero
     if (tracingLevel >= 7)
       std::cerr << "zero reduction" << std::endl;
-    Hsyz->insert(sig, 0);
+    Hsyz->insert(sig);
     SP->newSyzygy(sig);
     SP->setKnownSyzygies(mSpairTmp);
     delete f;
@@ -215,8 +210,7 @@ bool SignatureGB::step()
     std::cerr << std::endl;
   }
 
-  size_t result_ignored = 0;
-  if (Hsyz->member(sig, result_ignored)) {
+  if (Hsyz->member(sig)) {
     ++stats_SignatureCriterionLate;
     SP->setKnownSyzygies(mSpairTmp);
     if (tracingLevel >= 3)
@@ -236,7 +230,7 @@ bool SignatureGB::step()
     {
       ++stats_koszulEliminated;
       // This signature is of a syzygy that is not in Hsyz, so add it
-      Hsyz->insert(sig, 0);
+      Hsyz->insert(sig);
       SP->newSyzygy(sig);
       SP->setKnownSyzygies(mSpairTmp);
       return true;
@@ -252,9 +246,8 @@ bool SignatureGB::step()
           const_monomial b = GB->getLeadMonomial(it->second);
           if (R->monomialRelativelyPrime(a, b))
             {
-              int not_used = 0;
               ++stats_relativelyPrimeEliminated;
-              Hsyz->insert(sig, not_used);
+              Hsyz->insert(sig);
               SP->newSyzygy(sig);
               SP->setKnownSyzygies(mSpairTmp);
               return true;
@@ -282,8 +275,7 @@ bool SignatureGB::step()
     const_monomial smallerLead = GB->getLeadMonomial(p.second);   
     monomial koszul = R->allocMonomial();
     R->monomialMult(greaterSig, smallerLead, koszul);
-    size_t dummy;
-    if (Hsyz->member(koszul, dummy))
+    if (Hsyz->member(koszul))
       R->freeMonomial(koszul);
     else
       mKoszuls.push(koszul);
@@ -314,14 +306,6 @@ void SignatureGB::displayStats(std::ostream &o) const
   o << " S-pair queue type: " << SP->name() << '\n';
   o << " total compute time:  " << stats_nsecs << " -- seconds" << '\n';
 
-  MonomialTableArray::Stats hsyz_stats;
-  Hsyz->getStats(hsyz_stats);
-  o << " syz-n-compares: " << hsyz_stats.n_compares << '\n';
-  o << " syz-n-member-calls: " << hsyz_stats.n_calls_member << '\n';
-  o << " syz-n-inserts: " << (hsyz_stats.n_calls_insert) << '\n';
-  o << " syz-n-actual-inserts: " << (hsyz_stats.n_actual_inserts) << '\n';
-  o << " syz sig denseness: " << hsyz_stats.denseness << '\n';
-
   displayMemoryUse(o);
   displaySomeStats(o);
   o << std::flush;
diff --git a/src/mathicgb/io-util.cpp b/src/mathicgb/io-util.cpp
index a5dbdcd..ced638e 100755
--- a/src/mathicgb/io-util.cpp
+++ b/src/mathicgb/io-util.cpp
@@ -107,7 +107,7 @@ std::string toString(SigPolyBasis *I, int)
 std::string toString(MonomialTableArray* H)
 {
   std::ostringstream o;
-  H->display(o, 1);
+  H->display(o);
   return o.str();
 }
 
diff --git a/src/test/poly-test.cpp b/src/test/poly-test.cpp
index 2f1b1fb..2c43e7a 100755
--- a/src/test/poly-test.cpp
+++ b/src/test/poly-test.cpp
@@ -505,7 +505,6 @@ TEST(Coeff, addone) {
 
 TEST(MTArray,DivList1) {
   // We create a table here
-  size_t not_used = 0;
   std::unique_ptr<PolyRing> R(ringFromString("32003 6 1\n1 1 1 1 1 1"));
   auto M = MonomialTableArray::make(R.get(), 1, 6, false);
   std::string mons[2] = {
@@ -515,22 +514,21 @@ TEST(MTArray,DivList1) {
   for (int i=0; i<2; i++)
     {
       monomial m = monomialParseFromString(R.get(), mons[i]);
-      M->insert(m,0);
+      M->insert(m);
     }
   //  M.display(std::cout);
 
   // Now we test membership
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc4d<1>"),not_used));
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d2<1>"),not_used));
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc<1>"),not_used));
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d<1>"),not_used));
-  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "a2d<2>"),not_used));
-  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "ad<1>"),not_used));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc4d<1>")));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d2<1>")));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc<1>")));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d<1>")));
+  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "a2d<2>")));
+  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "ad<1>")));
 }
 
 TEST(MTArray,KDTree1) {
   // We create a table here
-  size_t not_used = 0;
   std::unique_ptr<PolyRing> R(ringFromString("32003 6 1\n1 1 1 1 1 1"));
   std::unique_ptr<MonomialTableArray> M(MonomialTableArray::make(R.get(), 2, 6, false));
   std::string mons[2] = {
@@ -540,17 +538,17 @@ TEST(MTArray,KDTree1) {
   for (int i=0; i<2; i++)
     {
       monomial m = monomialParseFromString(R.get(), mons[i]);
-      M->insert(m,0);
+      M->insert(m);
     }
   //  M.display(std::cout);
 
   // Now we test membership
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc4d<1>"),not_used));
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d2<1>"),not_used));
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc<1>"),not_used));
-  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d<1>"),not_used));
-  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "a2d<2>"),not_used));
-  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "ad<1>"),not_used));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc4d<1>")));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d2<1>")));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "abc<1>")));
+  EXPECT_TRUE(M->member(monomialParseFromString(R.get(), "a2d<1>")));
+  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "a2d<2>")));
+  EXPECT_FALSE(M->member(monomialParseFromString(R.get(), "ad<1>")));
 }
 
 //#warning "remove this code"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/mathicgb.git



More information about the debian-science-commits mailing list