Go to the documentation of this file.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
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #if !defined(__DF3FUN__)
00044 # define __DF3FUN__
00045
00046 class df3_one_variable
00047 {
00048 double v[4];
00049 public:
00050 static df1b2variable* ind_var;
00051
00052 df3_one_variable();
00053 df3_one_variable(const df3_one_variable&);
00054
00055 double* get_u(void) const {return (double*)(&(v[0])); }
00056 double* get_udot(void) const {return (double*)(&(v[1])); }
00057 double* get_udot2(void) const {return (double*)(&(v[2])); }
00058 double* get_udot3(void) const {return (double*)(&(v[3])); }
00059
00060 df3_one_variable& operator=(const df3_one_variable& v);
00061 df3_one_variable& operator=(double v);
00062 df3_one_variable& operator+=(const df3_one_variable& v);
00063 df3_one_variable& operator-=(const df3_one_variable& v);
00064 df3_one_variable& operator-=(double);
00065 df3_one_variable& operator*=(const df3_one_variable& v);
00066 df3_one_variable& operator/=(const df3_one_variable& v);
00067 };
00068
00069 inline double value(const df3_one_variable& x) { return double(*x.get_u()); }
00070
00071 class init_df3_one_variable : public df3_one_variable
00072 {
00073 public:
00074 init_df3_one_variable(const df1b2variable& );
00075 init_df3_one_variable(double );
00076 };
00077
00078
00079
00080 class df3_one_vector
00081 {
00082 int index_min;
00083 int index_max;
00084 vector_shapex * shape;
00085 df3_one_variable * v;
00086 public:
00087 int indexmin(void) const { return int(index_min); }
00088 int indexmax(void) const { return int(index_max); }
00089 df3_one_vector(int min,int max);
00090 df3_one_vector(void);
00091 void allocate(void);
00092 void allocate(int min,int max);
00093 df3_one_variable& operator () (int i) const
00094 {
00095 return (df3_one_variable&) (*(v+i));
00096 }
00097 df3_one_variable& operator [] (int i) const
00098 {
00099 return (df3_one_variable&) (*(v+i));
00100 }
00101 void initialize(void);
00102 void deallocate(void);
00103 ~df3_one_vector();
00104 df3_one_vector(const df3_one_vector& m2);
00105 };
00106
00107 dvector value(const df3_one_vector& v);
00108
00109 dvector first_derivatives(const df3_one_vector& v);
00110
00111 dvector second_derivatives(const df3_one_vector& v);
00112
00113 dvector third_derivatives(const df3_one_vector& v);
00114
00115 class df3_one_matrix
00116 {
00117 int index_min;
00118 int index_max;
00119 mat_shapex * shape;
00120 df3_one_vector * v;
00121 public:
00122 int indexmin(void) const { return int(index_min); }
00123 int indexmax(void) const { return int(index_max); }
00124 df3_one_matrix(int rmin,int rmax,int cmin,int cmax);
00125 df3_one_vector& operator () (int i) const
00126 {
00127 return (df3_one_vector&) *(v+i);
00128 }
00129 df3_one_vector& operator [] (int i) const
00130 {
00131 return (df3_one_vector&) *(v+i);
00132 }
00133 df3_one_variable& operator () (int i,int j) const
00134 {
00135 return (df3_one_variable&) (*(v+i))(j);
00136 }
00137 void initialize(void);
00138
00139 void deallocate(void);
00140 ~df3_one_matrix();
00141 df3_one_matrix(const df3_one_matrix& m2);
00142 };
00143
00144 dmatrix value(const df3_one_matrix& v);
00145
00146 dmatrix first_derivatives(const df3_one_matrix& v);
00147 dmatrix second_derivatives(const df3_one_matrix& v);
00148 dmatrix third_derivatives(const df3_one_matrix& v);
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170 df3_one_variable sqrt(const df3_one_variable& x);
00171 df3_one_variable exp(const df3_one_variable& x);
00172 df3_one_variable log(const df3_one_variable& x);
00173 df3_one_variable inv(const df3_one_variable& x);
00174 df3_one_variable operator * (const df3_one_variable& x,
00175 const df3_one_variable& y);
00176 df3_one_variable operator * (double x,
00177 const df3_one_variable& y);
00178 df3_one_variable operator * (const df3_one_variable& x,
00179 double y);
00180 df3_one_variable operator / (const df3_one_variable& x,
00181 const df3_one_variable& y);
00182
00183 df3_one_variable operator / (const double x,const df3_one_variable& y);
00184
00185 df3_one_variable operator / (const df3_one_variable& x,
00186 const double y);
00187
00188 df3_one_variable operator + (const double x,
00189 const df3_one_variable& y);
00190
00191 df3_one_variable operator + (const df3_one_variable& x,
00192 const double y);
00193
00194 df3_one_variable operator + (const df3_one_variable& x,
00195 const df3_one_variable& y);
00196
00197 df3_one_variable operator - (const df3_one_variable& x,
00198 double);
00199 df3_one_variable operator - (const df3_one_variable& x,
00200 const df3_one_variable& y);
00201
00202 df3_one_variable operator - (const df3_one_variable& v);
00203 df3_one_matrix choleski_decomp(const df3_one_matrix& MM);
00204 #endif // __DF3FUN__