[PPL-devel] [GIT] ppl/ppl(sparse_matrices): Linear_System: don't call contained objects ' OK(), in OK(); also remove the OK() argument.
Marco Poletti
poletti.marco at gmail.com
Sat Feb 26 09:03:44 CET 2011
Module: ppl/ppl
Branch: sparse_matrices
Commit: 89080fe8226dd92ada7fbbc70db2d9bd19594b60
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=89080fe8226dd92ada7fbbc70db2d9bd19594b60
Author: Marco Poletti <poletti.marco at gmail.com>
Date: Fri Feb 25 21:45:13 2011 +0100
Linear_System: don't call contained objects' OK(), in OK(); also remove the OK() argument.
---
src/Linear_System.defs.hh | 12 +--------
src/Linear_System.templates.hh | 53 +++++++++++++--------------------------
2 files changed, 19 insertions(+), 46 deletions(-)
diff --git a/src/Linear_System.defs.hh b/src/Linear_System.defs.hh
index 6878611..5b015ef 100644
--- a/src/Linear_System.defs.hh
+++ b/src/Linear_System.defs.hh
@@ -427,17 +427,7 @@ public:
memory_size_type external_memory_in_bytes() const;
//! Checks if all the invariants are satisfied.
- /*!
- \param check_strong_normalized
- <CODE>true</CODE> if and only if the strong normalization of all
- the rows in the system has to be checked.
-
- By default, the strong normalization check is performed.
- This check may be turned off to avoid useless repeated checking;
- e.g., when re-checking a well-formed Linear_System after the permutation
- or deletion of some of its rows.
- */
- bool OK(bool check_strong_normalized = true) const;
+ bool OK() const;
private:
//! Adds a copy of the given row to the system.
diff --git a/src/Linear_System.templates.hh b/src/Linear_System.templates.hh
index eb5a2e4..0f75e0e 100644
--- a/src/Linear_System.templates.hh
+++ b/src/Linear_System.templates.hh
@@ -192,7 +192,7 @@ Linear_System<Row>::ascii_load(std::istream& s) {
set_sorted(sortedness);
// Check invariants.
- PPL_ASSERT(OK(true));
+ PPL_ASSERT(OK());
return true;
}
@@ -245,9 +245,7 @@ Linear_System<Row>::insert_recycled(Row& r) {
// The added row was not a pending row.
PPL_ASSERT(num_pending_rows() == 0);
- // Do not check for strong normalization,
- // because no modification of rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -301,9 +299,7 @@ Linear_System<Row>::insert_pending_recycled(Row& r) {
// The added row was a pending row.
PPL_ASSERT(num_pending_rows() > 0);
- // Do not check for strong normalization,
- // because no modification of rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -327,9 +323,7 @@ Linear_System<Row>::insert_pending_recycled(Linear_System& y) {
y.clear();
- // Do not check for strong normalization,
- // because no modification of rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -368,9 +362,7 @@ Linear_System<Row>::insert_recycled(Linear_System& y) {
// There are no pending_rows.
unset_pending_rows();
- // Do not check for strong normalization,
- // because no modification of rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -381,9 +373,7 @@ Linear_System<Row>::sort_rows() {
sort_rows(0, first_pending_row());
set_index_first_pending_row(num_rows() - num_pending);
sorted = true;
- // Do not check for strong normalization,
- // because no modification of rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -473,9 +463,7 @@ Linear_System<Row>::add_recycled_pending_row(Row& r) {
r.resize(num_columns());
std::swap(rows.back(), r);
- // Do not check for strong normalization, because no modification of
- // rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -594,7 +582,7 @@ Linear_System<Row>::gauss(const dimension_type n_lines_or_equalities) {
// having no pending rows and exactly `n_lines_or_equalities'
// lines or equalities, all of which occur before the rays or points
// or inequalities.
- PPL_ASSERT(x.OK(true));
+ PPL_ASSERT(x.OK());
PPL_ASSERT(x.num_pending_rows() == 0);
PPL_ASSERT(n_lines_or_equalities == x.num_lines_or_equalities());
#ifndef NDEBUG
@@ -634,7 +622,7 @@ Linear_System<Row>::gauss(const dimension_type n_lines_or_equalities) {
if (changed)
x.set_sorted(false);
// A well-formed system is returned.
- PPL_ASSERT(x.OK(true));
+ PPL_ASSERT(x.OK());
return rank;
}
@@ -647,7 +635,7 @@ Linear_System<Row>
// having no pending rows and exactly `n_lines_or_equalities'
// lines or equalities, all of which occur before the first ray
// or point or inequality.
- PPL_ASSERT(x.OK(true));
+ PPL_ASSERT(x.OK());
PPL_ASSERT(x.num_columns() >= 1);
PPL_ASSERT(x.num_pending_rows() == 0);
PPL_ASSERT(n_lines_or_equalities <= x.num_lines_or_equalities());
@@ -735,7 +723,7 @@ Linear_System<Row>
x.set_sorted(still_sorted);
// A well-formed system is returned.
- PPL_ASSERT(x.OK(true));
+ PPL_ASSERT(x.OK());
}
template <typename Row>
@@ -744,7 +732,7 @@ Linear_System<Row>::simplify() {
Linear_System& x = *this;
// This method is only applied to a well-formed system
// having no pending rows.
- PPL_ASSERT(x.OK(true));
+ PPL_ASSERT(x.OK());
PPL_ASSERT(x.num_pending_rows() == 0);
// Partially sort the linear system so that all lines/equalities come first.
@@ -780,7 +768,7 @@ Linear_System<Row>::simplify() {
// Apply back-substitution to the system of rays/points/inequalities.
x.back_substitute(n_lines_or_equalities);
// A well-formed system is returned.
- PPL_ASSERT(x.OK(true));
+ PPL_ASSERT(x.OK());
}
template <typename Row>
@@ -817,7 +805,7 @@ Linear_System<Row>::add_universe_rows_and_columns(const dimension_type n) {
set_sorted(compare(rows[n-1], rows[n]) <= 0);
// A well-formed system has to be returned.
- PPL_ASSERT(OK(true));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -881,9 +869,7 @@ Linear_System<Row>::sort_pending_and_remove_duplicates() {
rows.resize(num_rows);
}
set_sorted(true);
- // Do not check for strong normalization,
- // because no modification of rows has occurred.
- PPL_ASSERT(OK(false));
+ PPL_ASSERT(OK());
}
template <typename Row>
@@ -898,7 +884,7 @@ Linear_System<Row>::check_sorted() const {
template <typename Row>
bool
-Linear_System<Row>::OK(const bool /* check_strong_normalized */) const {
+Linear_System<Row>::OK() const {
#ifndef NDEBUG
using std::endl;
using std::cerr;
@@ -960,12 +946,10 @@ Linear_System<Row>::OK(const bool /* check_strong_normalized */) const {
return false;
}
+ // Check for topology mismatches.
const Linear_System& x = *this;
const dimension_type n_rows = num_rows();
- for (dimension_type i = 0; i < n_rows; ++i) {
- if (!x[i].OK(num_columns()))
- return false;
- // Checking for topology mismatches.
+ for (dimension_type i = 0; i < n_rows; ++i)
if (x.topology() != x[i].topology()) {
#ifndef NDEBUG
cerr << "Topology mismatch between the system "
@@ -974,7 +958,6 @@ Linear_System<Row>::OK(const bool /* check_strong_normalized */) const {
#endif
return false;
}
- }
// TODO: Re-enable this. It was disabled because a Linear_System can be a
// Grid_Generator_System, which in turn can contain non-normalized rows
More information about the PPL-devel
mailing list