[mathicgb] 82/393: Minor code improvements.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Fri Apr 3 15:58:35 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 e3304d336453b2587e201b562ec82ca429cb626c
Author: Bjarke Hammersholt Roune <bjarkehr.code at gmail.com>
Date:   Fri Oct 26 12:17:25 2012 +0200

    Minor code improvements.
---
 src/mathicgb/F4MatrixBuilder.cpp   |  6 ++----
 src/mathicgb/Poly.cpp              |  2 +-
 src/mathicgb/QuadMatrix.hpp        | 17 +++++++++++------
 src/mathicgb/QuadMatrixBuilder.cpp |  5 ++++-
 src/mathicgb/QuadMatrixBuilder.hpp |  4 ++--
 src/mathicgb/SignatureGB.cpp       |  5 +----
 src/mathicgb/SparseMatrix.cpp      |  1 +
 src/mathicgb/SparseMatrix.hpp      |  4 +++-
 src/test/QuadMatrixBuilder.cpp     |  3 +--
 9 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/src/mathicgb/F4MatrixBuilder.cpp b/src/mathicgb/F4MatrixBuilder.cpp
index fed4dfa..116a9ee 100755
--- a/src/mathicgb/F4MatrixBuilder.cpp
+++ b/src/mathicgb/F4MatrixBuilder.cpp
@@ -214,8 +214,7 @@ void F4MatrixBuilder::buildMatrixAndClear(QuadMatrix& matrix) {
   if (mThreadCount > 1) {
     for (auto it = threadData.begin(); it != threadData.end(); ++it) {
       MATHICGB_ASSERT(&mBuilder != it->builder);
-      QuadMatrix qm;
-      it->builder->buildMatrixAndClear(qm);
+      QuadMatrix qm(it->builder->buildMatrixAndClear());
       mBuilder.takeRowsFrom(std::move(qm));
       delete it->builder;
       delete[] it->tmp.unsafeGetRepresentation();
@@ -224,9 +223,8 @@ void F4MatrixBuilder::buildMatrixAndClear(QuadMatrix& matrix) {
   threadData.clear();
 #endif
 
-
   mBuilder.sortColumnsLeftRightParallel(mBasis.order(), mThreadCount);
-  mBuilder.buildMatrixAndClear(matrix);
+  matrix = mBuilder.buildMatrixAndClear();
 }
 
 F4MatrixBuilder::LeftRightColIndex
diff --git a/src/mathicgb/Poly.cpp b/src/mathicgb/Poly.cpp
index 9ab4221..13a39ae 100755
--- a/src/mathicgb/Poly.cpp
+++ b/src/mathicgb/Poly.cpp
@@ -336,7 +336,7 @@ void Poly::display(FILE* file, bool printComponent) const
       bool printOne = true;
       if (coef != 1) {
         printOne = false;
-        fprintf(file, "%i", coef);
+        fprintf(file, "%li", (long)coef);
       }
       R->monomialDisplay(file, it.getMonomial(), printComponent, printOne);
       firstTerm = false;
diff --git a/src/mathicgb/QuadMatrix.hpp b/src/mathicgb/QuadMatrix.hpp
index 12dceff..599dd8a 100755
--- a/src/mathicgb/QuadMatrix.hpp
+++ b/src/mathicgb/QuadMatrix.hpp
@@ -19,14 +19,19 @@ class QuadMatrix {
 public:
   QuadMatrix() {}
   QuadMatrix(QuadMatrix&& matrix):
-    topLeft(matrix.topLeft),
-    topRight(matrix.topRight),
-    bottomLeft(matrix.bottomLeft),
-    bottomRight(matrix.bottomRight),
-    leftColumnMonomials(matrix.leftColumnMonomials),
-    rightColumnMonomials(matrix.rightColumnMonomials),
+    topLeft(std::move(matrix.topLeft)),
+    topRight(std::move(matrix.topRight)),
+    bottomLeft(std::move(matrix.bottomLeft)),
+    bottomRight(std::move(matrix.bottomRight)),
+    leftColumnMonomials(std::move(matrix.leftColumnMonomials)),
+    rightColumnMonomials(std::move(matrix.rightColumnMonomials)),
     ring(matrix.ring)
   {}
+  QuadMatrix& operator=(QuadMatrix&& matrix) {
+    this->~QuadMatrix();
+    new (this) QuadMatrix(std::move(matrix));
+    return *this;
+  }
 
   SparseMatrix topLeft; 
   SparseMatrix topRight;
diff --git a/src/mathicgb/QuadMatrixBuilder.cpp b/src/mathicgb/QuadMatrixBuilder.cpp
index 73033f5..045f0f9 100755
--- a/src/mathicgb/QuadMatrixBuilder.cpp
+++ b/src/mathicgb/QuadMatrixBuilder.cpp
@@ -295,7 +295,9 @@ std::string QuadMatrixBuilder::toString() const {
   return out.str();
 }
 
-void QuadMatrixBuilder::buildMatrixAndClear(QuadMatrix& out) {
+QuadMatrix QuadMatrixBuilder::buildMatrixAndClear() {
+  QuadMatrix out;
+
   mTopLeft.swap(out.topLeft);
   mTopRight.swap(out.topRight);
   mBottomLeft.swap(out.bottomLeft);
@@ -314,4 +316,5 @@ void QuadMatrixBuilder::buildMatrixAndClear(QuadMatrix& out) {
   mMonomialToCol.clear();
 
   MATHICGB_ASSERT(out.debugAssertValid());
+  return std::move(out);
 }
diff --git a/src/mathicgb/QuadMatrixBuilder.hpp b/src/mathicgb/QuadMatrixBuilder.hpp
index 8992d23..7db3091 100755
--- a/src/mathicgb/QuadMatrixBuilder.hpp
+++ b/src/mathicgb/QuadMatrixBuilder.hpp
@@ -245,9 +245,9 @@ class QuadMatrixBuilder {
     return topRight().colCount();
   }
 
-  /// Puts the built matrix into out and sets the builder to a state
+  /// Returns the built matrix and sets the builder to a state
   /// with no columns and no rows.
-  void buildMatrixAndClear(QuadMatrix& out);
+  QuadMatrix buildMatrixAndClear();
 
 private:
   typedef std::vector<monomial> MonomialsType;
diff --git a/src/mathicgb/SignatureGB.cpp b/src/mathicgb/SignatureGB.cpp
index c8a78cc..ad87aa2 100755
--- a/src/mathicgb/SignatureGB.cpp
+++ b/src/mathicgb/SignatureGB.cpp
@@ -20,10 +20,7 @@ void SignatureGB::computeGrobnerBasis()
   R->resetCoefficientStats();
   std::ostream& out = std::cout;
 
-  while (true) {
-    if (!step())
-      break;
-
+  while (step()) {
     if (mBreakAfter > 0 && GB->size() > mBreakAfter) {
       break;
       const size_t pairs = SP->pairCount();
diff --git a/src/mathicgb/SparseMatrix.cpp b/src/mathicgb/SparseMatrix.cpp
index fa9d83a..5377ff6 100755
--- a/src/mathicgb/SparseMatrix.cpp
+++ b/src/mathicgb/SparseMatrix.cpp
@@ -45,6 +45,7 @@ void SparseMatrix::rowToPolynomial(
     if (it.scalar() != 0)
       poly.appendTerm(it.scalar(), colMonomials[it.index()]);
   }
+  MATHICGB_ASSERT(poly.termsAreInDescendingOrder());
 }
 
 void SparseMatrix::sortRowsByIncreasingPivots() {
diff --git a/src/mathicgb/SparseMatrix.hpp b/src/mathicgb/SparseMatrix.hpp
index 426b937..d45b095 100755
--- a/src/mathicgb/SparseMatrix.hpp
+++ b/src/mathicgb/SparseMatrix.hpp
@@ -63,7 +63,9 @@ public:
     return *this;
   }
 
-  SparseMatrix(const SparseMatrix& matrix) {*this = matrix;}
+  SparseMatrix(const SparseMatrix& matrix) {
+    *this = matrix;
+  }
 
   ~SparseMatrix() {clear();}
 
diff --git a/src/test/QuadMatrixBuilder.cpp b/src/test/QuadMatrixBuilder.cpp
index 7ce69c7..04d31c4 100755
--- a/src/test/QuadMatrixBuilder.cpp
+++ b/src/test/QuadMatrixBuilder.cpp
@@ -228,8 +228,7 @@ TEST(QuadMatrixBuilder, BuildAndClear) {
   b.appendEntryBottomRight(2, 4);
   b.rowDoneBottomLeftAndRight();
 
-  QuadMatrix qm;
-  b.buildMatrixAndClear(qm);
+  QuadMatrix qm(b.buildMatrixAndClear());
 
   // test that the matrix was really cleared
   ASSERT_EQ(ring.get(), &b.ring()); // still same ring though

-- 
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