Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011 #include "fvar.hpp"
00012
00017 dvariable norm(const dvar3_array& m)
00018 {
00019 RETURN_ARRAYS_INCREMENT();
00020 dvariable tmp=0.0;
00021 for (int k=m.slicemin();k<=m.slicemax();k++)
00022 {
00023 tmp+=norm2(m(k));
00024 }
00025 tmp=sqrt(tmp);
00026 RETURN_ARRAYS_DECREMENT();
00027 return tmp;
00028 }
00029
00034 dvariable norm2(const dvar3_array& m)
00035 {
00036 RETURN_ARRAYS_INCREMENT();
00037 dvariable tmp=0.0;
00038 for (int k=m.slicemin();k<=m.slicemax();k++)
00039 {
00040 tmp+=norm2(m(k));
00041 }
00042 RETURN_ARRAYS_DECREMENT();
00043 return tmp;
00044 }
00045 dvariable sumsq(const dvar3_array& m) {return(norm2(m));}
00046
00051 dvar3_array exp(const dvar3_array& m)
00052 {
00053 RETURN_ARRAYS_INCREMENT();
00054 dvar3_array tmp;
00055 tmp.allocate(m);
00056 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00057 {
00058 tmp(i)=exp(m(i));
00059 }
00060 RETURN_ARRAYS_DECREMENT();
00061 return tmp;
00062 }
00063
00068 dvar3_array log(const dvar3_array& m)
00069 {
00070 RETURN_ARRAYS_INCREMENT();
00071 dvar3_array tmp;
00072 tmp.allocate(m);
00073 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00074 {
00075 tmp(i)=log(m(i));
00076 }
00077 RETURN_ARRAYS_DECREMENT();
00078 return tmp;
00079 }
00080
00085 dvar3_array sin(const dvar3_array& m)
00086 {
00087 RETURN_ARRAYS_INCREMENT();
00088 dvar3_array tmp;
00089 tmp.allocate(m);
00090 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00091 {
00092 tmp(i)=sin(m(i));
00093 }
00094 RETURN_ARRAYS_DECREMENT();
00095 return tmp;
00096 }
00097
00102 dvar3_array cos(const dvar3_array& m)
00103 {
00104 RETURN_ARRAYS_INCREMENT();
00105 dvar3_array tmp;
00106 tmp.allocate(m);
00107 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00108 {
00109 tmp(i)=cos(m(i));
00110 }
00111 RETURN_ARRAYS_DECREMENT();
00112 return tmp;
00113 }
00114
00119 dvar3_array sqrt(const dvar3_array& m)
00120 {
00121 RETURN_ARRAYS_INCREMENT();
00122 dvar3_array tmp;
00123 tmp.allocate(m);
00124 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00125 {
00126 tmp(i)=sqrt(m(i));
00127 }
00128 RETURN_ARRAYS_DECREMENT();
00129 return tmp;
00130 }
00131
00136 dvar3_array sqr(const dvar3_array& m)
00137 {
00138 RETURN_ARRAYS_INCREMENT();
00139 dvar3_array tmp;
00140 tmp.allocate(m);
00141 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00142 {
00143 tmp(i)=sqr(m(i));
00144 }
00145 RETURN_ARRAYS_DECREMENT();
00146 return tmp;
00147 }
00148
00153 dvar3_array tan(const dvar3_array& m)
00154 {
00155 RETURN_ARRAYS_INCREMENT();
00156 dvar3_array tmp;
00157 tmp.allocate(m);
00158 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00159 {
00160 tmp(i)=tan(m(i));
00161 }
00162 RETURN_ARRAYS_DECREMENT();
00163 return tmp;
00164 }
00165
00170 dvar3_array elem_prod(const dvar3_array& m1, const dvar3_array& m2)
00171 {
00172 RETURN_ARRAYS_INCREMENT();
00173 dvar3_array tmp;
00174 tmp.allocate(m1);
00175 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00176 {
00177 tmp(i)=elem_prod(m1(i),m2(i));
00178 }
00179 RETURN_ARRAYS_DECREMENT();
00180 return tmp;
00181 }
00182
00187 dvar3_array elem_div(const dvar3_array& m1, const dvar3_array& m2)
00188 {
00189 RETURN_ARRAYS_INCREMENT();
00190 dvar3_array tmp;
00191 tmp.allocate(m1);
00192 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00193 {
00194 tmp(i)=elem_div(m1(i),m2(i));
00195 }
00196 RETURN_ARRAYS_DECREMENT();
00197 return tmp;
00198 }
00199
00204 dvar3_array operator+(const dvar3_array& m1,const dvar3_array& m2)
00205 {
00206 RETURN_ARRAYS_INCREMENT();
00207 dvar3_array tmp;
00208 tmp.allocate(m1);
00209 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00210 {
00211 tmp(i)=m1(i)+m2(i);
00212 }
00213 RETURN_ARRAYS_DECREMENT();
00214 return tmp;
00215 }
00216
00221 dvar3_array operator-(const dvar3_array& m1, const dvar3_array& m2)
00222 {
00223 RETURN_ARRAYS_INCREMENT();
00224 dvar3_array tmp;
00225 tmp.allocate(m1);
00226 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00227 {
00228 tmp(i)=m1(i)-m2(i);
00229 }
00230 RETURN_ARRAYS_DECREMENT();
00231 return tmp;
00232 }
00233
00238 dvar3_array elem_prod(const d3_array& m1, const dvar3_array& m2)
00239 {
00240 RETURN_ARRAYS_INCREMENT();
00241 dvar3_array tmp;
00242 tmp.allocate(m1);
00243 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00244 {
00245 tmp(i)=elem_prod(m1(i),m2(i));
00246 }
00247 RETURN_ARRAYS_DECREMENT();
00248 return tmp;
00249 }
00250
00255 dvar3_array elem_div(const d3_array& m1, const dvar3_array& m2)
00256 {
00257 RETURN_ARRAYS_INCREMENT();
00258 dvar3_array tmp;
00259 tmp.allocate(m1);
00260 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00261 {
00262 tmp(i)=elem_div(m1(i),m2(i));
00263 }
00264 RETURN_ARRAYS_DECREMENT();
00265 return tmp;
00266 }
00267
00272 dvar3_array operator+(const d3_array& m1, const dvar3_array& m2)
00273 {
00274 RETURN_ARRAYS_INCREMENT();
00275 dvar3_array tmp;
00276 tmp.allocate(m1);
00277 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00278 {
00279 tmp(i)=m1(i)+m2(i);
00280 }
00281 RETURN_ARRAYS_DECREMENT();
00282 return tmp;
00283 }
00284
00289 dvar3_array operator-(const d3_array& m1, const dvar3_array& m2)
00290 {
00291 RETURN_ARRAYS_INCREMENT();
00292 dvar3_array tmp;
00293 tmp.allocate(m1);
00294 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00295 {
00296 tmp(i)=m1(i)-m2(i);
00297 }
00298 RETURN_ARRAYS_DECREMENT();
00299 return tmp;
00300 }