#ifndef EXACTCONSTRAINTSATISFACTION_HH #define EXACTCONSTRAINTSATISFACTION_HH #include #include #include #include #include class COMISODLLEXPORT ExactConstraintSatisfaction { public: ExactConstraintSatisfaction(); //-----------------------helpfull variables------------------------------- int number_pivots = 0; //number of rows with a pivot; int largest_exponent = 0; double delta = 0; //-----------------------helpfull methods--------------------------------- int gcd(const int a, const int b); int gcdRow(const Eigen::SparseMatrix::RowXpr row, const int b); void swapRows(Eigen::SparseMatrix* A, int row1, int row2); void printMatrix(Eigen::SparseMatrix A); void printVector(Eigen::VectorXi b); int largestExponent(Eigen::VectorXd x); double F_delta(double x); int lcm(const int a, const int b); int lcm_list(const std::list D); int indexPivot(Eigen::SparseMatrix::RowXpr row); //--------------------matrix transformation------------------------------- void IREF_Gaussian(Eigen::SparseMatrix* A, Eigen::VectorXi* b); void IRREF_Jordan(Eigen::SparseMatrix* A, Eigen::VectorXi* b); //-------------------Evaluation-------------------------------------------- void evaluation(Eigen::SparseMatrix* A, Eigen::VectorXi* b, Eigen::VectorXd* x); double makeDiv(const std::list& D, double x); double safeDot(const std::list>& S); }; #endif // EXACTCONSTRAINTSATISFACTION_HH