C/C++

Помогите понять формулу из книги Д. Кнута

Здравствуйте! Мне нужно протестировать ЛКГ с помощью критерия сериальной корреляции из Д. Кнута (2 том, 95 стр). И чтобы лучше понять я решила сделать упражнение 18(б), но у меня никак не получается правильный числитель можете помочь где ошибка?
1 фото - сама формула
2 фото - мое решение для числителя
3 фото - правильный ответ
(подстановка для n =3)
#include <iostream>
#include <numeric>
#include <vector>
#include <limits>
using namespace std;
double fn(const vector<double>& seq) {
const auto n = seq.size();
const auto sqsm = pow(accumulate(seq.begin(), seq.end(), 0.0), 2);
auto reduce_op = [](double sm, double x) { return sm + x * x; };
const auto smqs = n * accumulate(seq.begin(), seq.end(), 0.0, reduce_op);
auto smml = 0.0;
for (auto i = 0U, j = 1U; j < n; ++i, ++j) smml += seq[i] * seq[j];
smml += seq[n - 1] * seq[0];
const auto ml = n * smml;
try {
const auto num = ml - sqsm;
const auto den = smqs - sqsm;
if (den == 0.0) throw exception("Exception: division by zero!");
return num / den;
} catch (exception& ex) {
cerr << ex.what() << '\n';
}
return numeric_limits<double>::quiet_NaN();
}
int main() {
vector<double> seq2{ 1.2, 3.6 };
cout << "seq2:";
for (auto u : seq2) cout << ' ' << u;
puts("");
const auto c2 = fn(seq2);
cout << "c2: " << c2 << '\n';

vector<double> seq3{ 1.2, 3.6, 2.8 };
cout << "seq3:";
for (auto u : seq3) cout << ' ' << u;
puts("");
const auto c3 = fn(seq3);
cout << "c3: " << c3 << '\n';

vector<double> seq4{ 1.2, 1.2, 1.2, 1.2 };
cout << "seq4:";
for (auto u : seq4) cout << ' ' << u;
puts("");
const auto c4 = fn(seq4);
cout << "c4: " << c4 << '\n';

system("pause > nul");
}
Чулпан Загидуллин
Чулпан Загидуллин
70 194
Лучший ответ