From 3203b73c643241a4c24335b93dee27fdb024add4 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 1 Mar 2022 15:04:40 +0100 Subject: [PATCH] Some debug output. --- libsolutil/LP.cpp | 63 ++++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/libsolutil/LP.cpp b/libsolutil/LP.cpp index 49f7a8ac3..c662476ed 100644 --- a/libsolutil/LP.cpp +++ b/libsolutil/LP.cpp @@ -71,6 +71,46 @@ struct Tableau std::vector data; }; +string toString(rational const& _x) +{ + if (_x.denominator() == 1) + return ::toString(_x.numerator()); + else + return ::toString(_x.numerator()) + "/" + ::toString(_x.denominator()); +} + +string reasonToString(ReasonSet const& _reasons, size_t _minSize) +{ + auto reasonsAsStrings = _reasons | ranges::views::transform([](size_t _r) { return to_string(_r); }); + string result = "[" + joinHumanReadable(reasonsAsStrings) + "]"; + if (result.size() < _minSize) + result.resize(_minSize, ' '); + return result; +} + +/* +string toString(LinearExpression const& _expr) +{ + vector items; + for (auto&& multiplier: _expr) + if (multiplier != 0) + items.emplace_back(::toString(multiplier)); + else + items.emplace_back("_"); + for (string& item: items) + while (item.size() < 3) + item = " " + item; + return joinHumanReadable(items, " "); +} + +string toString(Tableau const& _tableau) +{ + string s = toString(_tableau.objective) + "\n"; + for (auto&& d: _tableau.data) + s += toString(d) + "\n"; + return s; +} +*/ /// Adds slack variables to remove non-equality costraints from a set of constraints /// and returns the data part of the tableau / constraints. @@ -487,29 +527,6 @@ bool SolvingState::Compare::operator()(SolvingState const& _a, SolvingState cons return _a.variableNames < _b.variableNames; } -namespace -{ -string toString(rational const& _x) -{ - if (_x.denominator() == 1) - return ::toString(_x.numerator()); - else - return ::toString(_x.numerator()) + "/" + ::toString(_x.denominator()); -} -} - -namespace -{ -string reasonToString(ReasonSet const& _reasons, size_t _minSize) -{ - auto reasonsAsStrings = _reasons | ranges::views::transform([](size_t _r) { return to_string(_r); }); - string result = "[" + joinHumanReadable(reasonsAsStrings) + "]"; - if (result.size() < _minSize) - result.resize(_minSize, ' '); - return result; -} -} - string SolvingState::toString() const { size_t const reasonLength = 10;