Почему выводит NaN в выводе
Не могу понять почему выводит NaN.

const PI = 3.14;
const out = document.querySelector('.out');
const DFT = (array, result) => {
let A = 0;
for(let i = 0; i < array.length; i++) {
for(let j = 0; j < array.length; j++) {
count += 5;
A = Math.cos((-2 * PI * i * j) / array.length) * array[j];
result[i] += A;
}
result[i] /= array.length;
}
}
const InverseDFT = (array, size, result) => {
let A = 0;
for(let i = 0; i < size; i++) {
for(let j = 0; j < size; j++) {
count += 5;
A = Math.cos((2 * PI * i * j) / size);
result[i] += A * array[j];
}
}
out.innerHTML += `Свертка с помощью дискретного преобразования Фурье: <br>`;
out.innerHTML += `<br>DFTConvolution: `;
for(let i = 0; i < size - 2; i++) {
out.innerHTML += `${result[i]} `;
}
}
const ConvolutinDFT = (a, b, result) => {
let size = a.length;
const res = [];
const a_DFT = [];
const b_DFT = [];
DFT(a, a_DFT);
DFT(b, b_DFT);
for(let i = 0; i < size; i++) {
res[i] = a_DFT[i] * b_DFT[i];
res[i] *= size;
}
InverseDFT(res, size, result);
}
const OrdinaryConvolution = (a, b, result) => {
let sum = 0;
let sum2 = 0;
for(let i = 0; i < a.length; i++) {
for(let j = 0; j < b.length; j++) {
sum2 = i + j;
result[i + j] += a[i] * b[j];
count += 3;
if(sum2 == sum) {
out.innerHTML += `${a[i]}[${i}] ${b[j]}[${j}] `;
} else {
out.innerHTML += `res = ${result[i]} <br> ${a[i]}[${i}] ${b[j]}[${j}]`;
}
count++;
}
}
out.innerHTML += `res = ${result[sum2]}`;
out.innerHTML += `<br><br> OrdinaryConvolution: `;
for(let i = 0; i < result.length; i++) {
out.innerHTML += `${result[i]} `;
}
}
let sizeA = +prompt('Размер массива А:');
let sizeB = +prompt('Размер массива B:');
const a = [];
const b = [];
const c = [];
for(let i = 0; i < sizeA; i++) {
a[i] = +prompt('Элемент массива А');
}
for(let i = 0; i < sizeB; i++) {
b[i] = +prompt('Элемент массива B');
}
out.innerHTML += `<br>Массив А: `;
for(let i of a) out.innerHTML += `${i} `;
out.innerHTML += `<br>Массив B: `;
for(let i of b) out.innerHTML += `${i} `;
out.innerHTML += `<br><br>Свертка с помощью обычного алгоритма: <br>`;
let count = 0;
OrdinaryConvolution(a, b, c);
out.innerHTML += `<br>Количество операций: ${count} <br><br>`;
let sz = Math.max(sizeA, sizeB);
const arrA_DFT = [];
const arrB_DFT = [];
const result_DFT = [];
for(let i = 0; i < sz; i++) {
arrA_DFT.push(0);
arrB_DFT.push(0);
}
for(let i = 0; i < sizeA; i++) {
arrA_DFT[i] = a[i];
}
for(let i = 0; i < sizeB; i++) {
arrB_DFT[i] = b[i];
}
count = 0;
ConvolutinDFT(arrA_DFT, arrB_DFT, result_DFT);
out.innerHTML += `<br>Количество операций: ${count} <br><br>`;