  An efficient method for finding all real roots of a univariate function in a
given bounded domain is formulated. The proposed method uses adaptive mesh
refinement to locate bracketing intervals based on bisection criterion for root
finding. Each bracketing interval encloses one root. An adaptive form of error
is introduced to enclose roots in a desired tolerance based on how much close
the roots are. Detecting roots with even multiplicity, which is regarded out of
the realm of bracketing methods, becomes possible with the method proposed in
this paper. Also, strategies for finding odd-multiple roots with the least
number of function evaluations is proposed. Adaptive mesh refinement lead to
considerable reduction in function evaluations in comparison to previous global
root bracketing methods. The reliability of the proposed method is being
illustrated by several examples.
