Imath
<navlinks>
<page>

# 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.

</page>