function D = divdiff_distinct(xdata,ydata)
% Functia calculeaza tabelul cu diferente divizate pe nodurile
% distincte stocate in vectorul xdata si pentru valorile
% ydata = f(xdata). Mai precis  se calculeaza folosind recurenta
% diferenta divizata
%   [xdata];f]
%
% Input:
%       - xdata:    vectorul nodurilor (de lungime n)
%       - ydata:    valorile
% Output:
%       - D:        o matrice inferior triunghiulara ce contine
%                   diferentele divizate de ordin 0 pana la n.
%
% UT-CLUJ  2018-2019

D = [];

if nargin ~= 2
    error('divdiff_distinct_1: insuficiente argumente');
end;
sz1     = size(xdata);
sz1_1   = sz1(1);

if sz1_1>1
    error('divdiff_distinct_1: primul argument trebuie sa fie vector linie');
end;

n = length(xdata);
D = zeros(n,n);
D(:,1) = ydata';

for k = 2:n
    for i = 1:(n-k+1)
        % !!! pe linia de mai jos folositi formula de recurenta pentru diferente divizate
        D(k+i-1,k)=(D(k+i-1,k-1)-D(k+i-2,k-1))/(xdata(k+i-1)-xdata(i));
    end;
end;


