14#ifndef OR_TOOLS_SAT_DIOPHANTINE_H_
15#define OR_TOOLS_SAT_DIOPHANTINE_H_
20#include "absl/numeric/int128.h"
21#include "absl/types/span.h"
37 int elements_to_consider, std::vector<absl::int128>& v);
128 absl::Span<const int64_t> var_lbs,
129 absl::Span<const int64_t> var_ubs);
DiophantineSolution SolveDiophantine(absl::Span< const int64_t > coeffs, int64_t rhs, absl::Span< const int64_t > var_lbs, absl::Span< const int64_t > var_ubs)
void ReduceModuloBasis(absl::Span< const std::vector< absl::int128 > > basis, const int elements_to_consider, std::vector< absl::int128 > &v)
std::vector< int > GreedyFastDecreasingGcd(const absl::Span< const int64_t > coeffs)
bool no_reformulation_needed
One of the coefficients is equal to the GCD of all coefficients.
std::vector< absl::int128 > kernel_vars_lbs
std::vector< int > index_permutation
std::vector< std::vector< absl::int128 > > kernel_basis
std::vector< absl::int128 > special_solution
bool has_solutions
false if the equation is proven infeasible.
std::vector< absl::int128 > kernel_vars_ubs