#include <iostream>
#include <cmath>

int main()
{
  double p, q, u, v;
  double a = 1.0, b = -6.0, c = 11.0, d = -6.0;
  
  p = (3.0 * a * c - b * b) / (3.0 * a * a); // (3ac - b^2) / 3a^2
  q = (27.0 * a * a * d + 2.0 * b * b * b - 9.0 * a * b * c) / (27.0 * a * a * a); // (27.0 * a^2 * d + 2 * b^3 -9.0 * a * b * c) / 27a^3
  
  std::cout << "p = " << p << ", q = " << q << std::endl;
  
  u = std::pow(-q / 2.0 + std::sqrt(std::pow(q / 2.0, 2.0) + std::pow(p / 3.0, 3.0)), 1.0 / 3.0); // (-q/2 + √((q/2)^2 + (p/3)^3))^(1/3)
  v = std::pow(-q / 2.0 - std::sqrt(std::pow(q / 2.0, 2.0) + std::pow(p / 3.0, 3.0)), 1.0 / 3.0); // (-q/2 - √((q/2)^2 + (p/3)^3))^(1/3)
  
  double x1, x2, x3;
  
  x1 = u + v + b / (3.0 * a);
  
  std::cout << "x1 = " << x1 << std::endl;
}