X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Fpolynomial.hh;h=144ba3d1d1dadd0c8b0671b2d9580b7f13e55d8a;hb=0387f04497978e37b335a8b99eec905499d6ad0f;hp=df79274bdc96d45e9408953b4655327cde2d77f3;hpb=fd7e615444cf58b38283a59b56d3457c07778397;p=lilypond.git diff --git a/flower/include/polynomial.hh b/flower/include/polynomial.hh index df79274bdc..144ba3d1d1 100644 --- a/flower/include/polynomial.hh +++ b/flower/include/polynomial.hh @@ -2,13 +2,13 @@ /* * poly.h -- routines for manipulation of polynomials in one var * - * (c) 1993, 1996,1999 Han-Wen Nienhuys + * (c) 1993--2008 Han-Wen Nienhuys */ #ifndef POLY_H #define POLY_H -#include "array.hh" +#include "std-vector.hh" #include "arithmetic-operator.hh" #include "real.hh" @@ -19,66 +19,63 @@ struct Polynomial int degree ()const; /// coefficients - Array coefs_; + vector coefs_; // leading coef - Real &lc(); + Real &lc (); // leading coef - Real lc() const; - void print() const ; - Real eval(Real) const ; - void print_sols(Array) const ; - void check_sols(Array) const ; - void check_sol(Real x) const; - static Polynomial multiply(const Polynomial & p1, const Polynomial & p2); - static Polynomial power(int exponent, const Polynomial & src); + Real lc () const; + void print () const; + Real eval (Real) const; + void print_sols (vector) const; + void check_sols (vector) const; + void check_sol (Real x) const; + static Polynomial multiply (const Polynomial &p1, const Polynomial &p2); + static Polynomial power (int exponent, const Polynomial &src); /// chop low coefficients - void clean(); + void clean (); /// eliminate #x# close to zero - void real_clean(); - static Polynomial add(const Polynomial & p1, const Polynomial & p2); - void scalarmultiply(Real fact); - void operator *= (Real f) { scalarmultiply(f); } - void operator /= (Real f) { scalarmultiply(1/f); } + void real_clean (); + void scalarmultiply (Real fact); + void operator *= (Real f) { scalarmultiply (f); } + void operator /= (Real f) { scalarmultiply (1 / f); } void operator += (Polynomial const &p2); void operator *= (Polynomial const &p2); void operator -= (Polynomial const &p2); - Polynomial (Real a, Real b =0.0); + Polynomial (Real a, Real b = 0.0); Polynomial (){} - static Polynomial subtract(const Polynomial & p1, const Polynomial & p2); - void set_negate(const Polynomial & src); - + void set_negate (const Polynomial &src); + /// take the derivative - void differentiate(); - int set_mod(const Polynomial &u, const Polynomial &v); + void differentiate (); + int set_mod (const Polynomial &u, const Polynomial &v); - void debug_clean(); + void debug_clean (); - Array solve_quadric()const; - Array solve_cubic()const; - Array solve_linear()const; + vector solve_quadric ()const; + vector solve_cubic ()const; + vector solve_linear ()const; - Array solve () const; + vector solve () const; }; - -IMPLEMENT_ARITHMETIC_OPERATOR(Polynomial, - ); -IMPLEMENT_ARITHMETIC_OPERATOR(Polynomial, + ); -IMPLEMENT_ARITHMETIC_OPERATOR(Polynomial, * ); +IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, -); +IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, +); +IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, *); inline Polynomial operator * (Polynomial p, Real a) { - p *=a; + p *= a; return p; } inline Polynomial -operator * (Real a,Polynomial p) +operator * (Real a, Polynomial p) { - p *=a; + p *= a; return p; } #endif