Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Two clamping changes to hopefully fix the two issues above. As it's a change in the important part
primal_usvp
of the lattice estimator, I would appreciate someone double-checking if I am not breaking stuff with these changes 😄 .Explanation
d = max(d, beta)
:_solve_for_d
computes the optimald
using the ABC-formula (aka solving a quadratic equation), and makes sure this valued
is in betweenn
andm
, but it does not considerbeta
here. By increasingd
, you simply take a "suboptimal"d
but one in which you can actually run BKZ-beta.Explanation
if eta > d
: In some cases it turns outbeta
is low, you have weak BKZ-beat lattice reduction, which does allow you to solve the BDD instance "even with a SVP-call in dimensioneta = d + 1
" (i.e. the two curves in [PKC:PosVir21]_ do not intersect, not even at non-integer points). Ergo, try bigger block sizesbeta
incost_zeta
(the level abovecost
). However, I'm not entirely sure this infinity-cost is handled properly incost_zeta
. The CI doctests suggest it does work.Closes: #87
Closes: #95