Gentilissimo per la risposta, ma non mi spiego un paio di cose:

if(fa*(fb/|fb|))>0 si bloccherebbe spesso e volentieri per "divisione per zero";

sign dove è implementata?

tol e tolf sono tolleranza sul punto e sulla funzione nel punto?