IntegerLattice.closest_vector() not finding a vector already in the lattice
I am hitting some weird behaviour in IntegerLattice.closest_vector(). In some cases the answer seems off, even when the input vector is already in the lattice. Here is an example:
from sage.modules.free_module_integer import IntegerLattice
v = vector(ZZ, [1,1,-1])
L = IntegerLattice([v])
print (v in L)
print (L.closest_vector(v))
This outputs
True
(1,1,-1)
as expected. However,
from sage.modules.free_module_integer import IntegerLattice
v = vector(ZZ, [1,1,1,-1])
L = IntegerLattice([v])
print (v in L)
print (L.closest_vector(v))
Now outputs
True
(0,0,0,0)
which does not make any sense to me (I would expect the answer to be $v$ again). Am I doing something wrong or is this a bug?
Please report the issue at https://github.com/sagemath/sage/issues
Meanwhile, you can try to use
fpylll
instead:Thanks, reported as https://github.com/sagemath/sage/issu....
fpylll
is working fine.