Witam. Mam problem. Napisałem sobie funkcje w Pascalu która będzie obliczać wartość wielomianu danego za pomocą wzoru interpolacyjnego Lagrange'a

oto kod z Pascala:


function Lagrange (n       : Integer;
                   var x,f : vector;
                   xx      : Extended;
                   var st  : Integer) : Extended;

var i,k  : Integer;
    fx,p : Extended;
begin
  if (n<0)
    then st:=1
    else begin
           st:=0;
           if (n>0)
             then begin
                    i:=-1;
                    repeat
                      i:=i+1;
                      for k:=i+1 to n do
                        if x[i]=x[k]
                          then st:=2
                    until ((i=n-1) or (st=2))
                  end;
           if st=0
             then begin
                    fx:=0;
                    for i:=0 to n do
                      begin
                        p:=1;
                        for k:=0 to n do
                          if k<>i
                            then p:=p*(xx-x[k])/(x[i]-x[k]);
                        fx:=fx+f[i]*p
                      end;
                    Lagrange:=fx
                  end;
         end;
end;

chciałem to wykonać również w matlabie. oto co mi wyszło:

function f = Lagrange(n,x,f,xx)
if n<0
    st=1;
    else
    st=0;
    if n>0
        i=-1;
        do
            i=i+1;
            for k=i+1:n
                if x(i) == x(k)
                    st=2; 
                    end
        while i==n-1 | st==2
        end
    if st ==0
        w = 0;
         for i=0:n
            p=1;
             for k=0:n
                 if k!=i
                    p=p*(xx-x(k))/(x(i)-x(k));

                    w=w+f(i)*p;
             end
             f=w;
    end
    end
    end 

ktoś może pomóc w zdiagnozowaniu błędów?