Open Breush opened 5 years ago
Might be because of applyM (in apply.h) which handle numbers below 53 bits differently.
applyM
#include <linbox/solutions/solve.h> using namespace LinBox; int main(void) { using Ring = Givaro::ZRing<Integer>; using Matrix = DenseMatrix<Ring>; using Vector = DenseVector<Ring>; Ring ZZ; Matrix A(ZZ, 1, 2); Vector x(ZZ, A.coldim()); Vector b(ZZ, A.rowdim()); Ring::Element d; A.setEntry(0, 0, "-4354606737974399"); A.setEntry(0, 1, "1444080914074811"); ZZ.assign(b[0], "-7270283604704528652531814423094"); // Calling Dixon Method::Dixon method; method.singularSolutionType = SingularSolutionType::Random; solve(x, d, A, b, method); std::cout << "[ " << A.getEntry(0, 0) << " " << A.getEntry(0, 1) << " ] x = [ " << b[0] << " ]"; std::cout << " => xNum/xDen = [ " << x[0] << " " << x[1] << " ] /" << d << std::endl; if ((A.getEntry(0, 0) * x[0]) + (A.getEntry(0, 1) * x[1]) != b[0] * d) { std::cerr << "PROBLEM! Ax != b" << std::endl; } return 0; }
test-solve-full -m 1 -n 1 -b 1 -B 30 exhibits the same problem
test-solve-full -m 1 -n 1 -b 1 -B 30
Might be because of
applyM
(in apply.h) which handle numbers below 53 bits differently.