function y = fir_freq(H,x)

% alloca il vettore di uscita
Nx = numel(x);
N = numel(H);
y = zeros(1,N+Nx-1);

% somma i contributi y_k(n)
for k = 0:N-1
    if H(1+ k)
        
        W = exp(1i*2*pi*k/N);
        %W = ceil(real(W)*127)/127+1i*ceil(imag(W)*127)/127;
        y_temp = 0; % y_k(n-1)
        for n = 0:N+Nx-2
            if n - N >= 0
                x_n_minus_N = x(1+ n-N);
            else
                x_n_minus_N = 0;
            end
            if n < Nx
                x_n = x(1+ n);
            else
                x_n = 0;
            end
            y_temp = W * y_temp + H(1+k)/N * (x_n - x_n_minus_N);
            y(1+ n) = y(1+ n) + y_temp;
        end
        
    end
end
