3 * poly.h -- routines for manipulation of polynomials in one var
5 * (c) 1993, 1996,1999 Han-Wen Nienhuys
12 #include "arithmetic-operator.hh"
15 /// structure for a polynomial in one var.
18 /// degree of polynomial
30 Real eval (Real) const ;
31 void print_sols (Array<Real>) const ;
32 void check_sols (Array<Real>) const ;
33 void check_sol (Real x) const;
34 static Polynomial multiply (const Polynomial & p1, const Polynomial & p2);
35 static Polynomial power (int exponent, const Polynomial & src);
37 /// chop low coefficients
40 /// eliminate #x# close to zero
42 static Polynomial add (const Polynomial & p1, const Polynomial & p2);
43 void scalarmultiply (Real fact);
44 void operator *= (Real f) { scalarmultiply (f); }
45 void operator /= (Real f) { scalarmultiply (1/f); }
46 void operator += (Polynomial const &p2);
47 void operator *= (Polynomial const &p2);
48 void operator -= (Polynomial const &p2);
49 Polynomial (Real a, Real b =0.0);
51 static Polynomial subtract (const Polynomial & p1, const Polynomial & p2);
52 void set_negate (const Polynomial & src);
54 /// take the derivative
55 void differentiate ();
56 int set_mod (const Polynomial &u, const Polynomial &v);
60 Array<Real> solve_quadric ()const;
61 Array<Real> solve_cubic ()const;
62 Array<Real> solve_linear ()const;
64 Array<Real> solve () const;
68 IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, - );
69 IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, + );
70 IMPLEMENT_ARITHMETIC_OPERATOR (Polynomial, * );
73 operator * (Polynomial p, Real a)
79 operator * (Real a,Polynomial p)