00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00029
00030
00032
00033
00034 #ifndef _DIM2TAYLOR_H
00035 #define _DIM2TAYLOR_H
00036
00037 #include <iostream>
00038 #include <fstream>
00039
00040 #include "ivector.hpp"
00041 #include "imath.hpp"
00042 #include "idot.hpp"
00043
00044 using namespace cxsc;
00045 namespace taylor{
00046
00047 enum{_ln,_lnp1,_tan,_cot,_asin,_acos,_atan,_acot,_tanh,_coth,
00048 _asinh,_acosh,_atanh,_acoth,_sqrtp1m1};
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 class dim2taylor{
00064 private:
00065
00066 int p;
00067 ivector* dat;
00068
00069
00070 public:
00071
00072 dim2taylor();
00073 dim2taylor(int);
00074 dim2taylor(const dim2taylor& );
00075
00076 ~dim2taylor();
00077
00078 dim2taylor& operator=(const dim2taylor& );
00079 ivector& operator[](int n) const;
00080
00081 friend dim2taylor init_var(int, int, const interval& );
00082 friend dim2taylor init_const(int, const interval& );
00083
00084 int get_p() const {return p;};
00085 int order() const {return p;}
00086
00087 void print_dim2taylor();
00088 void print_dim2taylor(std::ostream&);
00089
00090 friend std::ostream& operator<< (std::ostream&, dim2taylor&);
00091
00092
00093
00094 friend dim2taylor operator-(const dim2taylor& s);
00095 friend dim2taylor operator-(const dim2taylor&, const dim2taylor& );
00096 friend dim2taylor operator+(const dim2taylor&, const dim2taylor& );
00097 friend dim2taylor operator*(const dim2taylor&, const dim2taylor& );
00098 friend dim2taylor operator/(const dim2taylor&, const dim2taylor& );
00099
00100 friend dim2taylor operator-(const interval&, const dim2taylor& );
00101 friend dim2taylor operator+(const interval&, const dim2taylor& );
00102 friend dim2taylor operator*(const interval&, const dim2taylor& );
00103 friend dim2taylor operator/(const interval&, const dim2taylor& );
00104
00105 friend dim2taylor operator-(const dim2taylor&, const interval& );
00106 friend dim2taylor operator+(const dim2taylor&, const interval& );
00107 friend dim2taylor operator*(const dim2taylor&, const interval& );
00108 friend dim2taylor operator/(const dim2taylor&, const interval& );
00109
00110
00111 friend dim2taylor operator-(const real&, const dim2taylor& );
00112 friend dim2taylor operator+(const real&, const dim2taylor& );
00113 friend dim2taylor operator*(const real&, const dim2taylor& );
00114 friend dim2taylor operator/(const real&, const dim2taylor& );
00115
00116
00117 friend dim2taylor operator-(const dim2taylor&, const real& );
00118 friend dim2taylor operator+(const dim2taylor&, const real& );
00119 friend dim2taylor operator*(const dim2taylor&, const real& );
00120 friend dim2taylor operator/(const dim2taylor&, const real& );
00121
00122 friend dim2taylor operator-(int, const dim2taylor& );
00123 friend dim2taylor operator+(int, const dim2taylor& );
00124 friend dim2taylor operator*(int, const dim2taylor& );
00125 friend dim2taylor operator/(int, const dim2taylor& );
00126
00127 friend dim2taylor operator-(const dim2taylor&, int);
00128 friend dim2taylor operator+(const dim2taylor&, int);
00129 friend dim2taylor operator*(const dim2taylor&, int);
00130 friend dim2taylor operator/(const dim2taylor&, int);
00131
00132 friend dim2taylor sqr(const dim2taylor& );
00133 friend dim2taylor sqrt(const dim2taylor& );
00134 friend dim2taylor sqrt1px2(const dim2taylor& );
00135 friend dim2taylor sqrtx2m1(const dim2taylor& );
00136 friend dim2taylor sqrtp1m1(const dim2taylor& );
00137 friend dim2taylor pow(const dim2taylor& , const interval& );
00138 friend dim2taylor power(const dim2taylor& , int );
00139
00140 friend dim2taylor exp(const dim2taylor& );
00141 friend dim2taylor ln(const dim2taylor& );
00142 friend dim2taylor lnp1(const dim2taylor& );
00143
00144 friend dim2taylor sin(const dim2taylor& );
00145 friend dim2taylor cos(const dim2taylor& );
00146 friend dim2taylor tan(const dim2taylor& );
00147 friend dim2taylor cot(const dim2taylor& );
00148
00149 friend dim2taylor sinh(const dim2taylor& );
00150 friend dim2taylor cosh(const dim2taylor& );
00151 friend dim2taylor tanh(const dim2taylor& );
00152 friend dim2taylor coth(const dim2taylor& );
00153
00154 friend dim2taylor asin(const dim2taylor& );
00155 friend dim2taylor acos(const dim2taylor& );
00156 friend dim2taylor atan(const dim2taylor& );
00157 friend dim2taylor acot(const dim2taylor& );
00158
00159 friend dim2taylor asinh(const dim2taylor& );
00160 friend dim2taylor acosh(const dim2taylor& );
00161 friend dim2taylor atanh(const dim2taylor& );
00162 friend dim2taylor acoth(const dim2taylor& );
00163
00164 friend dim2taylor erf(const dim2taylor& );
00165 friend dim2taylor erfc(const dim2taylor& );
00166
00167 friend void f_g_u(const dim2taylor& , const dim2taylor& , const dim2taylor& ,
00168 int );
00169 };
00170
00171
00172
00173
00174
00175
00176
00177
00178 class dim2taylor_vector{
00179 private:
00180
00181 int dim;
00182 int lb;
00183 int ub;
00184
00185 int p_el;
00186 dim2taylor* comp;
00187
00188 public:
00189
00190 dim2taylor_vector();
00191 dim2taylor_vector(int, int, int);
00192 dim2taylor_vector(const dim2taylor_vector& );
00193
00194 ~dim2taylor_vector();
00195
00196 int get_dim() const {return dim;};
00197
00198 int get_lb () const {return lb;};
00199 int get_ub () const {return ub;};
00200 int get_p_el() const {return p_el;};
00201
00202 friend int Lb(const dim2taylor_vector&);
00203 friend int Ub(const dim2taylor_vector&);
00204
00205 dim2taylor_vector& operator=(const dim2taylor_vector& );
00206 dim2taylor& operator[](int n) const;
00207
00208
00209 friend dim2taylor_vector init_var(int order, ivector& values);
00210
00211 };
00212
00213 }
00214
00215 #endif