[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