function p=phorn(x,a)
% PHORN: p=phorn(x,a)
% calcola il valore in x (scalare o matrice quadrata) del polinomio 
% i cui coefficienti sono contenuti nel vettore a, 
% dove a(1) e' il coefficente della potenza piu' elevata,
% utilizzando il metodo di Horner che richiede
% solo n somme ed n prodotti per un polinomio di grado n.

% controllo che a sia un vettore e ne calcolo la dimensione
[nn,mm]=size(a);
if ((nn ~=1) & (mm ~= 1)) error('a deve essere un vettore');end;
n=nn+mm-1;
% se x matrice quadrata m dimensione
[nn,mm]=size(x);
if (nn ~= mm) error('x deve essere scalare o matrice quadrata');end;
e=eye(nn);
p=a(1)*e;
for k=2:n
    p=a(k)*e + p*x;
end
end
