Macaulay2 Engine
Loading...
Searching...
No Matches

◆ Lovasz()

bool LLLoperations::Lovasz ( MutableMatrix * lambda,
int k,
ring_elem alphaTop,
ring_elem alphaBottom )
staticprivate

Definition at line 72 of file LLL.cpp.

76{
77 // Test:alphaBottom * (D#(k-2) * D#k + lambda#(k,k-1)^2) <
78 // alphaTop * D#(k-1)^2
79 ring_elem D2, D1, D, L;
80 mpz_t a, b;
81 lambda->get_entry(k - 1, k - 1, D1);
82 lambda->get_entry(k, k, D);
83 bool Lnotzero = lambda->get_entry(k - 1, k, L);
84 if (k == 1)
85 mpz_init_set(a, D.get_mpz());
86 else
87 {
88 mpz_init(a);
89 lambda->get_entry(k - 2, k - 2, D2);
90 mpz_mul(a, D2.get_mpz(), D.get_mpz());
91 }
92 mpz_init(b);
93 if (Lnotzero)
94 {
95 mpz_mul(b, L.get_mpz(), L.get_mpz());
96 mpz_add(a, a, b);
97 }
98 mpz_mul(a, a, alphaBottom.get_mpz()); // This is the LHS.
99
100 mpz_mul(b, D1.get_mpz(), D1.get_mpz());
101 mpz_mul(b, alphaTop.get_mpz(), b); // RHS
102 int cmp = mpz_cmp(a, b);
103 mpz_clear(a);
104 mpz_clear(b);
105 return (cmp < 0);
106}
virtual bool get_entry(size_t r, size_t c, ring_elem &result) const =0
mpz_srcptr get_mpz() const
Definition ringelem.hpp:127

References MutableMatrix::get_entry(), and ring_elem::get_mpz().

Referenced by doLLL().