63 std::cout <<
"1" << std::endl;
65 Eigen::VectorXi tempCol =
B.col(k);
66 B.col(k) =
B.col(k - 1);
67 B.col(k - 1) = tempCol;
69 std::cout <<
"2" << std::endl;
72 H.col(k) =
H.col(k - 1);
73 H.col(k - 1) = tempCol;
78 std::cout <<
"3" << std::endl;
80 for (
int j = 0; j < k - 1; j++)
85 std::cout <<
"4" << std::endl;
87 int lambda =
Lambda(k, k - 1);
88 int b = (
d(k - 1) *
d(k + 1) + pow(lambda, 2)) /
d(k);
90 std::cout <<
"5" << std::endl;
91 std::cout <<
"d(k+1)=" <<
d(k + 1) << std::endl;
93 for (
int i = k + 1; i <= k_max; i++)
97 Lambda(i, k - 1) = (b * t + lambda *
Lambda(i, k)) /
d(k + 1);
99 std::cout <<
"6" << std::endl;
102 std::cout <<
"7" << std::endl;
106 LLL::LLL(
const Eigen::Matrix<int, m, n> &B_in) : B(B_in),
107 d(
Eigen::Matrix<int, 1, n + 1>::Ones()),
108 H(
Eigen::Matrix<int, n, n>::Identity()),
109 Lambda(
Eigen::Matrix<int, n, n>::Identity())
113 d(1) =
B.col(0).squaredNorm();
116 for (
int k = 1; k < n;)
118 std::cout <<
"k=" << k << std::endl;
121 std::cout <<
"0" << std::endl;
129 assert(0 &&
"B(i) did not form the basis");
134 if (2 * std::abs(
Lambda(k, k - 1)) >
d(k))
136 std::cout <<
"A" << std::endl;
140 if (4 *
d(k + 1) *
d(k - 1) < 3 * pow(
d(k), 2) - 4 * pow(
Lambda(k, k - 1), 2))
142 std::cout <<
"B" << std::endl;
144 k = std::max(1, k - 1);
145 std::cout <<
"B1" << std::endl;
149 std::cout <<
"C" << std::endl;
150 for (
int l = k - 1; l > 0; l--)
151 if (2 * std::abs(
Lambda(k, l - 1)) >
d(l))
155 std::cout <<
"B=" <<
B << std::endl;
156 std::cout <<
"d=" <<
d.transpose() << std::endl;
159 std::cout <<
B << std::endl;