class_docstr: 1d-solver generating pairs of approximative root and error.
  
  Needs starting points x0, x1 and x2 close to the root.
  x1 defaults to x0 + 0.25; x2 to x1 + 0.25.
  Uses Muller's method that converges towards complex roots.
  
  Pro:
  
  * converges fast (somewhat faster than secant)
  * can find complex roots
  
  Contra:
  
  * converges slowly for multiple roots
  * may have complex values for real starting points and real roots
  
  http://en.wikipedia.org/wiki/Muller's_method
class_docstr_tok: ["1d-solver","generating","pairs","of","approximative","root","and","error",".","Needs","starting","points","x0",",","x1","and","x2","close","to","the","root",".","x1","defaults","to","x0","+","0.25",";","x2","to","x1","+","0.25",".","Uses","Muller","'s","method","that","converges","towards","complex","roots",".","Pro",":","*","converges","fast","(","somewhat","faster","than","secant",")","*","can","find","complex","roots","Contra",":","*","converges","slowly","for","multiple","roots","*","may","have","complex","values","for","real","starting","points","and","real","roots","http",":","\/\/en.wikipedia.org\/wiki\/Muller's_method"]
code: def __init__(self, ctx, f, x0, **kwargs):
      self.ctx = ctx
      if len(x0) == 1:
          self.x0 = x0[0]
          self.x1 = self.x0 + 0.25
          self.x2 = self.x1 + 0.25
      elif len(x0) == 2:
          self.x0 = x0[0]
          self.x1 = x0[1]
          self.x2 = self.x1 + 0.25
      elif len(x0) == 3:
          self.x0 = x0[0]
          self.x1 = x0[1]
          self.x2 = x0[2]
      else:
          raise ValueError(
              "expected 1, 2 or 3 starting points, got %i" % len(x0)
          )
      self.f = f
      self.verbose = kwargs["verbose"]
  
imports: from __future__ import print_function
  from copy import copy
  from ..libmp.backend import xrange
label_desc: Use image node_id 1 to create a new Muller object  with example: obj = Muller(ctx, f, x0)