function D=diff_div_dist(X,Y)
% 
%
%	diff_div_dist : calcul des différences divisées pour des points de supports distincts
%
% *********************************************************
%
%	D=diff_div_dist(X,Y)
%     les différences divisées sont calculées par l'algorithme 
%     pyramidal donné en cours.
%
%	variables d'entrées : 
%     * X : contient les valeurs x_i, pour 0 <=i<=n (deux à deux distinctes)
%     * Y : contient les valeurs f(x_i), pour 0 <=i<=n
%
%	variables de sortie
%     * D : contient les différences divisées 	
%           f[x_0], f[x_0,x_1], ...., f[x_0,x_1,...,x_n]
%
%
% ************ Fonctions auxiliaires utilisées ************
%
%       aucune
%
% *********************************************************



% Contrôles d'entrée
%
% nombre d'arguments
if nargin~=2
   error('nombre d''arguments de la fonction incorrect');
end
% taille des deux variables 
n=length(X)-1;
np=length(Y)-1;
if n~=np
   error('les deux tableaux n''ont pas la même taille');
end
% vérification des éléments du support deux à deux disjoints 
% (si X non formel)
if isnumeric(X)
   Z=sort(X);
   if min(diff(Z))==0
      error('deux points du support sont égaux');
   end
end


% Corps d'algorithme
D=Y;   
for i=1:n;
   for j=n:-1:i;
      D(j+1)=(D(j+1)-D(j))/(X(j+1)-X(j-i+1));
   end
end



