function Z=eval_horner(T,C,D)
% 
%
% eval_horner : évaluation vectorielle d'un polynôme à partir de sa forme de Newton.
%
% *********************************************************
%
%  Z=eval_horner(T,C,D)
%     L'évaluation est faite par l'algorithme de Hörner donné en cours,
%     Elle permet de calculer :
%         p_n(T)=d_0+d_1(T-c_1)+d_2(T-c_1)(T-c_2)+...+d_n(T-c_1)...(T-c_n)
%
%	variables d'entrées : 
%     * T : contient le tableau rectangulaire des réels où est évalué p_n
%     * C : contient les centres c_i, pour 1 <=i<=n
%     * D : contient les coefficients d_i, pour 0<=i<=n 	
%
%	variables de sortie
%     * Z : contient le tableau rectangulaire des images de T par p_n	
%
%
% ************ Fonctions auxiliaires utilisées ************
%
%       aucune
%
% *********************************************************


% Contrôles d'entrée
%
% nombre d'arguments
if nargin~=3
   error('nombre d''arguments de la fonction incorrect');
end
% taille des variables C et D
n=length(C);
np=length(D)-1;
if n~=np
   error('les deux tableaux n''ont pas la taille adéquate');
end


% Corps d'algorithme
O=ones(size(T));
Auxi=D(n+1).*O;
for i=n-1:-1:0
   Auxi=(T-C(i+1)).*Auxi+D(i+1);
end
Z=Auxi;
