107 LLL::LLL(
const Eigen::Matrix<int, m, n> &B_in) : B(B_in),
108 d(
Eigen::Matrix<int, 1, n + 1>::Ones()),
109 H(
Eigen::Matrix<int, n, n>::Identity()),
110 Lambda(
Eigen::Matrix<int, n, n>::Identity())
114 d(1) = B.col(0).squaredNorm();
117 for (
int k = 1;
k < n;)
119 std::cout <<
"k=" <<
k << std::endl;
122 std::cout <<
"0" << std::endl;
125 lll_gram_schmidt_int(
k);
130 assert(0 &&
"B(i) did not form the basis");
135 if (2 * std::abs(Lambda(
k,
k - 1)) > d(
k))
137 std::cout <<
"A" << std::endl;
138 lll_size_reduction_int(
k,
k - 1);
141 if (4 * d(
k + 1) * d(
k - 1) < 3 * pow(d(
k), 2) - 4 * pow(Lambda(
k,
k - 1), 2))
143 std::cout <<
"B" << std::endl;
144 lll_interchange_int(
k, k_max);
145 k = std::max(1,
k - 1);
146 std::cout <<
"B1" << std::endl;
150 std::cout <<
"C" << std::endl;
151 for (
int l =
k - 1; l > 0; l--)
152 if (2 * std::abs(Lambda(
k, l - 1)) > d(l))
153 lll_size_reduction_int(
k, l - 1);
156 std::cout <<
"B=" << B << std::endl;
157 std::cout <<
"d=" << d.transpose() << std::endl;
160 std::cout << B << std::endl;