Roots¶
Functions to compute roots of simple equations.
#include <Imath/ImathRoots.h>

template<class T>
constexpr int Imath::solveLinear(T a, T b, T &x)¶ Solve for x in the linear equation:
a * x + b == 0
 Returns
1 if the equation has a solution, 0 if there is no solution, and 1 if all real numbers are solutions.

template<class T>
constexpr int Imath::solveQuadratic(T a, T b, T c, T x[2])¶ Solve for x in the quadratic equation:
a * x*x + b * x + c == 0
 Returns
2 if the equation has two solutions, 1 if the equation has a single solution, 0 if there is no solution, and 1 if all real numbers are solutions.

template<class T>
constexpr int Imath::solveNormalizedCubic(T r, T s, T t, T x[3])¶ Solve for x in the normalized cubic equation:
x*x*x + r * x*x + s * x + t == 0
The equation is solved using Cardano’s Formula; even though only real solutions are produced, some intermediate results are complex (std::complex<T>).
 Returns
0 if there is no solution, and 1 if all real numbers are solutions, otherwise return the number of solutions.

template<class T>
constexpr int Imath::solveCubic(T a, T b, T c, T d, T x[3])¶ Solve for x in the cubic equation:
a * x*x*x + b * x*x + c * x + d == 0
The equation is solved using Cardano’s Formula; even though only real solutions are produced, some intermediate results are complex (std::complex<T>).
 Returns
0 if there is no solution, and 1 if all real numbers are solutions, otherwise return the number of solutions.