65  double aover3(a / 3.0);
 
   66  p = -(a * aover3) + b;
 
   74      double dsqrt = std::sqrt(d);
 
   75      u            = std::cbrt(-q / 2.0 + dsqrt);
 
   76      v            = std::cbrt(-q / 2.0 - dsqrt);
 
   77      res.x1       = u + v - aover3;
 
   86  if(std::abs(d) <= 1e-20)
 
   88      u      = std::cbrt(-q / 2.0);
 
   90      res.x1 = u + v - aover3;
 
   97      alpha = std::atan(std::sqrt(-d) / -q * 2.0);
 
   99        alpha = 2.0 * M_PI - alpha;
 
  102        r * (std::cos((6.0 * M_PI - alpha) / 3.0) + std::cos(alpha / 3.0)) -
 
 
  122  std::size_t polynome_size = polynome.size();
 
  124  double a, b, c, delta;
 
  126  switch(polynome_size)
 
  152        delta = (b * b) - (a * c * 4);
 
  157        else if(std::abs(delta) <= 1e-20)
 
  159            res.x1 = -b / (a * 2);
 
  166            delta  = std::sqrt(delta);
 
  167            res.x1 = (-b + delta) / (a * 2);
 
  168            res.x2 = (-b - delta) / (a * 2);
 
  175        cubic_solver(res, polynome[3], polynome[2], polynome[1], polynome[0]);