 |
CUGL 1.3
Cornell University Game Library
|
35 #ifndef __CU_POLYNOMIAL_H__
36 #define __CU_POLYNOMIAL_H__
38 #include <cugl/math/CUMathBase.h>
39 #include <cugl/util/CUDebug.h>
69 #pragma mark Constants
76 #pragma mark Constructors
136 Polynomial(const_iterator first, const_iterator last) : std::vector<float>(first,last) {
137 CUAssertLog(
isValid(),
"The array data is invalid");
150 Polynomial(
float* array,
unsigned int size,
unsigned int offset=0) : std::vector<float>() {
151 assign(array+offset,array+size+offset);
152 CUAssertLog(
isValid(),
"The array data is invalid");
161 #pragma mark Attributes
171 long degree()
const {
return (
long)size()-1; }
188 bool isValid()
const {
return size() == 1 || (size() > 1 && at(0) != 0); }
198 bool isZero()
const {
return size() == 1 && at(0) == 0; }
202 #pragma mark Calculation Methods
261 bool roots(vector<float>&
roots,
float epsilon=CU_MATH_EPSILON)
const;
273 std::vector<float>::operator=(poly);
285 std::vector<float>::operator=(poly);
318 resize(1); at(0) = value;
323 #pragma mark Comparisons
349 return size() == 1 && at(0) < value;
377 return size() == 1 && at(0) <= value;
405 return size() > 1 || at(0) > value;
433 return size() > 1 || at(0) >= value;
444 return size() == 1 && at(0) == value;
455 return size() > 1 || at(0) != value;
459 #pragma mark Operators
486 return *
this = (*this)*other;
676 #pragma mark Friend Functions
745 return right.size() > 1 || right[0] > left;
761 return right.size() > 1 || right[0] >= left;
777 return right.size() == 1 && right[0] < left;
793 return right.size() == 1 && right[0] <= left;
798 #pragma mark Conversion Methods
813 std::string
toString(
bool format=
true)
const;
816 operator std::string()
const {
return toString(); }
820 #pragma mark Internal Helpers
bool isValid() const
Definition: CUPolynomial.h:188
Polynomial(const_iterator first, const_iterator last)
Definition: CUPolynomial.h:136
Polynomial operator*(float value) const
Definition: CUPolynomial.h:642
virtual ~Polynomial()
Definition: CUPolynomial.h:158
float evaluate(float value) const
Polynomial & set(float *array, int size)
static Polynomial recursive_multiply(const Polynomial &a, const Polynomial &b)
bool operator>=(float value) const
Definition: CUPolynomial.h:432
Polynomial(const Polynomial &poly)
Definition: CUPolynomial.h:113
Polynomial operator/(const Polynomial &other) const
Definition: CUPolynomial.h:549
Polynomial operator-(const Polynomial &other) const
Definition: CUPolynomial.h:529
friend bool operator<=(float left, const Polynomial &right)
Definition: CUPolynomial.h:760
bool bairstow_factor(Polynomial &quad, Polynomial &result, float epsilon) const
Polynomial operator%(float value) const
Definition: CUPolynomial.h:664
Polynomial & synthetic_divide(const Polynomial &other)
friend bool operator>=(float left, const Polynomial &right)
Definition: CUPolynomial.h:792
Polynomial derivative() const
Polynomial()
Definition: CUPolynomial.h:80
bool operator>(float value) const
Definition: CUPolynomial.h:404
bool operator<=(float value) const
Definition: CUPolynomial.h:376
Polynomial operator+(const Polynomial &other) const
Definition: CUPolynomial.h:518
Polynomial & operator+=(const Polynomial &other)
Polynomial(Polynomial &&poly)
Definition: CUPolynomial.h:121
Polynomial & operator=(const Polynomial &poly)
Definition: CUPolynomial.h:272
bool operator<(float value) const
Definition: CUPolynomial.h:348
bool operator==(float value) const
Definition: CUPolynomial.h:443
Polynomial operator-(float value) const
Definition: CUPolynomial.h:631
bool operator<=(const Polynomial &p) const
bool operator<(const Polynomial &p) const
Definition: CUPolynomial.h:67
bool roots(vector< float > &roots, float epsilon=CU_MATH_EPSILON) const
friend bool operator>(float left, const Polynomial &right)
Definition: CUPolynomial.h:776
Polynomial & operator/=(const Polynomial &other)
Polynomial & operator*=(const Polynomial &other)
Definition: CUPolynomial.h:485
static Polynomial iterative_multiply(const Polynomial &a, const Polynomial &b)
Polynomial(long degree)
Definition: CUPolynomial.h:89
Polynomial & set(float value)
Definition: CUPolynomial.h:317
Polynomial operator*(const Polynomial &other) const
bool isZero() const
Definition: CUPolynomial.h:198
void solve_quadratic(vector< float > &roots) const
Polynomial & operator%=(const Polynomial &other)
bool operator>(const Polynomial &p) const
bool operator>=(const Polynomial &p) const
bool operator!=(float value) const
Definition: CUPolynomial.h:454
long degree() const
Definition: CUPolynomial.h:171
friend bool operator<(float left, const Polynomial &right)
Definition: CUPolynomial.h:744
Polynomial & operator-=(const Polynomial &other)
Polynomial operator/(float value) const
Definition: CUPolynomial.h:653
Polynomial(long degree, float value)
Definition: CUPolynomial.h:105
Polynomial & operator=(float value)
Definition: CUPolynomial.h:296
bool isConstant() const
Definition: CUPolynomial.h:178
Polynomial & operator=(Polynomial &&poly)
Definition: CUPolynomial.h:284
Polynomial operator+(float value) const
Definition: CUPolynomial.h:620
Polynomial operator-() const
std::string toString(bool format=true) const
static const Polynomial ZERO
Definition: CUPolynomial.h:71
Polynomial(float *array, unsigned int size, unsigned int offset=0)
Definition: CUPolynomial.h:150
Polynomial operator%(const Polynomial &other) const
Definition: CUPolynomial.h:560
static const Polynomial ONE
Definition: CUPolynomial.h:73