function [xv, step, flag] = newtonfun_for (f, f1, x0, toll, maxit)

xv(1)=x0;                     % inizializzazioni
flag=1;

for k=1:maxit
    f1xv(k)=feval(f1,xv(k));
    if f1xv(k) == 0         % uscita per derivata nulla
       step(k)=NaN; return; % flag a questo livello e' uguale a 1
    end
    fxv(k)=feval(f,xv(k));
    
    step(k)=-fxv(k)/f1xv(k); % calcolo step
    xv(k+1)=xv(k)+step(k);    % aggiornamento
    if abs(step(k)) <= toll  % uscita per test di arresto verificato
        flag=0; return;
    end
end

flag=2; % troppe iterazioni