class_docstr: 1d-solver generating pairs of approximative root and error.
  
  Uses bisection method to find a root of f in [a, b].
  Might fail for multiple roots (needs sign change).
  
  Pro:
  
  * robust and reliable
  
  Contra:
  
  * converges slowly
  * needs sign change
class_docstr_tok: ["1d-solver","generating","pairs","of","approximative","root","and","error",".","Uses","bisection","method","to","find","a","root","of","f","in","[","a",",","b","]",".","Might","fail","for","multiple","roots","(","needs","sign","change",")",".","Pro",":","*","robust","and","reliable","Contra",":","*","converges","slowly","*","needs","sign","change"]
code: def __iter__(self):
      f = self.f
      a = self.a
      b = self.b
      l = b - a
      fb = f(b)
      while True:
          m = self.ctx.ldexp(a + b, -1)
          fm = f(m)
          sign = fm * fb
          if sign < 0:
              a = m
          elif sign > 0:
              b = m
              fb = fm
          else:
              yield m, self.ctx.zero
          l /= 2
          yield (a + b) / 2, abs(l)
  
imports: from __future__ import print_function
  from copy import copy
  from ..libmp.backend import xrange
label_desc: Use image node_id 2 for calling the Bisection obj's underlying member method code with example usage: obj.__iter__() without return types