Почему выводит NaN в выводе

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

Сodepen с кодом

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>`;

Ответы (0 шт):