00001 #ifndef __RPolynome_H__
00002 #define __RPolynome_H__
00003
00004
00005
00024 #include <stdio.h>
00025 #include <math.h>
00026
00027 class RPolynome
00028 {
00029 public:
00030
00031 int n,nmax;
00032 double* a;
00033
00034 public:
00035
00036 RPolynome(int nmax=6);
00037 RPolynome(double a0, int nmax=1);
00038 RPolynome(double a0, double a1, int nmax=2);
00039 RPolynome(double a0, double a1, double a2, int nmax=3);
00040 RPolynome(double* ax, int n, int nmax=6);
00041 RPolynome(const RPolynome& x);
00042 RPolynome& operator=(const RPolynome& x);
00043
00044 ~RPolynome(){delete[] a;}
00045
00046 inline int getOrder(){return n-1;}
00047 inline int numberOfCoeff() const{return n;}
00048 inline int maxCoeff() const{return nmax;}
00049
00050 inline double getA(int i) const{return a[i];}
00051 inline void setA(int i, double ax){n= n > i ? n : i; a[i]=ax;}
00052 inline void addA(double ax){if( n<nmax ){a[n]=ax; n++;} }
00053
00054 void clear();
00055 void setP0(double a0);
00056 void setP1(double a0, double a1);
00057 void setP2(double a0, double a1, double a2);
00058
00059 void setX_A(double x_a);
00060
00061 void multiplyX_A(double x_a);
00062
00063 double getValue(double x);
00064
00065
00066 void operator+=(double value){ n= n<1 ? n : 1; a[0] += value; }
00067 void operator-=(double value){ n= n<1 ? n : 1; a[0] -= value; }
00068 void operator*=(double value);
00069 void operator/=(double value);
00070
00071
00072 void operator+=(const RPolynome& p);
00073 void operator-=(const RPolynome& p);
00074 void operator*=(const RPolynome& p);
00075
00076
00077 friend RPolynome operator+(const RPolynome& v, double a);
00078 friend RPolynome operator+(double a, const RPolynome& v);
00079 friend RPolynome operator-(const RPolynome& v, double a);
00080 friend RPolynome operator-(double a, const RPolynome& v);
00081 friend RPolynome operator*( const RPolynome& v, double a);
00082 friend RPolynome operator*(double a,const RPolynome& v);
00083 friend RPolynome operator/(const RPolynome& v, double a);
00084
00085 friend RPolynome operator+(const RPolynome& v1, const RPolynome& v2);
00086 friend RPolynome operator-(const RPolynome& v1, const RPolynome& v2);
00087 friend RPolynome operator*(const RPolynome& v1, const RPolynome& v2);
00088
00089
00090 void output();
00091 void output(FILE* file);
00092 };
00093
00094 #endif
00095
00096