Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011 #include "fvar.hpp"
00012
00017 dvar3_array elem_prod(const dvar3_array& m1, const d3_array& m2)
00018 {
00019 RETURN_ARRAYS_INCREMENT();
00020 dvar3_array tmp;
00021 tmp.allocate(m1);
00022 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00023 {
00024 tmp(i)=elem_prod(m1(i),m2(i));
00025 }
00026 RETURN_ARRAYS_DECREMENT();
00027 return tmp;
00028 }
00029
00034 dvar3_array elem_div(const dvar3_array& m1, const d3_array& m2)
00035 {
00036 RETURN_ARRAYS_INCREMENT();
00037 dvar3_array tmp;
00038 tmp.allocate(m1);
00039 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00040 {
00041 tmp(i)=elem_div(m1(i),m2(i));
00042 }
00043 RETURN_ARRAYS_DECREMENT();
00044 return tmp;
00045 }
00046
00051 dvar3_array operator+(const dvar3_array& m1, const d3_array& m2)
00052 {
00053 RETURN_ARRAYS_INCREMENT();
00054 dvar3_array tmp;
00055 tmp.allocate(m1);
00056 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00057 {
00058 tmp(i)=m1(i)+m2(i);
00059 }
00060 RETURN_ARRAYS_DECREMENT();
00061 return tmp;
00062 }
00063
00068 dvar3_array operator-(const dvar3_array& m1, const d3_array& m2)
00069 {
00070 RETURN_ARRAYS_INCREMENT();
00071 dvar3_array tmp;
00072 tmp.allocate(m1);
00073 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00074 {
00075 tmp(i)=m1(i)-m2(i);
00076 }
00077 RETURN_ARRAYS_DECREMENT();
00078 return tmp;
00079 }
00080
00085 dvar3_array operator+(const dvariable& d, const d3_array& m2)
00086 {
00087 RETURN_ARRAYS_INCREMENT();
00088 dvar3_array tmp;
00089 tmp.allocate(m2);
00090 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00091 {
00092 tmp(i)=d+m2(i);
00093 }
00094 RETURN_ARRAYS_DECREMENT();
00095 return tmp;
00096 }
00097
00102 dvar3_array operator-(const dvariable& d, const d3_array& m2)
00103 {
00104 RETURN_ARRAYS_INCREMENT();
00105 dvar3_array tmp;
00106 tmp.allocate(m2);
00107 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00108 {
00109 tmp(i)=d-m2(i);
00110 }
00111 RETURN_ARRAYS_DECREMENT();
00112 return tmp;
00113 }
00114
00119 dvar3_array operator*(const dvariable& d, const d3_array& m2)
00120 {
00121 RETURN_ARRAYS_INCREMENT();
00122 dvar3_array tmp;
00123 tmp.allocate(m2);
00124 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00125 {
00126 tmp(i)=d*m2(i);
00127 }
00128 RETURN_ARRAYS_DECREMENT();
00129 return tmp;
00130 }
00131
00136 dvar3_array operator*(const dvariable& d, const dvar3_array& m2)
00137 {
00138 RETURN_ARRAYS_INCREMENT();
00139 dvar3_array tmp;
00140 tmp.allocate(m2);
00141 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00142 {
00143 tmp(i)=d*m2(i);
00144 }
00145 RETURN_ARRAYS_DECREMENT();
00146 return tmp;
00147 }
00148
00153 dvar3_array operator*(double d, const dvar3_array& m2)
00154 {
00155 RETURN_ARRAYS_INCREMENT();
00156 dvar3_array tmp;
00157 tmp.allocate(m2);
00158 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00159 {
00160 tmp(i)=d*m2(i);
00161 }
00162 RETURN_ARRAYS_DECREMENT();
00163 return tmp;
00164 }
00165
00170 dvar3_array operator-(const dvar3_array& m1, const dvariable& d)
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)=m1(i)-d;
00178 }
00179 RETURN_ARRAYS_DECREMENT();
00180 return tmp;
00181 }
00182
00187 dvar3_array operator+(const dvar3_array& m1, const dvariable& d)
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)=m1(i)+d;
00195 }
00196 RETURN_ARRAYS_DECREMENT();
00197 return tmp;
00198 }
00199
00204 dvar3_array operator+(double d, const dvar3_array& m1)
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)=d+m1(i);
00212 }
00213 RETURN_ARRAYS_DECREMENT();
00214 return tmp;
00215 }
00216
00221 dvar3_array operator*(const dvar3_array& m1, const dvariable& d)
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)*d;
00229 }
00230 RETURN_ARRAYS_DECREMENT();
00231 return tmp;
00232 }
00233
00238 dvar3_array operator+(const dvariable& d1, const dvar3_array& m1)
00239 {
00240 RETURN_ARRAYS_INCREMENT();
00241 dvar3_array tmp;
00242 tmp.allocate(m1);
00243
00244 for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00245 {
00246 tmp(i)=m1(i)+d1;
00247 }
00248
00249 RETURN_ARRAYS_DECREMENT();
00250 return tmp;
00251 }