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 dim2taylor init_var(int, int, const interval& );
00172 dim2taylor init_const(int, const interval& );
00173 std::ostream& operator<< (std::ostream&, dim2taylor&);
00174
00175 dim2taylor operator-(const dim2taylor& s);
00176 dim2taylor operator-(const dim2taylor&, const dim2taylor& );
00177 dim2taylor operator+(const dim2taylor&, const dim2taylor& );
00178 dim2taylor operator*(const dim2taylor&, const dim2taylor& );
00179 dim2taylor operator/(const dim2taylor&, const dim2taylor& );
00180
00181 dim2taylor operator-(const interval&, const dim2taylor& );
00182 dim2taylor operator+(const interval&, const dim2taylor& );
00183 dim2taylor operator*(const interval&, const dim2taylor& );
00184 dim2taylor operator/(const interval&, const dim2taylor& );
00185
00186 dim2taylor operator-(const dim2taylor&, const interval& );
00187 dim2taylor operator+(const dim2taylor&, const interval& );
00188 dim2taylor operator*(const dim2taylor&, const interval& );
00189 dim2taylor operator/(const dim2taylor&, const interval& );
00190
00191 dim2taylor operator-(const real&, const dim2taylor& );
00192 dim2taylor operator+(const real&, const dim2taylor& );
00193 dim2taylor operator*(const real&, const dim2taylor& );
00194 dim2taylor operator/(const real&, const dim2taylor& );
00195
00196 dim2taylor operator-(const dim2taylor&, const real& );
00197 dim2taylor operator+(const dim2taylor&, const real& );
00198 dim2taylor operator*(const dim2taylor&, const real& );
00199 dim2taylor operator/(const dim2taylor&, const real& );
00200
00201 dim2taylor operator-(int, const dim2taylor& );
00202 dim2taylor operator+(int, const dim2taylor& );
00203 dim2taylor operator*(int, const dim2taylor& );
00204 dim2taylor operator/(int, const dim2taylor& );
00205
00206 dim2taylor operator-(const dim2taylor&, int);
00207 dim2taylor operator+(const dim2taylor&, int);
00208 dim2taylor operator*(const dim2taylor&, int);
00209 dim2taylor operator/(const dim2taylor&, int);
00210
00211 dim2taylor sqr(const dim2taylor& );
00212 dim2taylor sqrt(const dim2taylor& );
00213 dim2taylor sqrt1px2(const dim2taylor& );
00214 dim2taylor sqrtx2m1(const dim2taylor& );
00215 dim2taylor sqrtp1m1(const dim2taylor& );
00216 dim2taylor pow(const dim2taylor& , const interval& );
00217 dim2taylor power(const dim2taylor& , int );
00218
00219 dim2taylor exp(const dim2taylor& );
00220 dim2taylor ln(const dim2taylor& );
00221 dim2taylor lnp1(const dim2taylor& );
00222
00223 dim2taylor sin(const dim2taylor& );
00224 dim2taylor cos(const dim2taylor& );
00225 dim2taylor tan(const dim2taylor& );
00226 dim2taylor cot(const dim2taylor& );
00227
00228 dim2taylor sinh(const dim2taylor& );
00229 dim2taylor cosh(const dim2taylor& );
00230 dim2taylor tanh(const dim2taylor& );
00231 dim2taylor coth(const dim2taylor& );
00232
00233 dim2taylor asin(const dim2taylor& );
00234 dim2taylor acos(const dim2taylor& );
00235 dim2taylor atan(const dim2taylor& );
00236 dim2taylor acot(const dim2taylor& );
00237
00238 dim2taylor asinh(const dim2taylor& );
00239 dim2taylor acosh(const dim2taylor& );
00240 dim2taylor atanh(const dim2taylor& );
00241 dim2taylor acoth(const dim2taylor& );
00242
00243 dim2taylor erf(const dim2taylor& );
00244 dim2taylor erfc(const dim2taylor& );
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255 class dim2taylor_vector{
00256 private:
00257
00258 int dim;
00259 int lb;
00260 int ub;
00261
00262 int p_el;
00263 dim2taylor* comp;
00264
00265 public:
00266
00267 dim2taylor_vector();
00268 dim2taylor_vector(int, int, int);
00269 dim2taylor_vector(const dim2taylor_vector& );
00270
00271 ~dim2taylor_vector();
00272
00273 int get_dim() const {return dim;};
00274
00275 int get_lb () const {return lb;};
00276 int get_ub () const {return ub;};
00277 int get_p_el() const {return p_el;};
00278
00279 friend int Lb(const dim2taylor_vector&);
00280 friend int Ub(const dim2taylor_vector&);
00281
00282 dim2taylor_vector& operator=(const dim2taylor_vector& );
00283 dim2taylor& operator[](int n) const;
00284
00285
00286 friend dim2taylor_vector init_var(int, ivector&);
00287
00288 };
00289
00290 int Lb(const dim2taylor_vector&);
00291 int Ub(const dim2taylor_vector&);
00292 dim2taylor_vector init_var(int, ivector&);
00293
00294 }
00295
00296 #endif