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?