36 std::complex<double>
C1 = std::pow(0.5 * (
deltaOne_m + std::copysign(1.0,
deltaOne_m.real()) * tmp), 1.0 / 3.0);
39 if (std::abs(x1.imag()) < 1e-9 && x1.real() > 0.0)
42 std::complex<double>
C2 =
C1 * std::complex<double>(-0.5, -0.5 * std::sqrt(3));
44 if (std::abs(x2.imag()) < 1e-9 && x2.real() > 0.0)
47 std::complex<double> C3 =
C1 * std::complex<double>(-0.5, 0.5 * std::sqrt(3));
49 if (std::abs(x3.imag()) < 1e-9 && x3.real() > 0.0)
68 for (i = 1; i < size; ++ i) {
72 if (oldValue * value < 0.0) {
101 int iter = 0, max_iter = 100;
102 const gsl_root_fsolver_type *T;
103 gsl_root_fsolver *solver;
112 T = gsl_root_fsolver_brent;
113 solver = gsl_root_fsolver_alloc (T);
114 gsl_root_fsolver_set (solver, &F, x_lo, x_hi);
119 status = gsl_root_fsolver_iterate (solver);
120 root = gsl_root_fsolver_root (solver);
121 x_lo = gsl_root_fsolver_x_lower (solver);
122 x_hi = gsl_root_fsolver_x_upper (solver);
123 status = gsl_root_test_interval (x_lo, x_hi,
126 while (status == GSL_CONTINUE && iter < max_iter &&
computeValue(root) > tol);
128 gsl_root_fsolver_free (solver);