56 std::cout <<
"1" << std::endl;
58 Eigen::VectorXi tempCol =
B.col(k);
59 B.col(k) =
B.col(k - 1);
60 B.col(k - 1) = tempCol;
62 std::cout <<
"2" << std::endl;
65 H.col(k) =
H.col(k - 1);
66 H.col(k - 1) = tempCol;
71 std::cout <<
"3" << std::endl;
73 for (
int j = 0; j < k - 1; j++)
78 std::cout <<
"4" << std::endl;
80 int lambda =
Lambda(k, k - 1);
81 int b = (
d(k - 1) *
d(k + 1) + pow(lambda, 2)) /
d(k);
83 std::cout <<
"5" << std::endl;
84 std::cout <<
"d(k+1)=" <<
d(k + 1) << std::endl;
86 for (
int i = k + 1; i <= k_max; i++)
90 Lambda(i, k - 1) = (b * t + lambda *
Lambda(i, k)) /
d(k + 1);
92 std::cout <<
"6" << std::endl;
95 std::cout <<
"7" << std::endl;
99 LLL::LLL(
const Eigen::Matrix<int, m, n> &B_in) : B(B_in),
100 d(
Eigen::Matrix<int, 1, n + 1>::Ones()),
101 H(
Eigen::Matrix<int, n, n>::Identity()),
102 Lambda(
Eigen::Matrix<int, n, n>::Identity())
106 d(1) =
B.col(0).squaredNorm();
109 for (
int k = 1; k < n;)
111 std::cout <<
"k=" << k << std::endl;
114 std::cout <<
"0" << std::endl;
122 assert(0 &&
"B(i) did not form the basis");
127 if (2 * std::abs(
Lambda(k, k - 1)) >
d(k))
129 std::cout <<
"A" << std::endl;
133 if (4 *
d(k + 1) *
d(k - 1) < 3 * pow(
d(k), 2) - 4 * pow(
Lambda(k, k - 1), 2))
135 std::cout <<
"B" << std::endl;
137 k = std::max(1, k - 1);
138 std::cout <<
"B1" << std::endl;
142 std::cout <<
"C" << std::endl;
143 for (
int l = k - 1; l > 0; l--)
144 if (2 * std::abs(
Lambda(k, l - 1)) >
d(l))
148 std::cout <<
"B=" <<
B << std::endl;
149 std::cout <<
"d=" <<
d.transpose() << std::endl;
152 std::cout <<
B << std::endl;