Functions |
static double | irplib_polynomial_eval_2_max (double p2, double p1, double p0, cpl_boolean is_c, double x1, double x2) |
| Find the max residual on a 2nd degree 1D-polynomial on the roots.
|
static double | irplib_polynomial_eval_3_max (double p3, double p2, double p1, double p0, cpl_boolean is_c, double x1, double x2, double x3) |
| Find the max residual on a 3rd degree 1D-polynomial on the roots.
|
static cpl_boolean | irplib_polynomial_solve_1d_2 (double, double, double, double *, double *) |
static cpl_boolean | irplib_polynomial_solve_1d_3 (double, double, double, double, double *, double *, double *, cpl_boolean *, cpl_boolean *) |
static void | irplib_polynomial_solve_1d_31 (double, double, double *, double *, double *, cpl_boolean *) |
static void | irplib_polynomial_solve_1d_32 (double, double, double, double *, double *, double *, cpl_boolean *) |
static void | irplib_polynomial_solve_1d_3r (double, double, double, double, double *, double *, double *) |
static void | irplib_polynomial_solve_1d_3c (double, double, double, double, double, double, double *, double *, double *, cpl_boolean *, cpl_boolean *) |
static cpl_error_code | irplib_polynomial_solve_1d_4 (double, double, double, double, double, cpl_size *, double *, double *, double *, double *) |
static cpl_error_code | irplib_polynomial_solve_1d_nonzero (cpl_polynomial *, cpl_vector *, cpl_size *) |
static cpl_error_code | irplib_polynomial_divide_1d_root (cpl_polynomial *, double, double *) |
cpl_error_code | irplib_polynomial_solve_1d_all (const cpl_polynomial *self, cpl_vector *roots, cpl_size *preal) |
| Compute all n roots of p(x) = 0, where p(x) is of degree n, n > 0.
|
cpl_error_code irplib_polynomial_solve_1d_all |
( |
const cpl_polynomial * |
self, |
|
|
cpl_vector * |
roots, |
|
|
cpl_size * |
preal |
|
) |
| |
Compute all n roots of p(x) = 0, where p(x) is of degree n, n > 0.
- Parameters:
-
self | The 1D-polynomial |
roots | A pre-allocated vector of length n to hold the roots |
preal | The number of real roots found, or undefined on error |
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code
The *preal real roots are stored first in ascending order, then follows for each pair of complex conjugate roots, the real and imaginary parts of the root in the positive imaginary half-plane, for example for a 3rd degree polynomial with 1 real root, the roots are represented as: x0 = v0 x1 = v1 + i v2 x2 = v1 - i v2, where v0, v1, v2 are the elements of the roots vector.
Possible CPL error code set in this function:
- CPL_ERROR_NULL_INPUT if an input pointer is NULL
- CPL_ERROR_INVALID_TYPE if the polynomial has the wrong dimension
- CPL_ERROR_DATA_NOT_FOUND if the polynomial does not have a degree of at least 1.
- CPL_ERROR_INCOMPATIBLE_INPUT if the roots vector does not have length n
- CPL_ERROR_DIVISION_BY_ZERO if a division by zero occurs (n > 4)
- CPL_ERROR_CONTINUE if the algorithm does not converge (n > 4)
Definition at line 142 of file irplib_polynomial.c.