mirror of
https://github.com/Z3Prover/z3
synced 2025-05-02 21:37:02 +00:00
Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work in hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work in hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work in hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work in hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> prepare calculate U in hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> naive algorithm for HNF and m <= n Signed-off-by: Lev Nachmanson <levnach@hotmail.com> naive algorithm for HNF Signed-off-by: Lev Nachmanson <levnach@hotmail.com> introduces reverse matrix into Hermite Normal Form calculation Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on more efficient hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> use smarter templates in lu.h Signed-off-by: Lev Nachmanson <levnach@hotmail.com> the new lu scheme compiles Signed-off-by: Lev Nachmanson <levnach@hotmail.com> simple test passes with the modified lu Signed-off-by: Lev Nachmanson <levnach@hotmail.com> fix the build on windows Signed-off-by: Lev Nachmanson <levnach@hotmail.com> playing with the example from cutting the mix Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf, add extended_gcd_minimal_uv() Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on extended_gcd_minimal_uv Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf, add extended_gcd_minimal_uv() Signed-off-by: Lev Nachmanson <levnach@hotmail.com> more tests and bug fixes in hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf modulo version Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf modulo version, more tests pass Signed-off-by: Lev Nachmanson <levnach@hotmail.com> a rough version of hnf passed the tests Signed-off-by: Lev Nachmanson <levnach@hotmail.com> fix build in release Signed-off-by: Lev Nachmanson <levnach@hotmail.com> fixes in determinant calculations Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> work on hnf Signed-off-by: Lev Nachmanson <levnach@hotmail.com> create a stub for hnf_cuts Signed-off-by: Lev Nachmanson <levnach@hotmail.com> create a stub for hnf_cuts Signed-off-by: Lev Nachmanson <levnach@hotmail.com> create a stub for hnf_cuts Signed-off-by: Lev Nachmanson <levnach@hotmail.com> general_matrix etc. Signed-off-by: Lev Nachmanson <levnach@hotmail.com> general_matrix etc. Signed-off-by: Lev Nachmanson <levnach@hotmail.com> rename cut_solver to chase_cut_solver Signed-off-by: Lev Nachmanson <levnach@hotmail.com> rename cut_solver to chase_cut_solver Signed-off-by: Lev Nachmanson <levnach@hotmail.com> hnf_cutter Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
/*++
|
|
Copyright (c) 2017 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
<name>
|
|
|
|
Abstract:
|
|
|
|
<abstract>
|
|
|
|
Author:
|
|
|
|
Lev Nachmanson (levnach)
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
#ifdef Z3DEBUG
|
|
#pragma once
|
|
#include "util/lp/numeric_pair.h"
|
|
#include "util/vector.h"
|
|
#include <string>
|
|
#include "util/lp/lp_settings.h"
|
|
namespace lp {
|
|
// used for debugging purposes only
|
|
template <typename T, typename X>
|
|
class matrix {
|
|
public:
|
|
virtual T get_elem (unsigned i, unsigned j) const = 0;
|
|
virtual unsigned row_count() const = 0;
|
|
virtual unsigned column_count() const = 0;
|
|
virtual void set_number_of_rows(unsigned m) = 0;
|
|
virtual void set_number_of_columns(unsigned n) = 0;
|
|
|
|
virtual ~matrix() {}
|
|
|
|
bool is_equal(const matrix<T, X>& other);
|
|
bool operator == (matrix<T, X> const & other) {
|
|
return is_equal(other);
|
|
}
|
|
T operator()(unsigned i, unsigned j) const { return get_elem(i, j); }
|
|
};
|
|
|
|
template <typename T, typename X>
|
|
void apply_to_vector(matrix<T, X> & m, T * w);
|
|
|
|
|
|
|
|
unsigned get_width_of_column(unsigned j, vector<vector<std::string>> & A);
|
|
void print_matrix_with_widths(vector<vector<std::string>> & A, vector<unsigned> & ws, std::ostream & out, unsigned blanks = 0);
|
|
void print_string_matrix(vector<vector<std::string>> & A, std::ostream &, unsigned blanks_in_front = 0);
|
|
|
|
template <typename T, typename X>
|
|
void print_matrix(matrix<T, X> const * m, std::ostream & out);
|
|
|
|
|
|
template <typename T>
|
|
void print_matrix(const vector<vector<T>> & A, std::ostream & out, unsigned blanks_in_front = 0) {
|
|
vector<vector<std::string>> s(A.size());
|
|
for (unsigned i = 0; i < A.size(); i++) {
|
|
for (const auto & v : A[i]) {
|
|
s[i].push_back(T_to_string(v));
|
|
}
|
|
}
|
|
|
|
print_string_matrix(s, out, blanks_in_front);
|
|
}
|
|
|
|
|
|
}
|
|
#endif
|