function s = suonodaserie(a, b)

N = length(a) + length(b);

versione_veloce = true;

% Variante veloce -- questo codice è completamente equivalente alla
% sommatoria scritta sotto per esteso, ma è molto più veloce in pratica
% perché utilizza la trasformata veloce di Fourier.
if versione_veloce 
    if mod(N, 2) == 0
        y = [ a(1) / 2, (a(2:end-1) - 1i * b) / 2 , a(end) ];
        y = [ y, conj(y(end-1:-1:2)) ];
    else
        y = [ a(1), a(2:end) - 1i * b ] / 2;
        y  =[ y, conj(y(end:-1:2)) ];
    end

    s = real(ifft(y * N));
else
    om = 1 / N;
    t = 0 : N-1;

    s = a(1) * ones(1, N) / 2;

    for j = 2 : length(a)
        s = s + a(j) * cos(2 * pi * om * (j-1) * t);
    end

    for j = 1 : length(b)
        s = s + b(j) * sin(2 * pi * om * j * t);
    end
end

end

