function [aa,bb]=bisezione2011(a,b,tinv,tres,maxit,f)
if b < a s=b; b=a; a=s; end % Aggiusta errori utente.
aa=[a]; bb=[b];
for index=1:maxit
    fa=feval(f,a); fb=feval(f,b); 
    if fa == 0 aa=[aa;a];bb=[bb;a];return;end % a sol.
    if fb == 0 aa=[aa;b];bb=[bb;b];return;end % b sol.
    c=(a+b)/2;  fc=feval(f,c);
    semilung=(b-a)/2;den=(fb-fa);if den==0, den=eps;end
    w=(b-a)/den; wres=abs(fc*w); % Residuo pesato
    if (wres<tres)|(semilung<tinv)|(fc==0)
        k=index; fprintf('\n');  return; % OK exit.
    end 
    if sign(fc) == sign(fa) % Aggiornamento.
        aa=[aa; c]; bb=[bb; b]; a=c;
    else
        aa=[aa; a]; bb=[bb; c]; b=c;
    end
end
k=maxit; fprintf('\n')