BRL-CAD
|
Polynomial data type. More...
Files | |
file | poly.h |
Data Structures | |
struct | bn_multipoly |
struct | bn_poly |
Macros | |
#define | BN_MAX_POLY_DEGREE 6 |
#define | BN_CK_POLY(_p) BU_CKMAG(_p, BN_POLY_MAGIC, "struct bn_poly") |
#define | BN_POLY_NULL ((struct bn_poly *)NULL) |
#define | BN_POLY_INIT_ZERO { BN_POLY_MAGIC, 0, {0.0} } |
Typedefs | |
typedef struct bn_multipoly | bn_multipoly_t |
typedef struct bn_poly | bn_poly_t |
Functions | |
struct bn_poly * | bn_poly_mul (struct bn_poly *product, const struct bn_poly *m1, const struct bn_poly *m2) |
multiply two polynomials | |
struct bn_poly * | bn_poly_scale (struct bn_poly *eqn, double factor) |
scale a polynomial | |
struct bn_poly * | bn_poly_add (struct bn_poly *sum, const struct bn_poly *poly1, const struct bn_poly *poly2) |
add two polynomials | |
struct bn_poly * | bn_poly_sub (struct bn_poly *diff, const struct bn_poly *poly1, const struct bn_poly *poly2) |
subtract two polynomials | |
void | bn_poly_synthetic_division (struct bn_poly *quo, struct bn_poly *rem, const struct bn_poly *dvdend, const struct bn_poly *dvsor) |
Divides any polynomial into any other polynomial using synthetic division. Both polynomials must have real coefficients. | |
int | bn_poly_quadratic_roots (struct bn_complex roots[], const struct bn_poly *quadrat) |
Uses the quadratic formula to find the roots (in ‘complex’ form) of any quadratic equation with real coefficients. | |
int | bn_poly_cubic_roots (struct bn_complex roots[], const struct bn_poly *eqn) |
Uses the cubic formula to find the roots (in ‘complex’ form) of any cubic equation with real coefficients. | |
int | bn_poly_quartic_roots (struct bn_complex roots[], const struct bn_poly *eqn) |
Uses the quartic formula to find the roots (in ‘complex’ form) of any quartic equation with real coefficients. | |
int | bn_poly_findroot (bn_poly_t *eqn, bn_complex_t *nxZ, const char *str) |
void | bn_poly_eval_w_2derivatives (bn_complex_t *cZ, bn_poly_t *eqn, bn_complex_t *b, bn_complex_t *c, bn_complex_t *d) |
int | bn_poly_checkroots (bn_poly_t *eqn, bn_complex_t *roots, int nroots) |
void | bn_poly_deflate (bn_poly_t *oldP, bn_complex_t *root) |
int | bn_poly_roots (bn_poly_t *eqn, bn_complex_t roots[], const char *name) |
void | bn_pr_poly (const char *title, const struct bn_poly *eqn) |
void | bn_pr_roots (const char *title, const struct bn_complex roots[], int n) |
Polynomial data type.
Library for dealing with polynomials.
#define BN_POLY_INIT_ZERO { BN_POLY_MAGIC, 0, {0.0} } |
typedef struct bn_multipoly bn_multipoly_t |
|
extern |
multiply two polynomials
bn_poly_mul
scale a polynomial
bn_poly_scale
|
extern |
add two polynomials
bn_poly_add
|
extern |
subtract two polynomials
bn_poly_sub
|
extern |
Divides any polynomial into any other polynomial using synthetic division. Both polynomials must have real coefficients.
|
extern |
Uses the quadratic formula to find the roots (in ‘complex’ form) of any quadratic equation with real coefficients.
@return 1 for success @return 0 for fail.
|
extern |
Uses the cubic formula to find the roots (in ‘complex’ form) of any cubic equation with real coefficients.
to solve a polynomial of the form:
X**3 + c1*X**2 + c2*X + c3 = 0,
first reduce it to the form:
Y**3 + a*Y + b = 0,
where Y = X + c1/3, and a = c2 - c1**2/3, b = (2*c1**3 - 9*c1*c2 + 27*c3)/27.
Then we define the value delta, D = b**2/4 + a**3/27.
If D > 0, there will be one real root and two conjugate complex roots. If D = 0, there will be three real roots at least two of which are equal. If D < 0, there will be three unequal real roots.
Returns 1 for success, 0 for fail.
|
extern |
Uses the quartic formula to find the roots (in ‘complex’ form) of any quartic equation with real coefficients.
@return 1 for success @return 0 for fail.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
Print out the roots of a given polynomial (complex numbers)