16 #ifndef __CU_POLYNOMIAL_H__
17 #define __CU_POLYNOMIAL_H__
29 #pragma mark Polynomial
52 #pragma mark Constructors
80 Polynomial(
long degree,
float value) : vector<float>(degree+1,value) {
102 Polynomial(const_iterator first, const_iterator last) : vector<float>(first,last) {
103 CCASSERT(isValid(),
"The array data is invalid");
116 Polynomial(
float* array,
unsigned int size,
unsigned int offset=0) : vector<float>() {
117 assign(array+offset,array+size+offset);
118 CCASSERT(isValid(),
"The array data is invalid");
127 #pragma mark Accessors
136 long degree()
const {
return (
long)size()-1; }
153 bool isValid()
const {
return size() == 1 || (size() > 1 && at(0) != 0); }
163 bool isZero()
const {
return size() == 1 && at(0) == 0; }
166 #pragma mark Basic Methods
184 float evaluate(
float value)
const;
225 bool roots(vector<float>& roots,
float epsilon)
const;
241 string toString(
bool format=
true)
const;
244 #pragma mark Operators
271 return *
this = (*this)*other;
454 #pragma mark Friend Functions
521 friend ostream& operator<<(ostream& os,
const Polynomial& poly);
524 #pragma mark Internal Helpers
607 void solve_quadratic(vector<float>& roots)
const;
long degree() const
Definition: CUPolynomial.h:136
bool constant() const
Definition: CUPolynomial.h:143
Polynomial()
Definition: CUPolynomial.h:56
Polynomial(long degree)
Definition: CUPolynomial.h:65
Polynomial operator+(float value) const
Definition: CUPolynomial.h:405
Definition: CUPolynomial.h:50
Polynomial(const Polynomial &poly)
Definition: CUPolynomial.h:88
Polynomial(float *array, unsigned int size, unsigned int offset=0)
Definition: CUPolynomial.h:116
Polynomial operator%(const Polynomial &other) const
Definition: CUPolynomial.h:345
bool isValid() const
Definition: CUPolynomial.h:153
Polynomial operator%(float value) const
Definition: CUPolynomial.h:449
Polynomial(const_iterator first, const_iterator last)
Definition: CUPolynomial.h:102
Polynomial operator+(const Polynomial &other) const
Definition: CUPolynomial.h:303
Polynomial(long degree, float value)
Definition: CUPolynomial.h:80
Polynomial operator/(float value) const
Definition: CUPolynomial.h:438
virtual ~Polynomial()
Definition: CUPolynomial.h:124
Polynomial operator/(const Polynomial &other) const
Definition: CUPolynomial.h:334
Polynomial operator-(const Polynomial &other) const
Definition: CUPolynomial.h:314
Polynomial operator*(float value) const
Definition: CUPolynomial.h:427
bool isZero() const
Definition: CUPolynomial.h:163
Polynomial & operator*=(const Polynomial &other)
Definition: CUPolynomial.h:270
Polynomial operator-(float value) const
Definition: CUPolynomial.h:416