00001
00002
00003
00004
00005
00006
00011 #include "fvar.hpp"
00012
00017 void set_value_inv(const double x,const dvector& _v, const int& _ii)
00018 {
00019 dvector& v=(dvector&) _v;
00020 int& ii=(int&) _ii;
00021 v(ii++)=x;
00022 }
00023
00028 void set_value_inv(const double u, const dvector& _x, const int& _ii,
00029 const double fmin, const double fmax)
00030 {
00031 int& ii=(int&) _ii;
00032 dvector& x=(dvector&) _x;
00033 x(ii++)=boundpin(u,fmin,fmax);
00034 }
00035
00040 void set_value_inv(const prevariable& u, const dvector& _x, const int& _ii,
00041 const double fmin, const double fmax)
00042 {
00043 dvector& x=(dvector&) _x;
00044 int& ii=(int&) _ii;
00045 x(ii++)=boundpin(u,fmin,fmax);
00046 }
00047
00052 void set_value_inv(const dvector& x,const dvector& _v, const int& _ii)
00053 {
00054 int& ii=(int&) _ii;
00055 dvector& v=(dvector&) _v;
00056 int min=x.indexmin();
00057 int max=x.indexmax();
00058 for (int i=min;i<=max;i++)
00059 {
00060 v(ii++)=x(i);
00061 }
00062 }
00063
00068 void set_value_inv(const dvector& x,const dvector& _v, const int& _ii,double s)
00069 {
00070 int& ii=(int&) _ii;
00071 dvector& v=(dvector&) _v;
00072 int min=x.indexmin();
00073 int max=x.indexmax();
00074 for (int i=min;i<=max;i++)
00075 {
00076 v(ii++)=x(i)*s;
00077 }
00078 }
00079
00084 void set_value_inv(const dvector& x, const dvector& _v, const int& _ii,
00085 const double fmin, const double fmax)
00086 {
00087 int& ii=(int&) _ii;
00088 dvector& v=(dvector&) _v;
00089 int min=x.indexmin();
00090 int max=x.indexmax();
00091 for (int i=min;i<=max;i++)
00092 {
00093 v(ii++)=boundpin(x(i),fmin,fmax);
00094 }
00095 }
00096
00101 void set_value_inv(const dvar_vector& x,const dvector& _v, const int& _ii,
00102 const double fmin, const double fmax)
00103 {
00104 int& ii=(int&) _ii;
00105 dvector& v=(dvector&) _v;
00106 int min=x.indexmin();
00107 int max=x.indexmax();
00108 for (int i=min;i<=max;i++)
00109 {
00110 v(ii++)=boundpin(x(i),fmin,fmax);
00111 }
00112 }
00113
00118 void set_value_inv(const dmatrix& x, const dvector& v, const int& ii)
00119 {
00120 int min=x.rowmin();
00121 int max=x.rowmax();
00122 if (allocated(x))
00123 {
00124 for (int i=min;i<=max;i++)
00125 {
00126 if (allocated(x(i)))
00127 set_value_inv(x(i),v,ii);
00128 }
00129 }
00130 }
00131
00136 void set_value_inv(const dmatrix& x,const dvector& v, const int& ii,
00137 const double fmin, const double fmax)
00138 {
00139 int min=x.rowmin();
00140 int max=x.rowmax();
00141 if (allocated(x))
00142 {
00143 for (int i=min;i<=max;i++)
00144 {
00145 if (allocated(x(i)))
00146 set_value_inv(x(i),v,ii,fmin,fmax);
00147 }
00148 }
00149 }
00150
00155 void set_value_inv(const d3_array& x, const dvector& v, const int& ii)
00156 {
00157 int min=x.slicemin();
00158 int max=x.slicemax();
00159 if (allocated(x))
00160 {
00161 for (int i=min;i<=max;i++)
00162 {
00163 if (allocated(x(i)))
00164 set_value_inv(x(i),v,ii);
00165 }
00166 }
00167 }
00168
00173 void set_value_inv(const d3_array& x,const dvector& v, const int& ii,
00174 const double fmin, const double fmax)
00175 {
00176 int min=x.slicemin();
00177 int max=x.slicemax();
00178 if (allocated(x))
00179 {
00180 for (int i=min;i<=max;i++)
00181 {
00182 if (allocated(x(i)))
00183 set_value_inv(x(i),v,ii,fmin,fmax);
00184 }
00185 }
00186 }
00187
00192 void set_value_inv_partial(const dvector& x, const dvector& _v, const int& _ii,
00193 int n)
00194 {
00195 int& ii=(int&) _ii;
00196 dvector& v=(dvector&) _v;
00197 int min=x.indexmin();
00198 int max=min+n-1;
00199 if (max >x.indexmax())
00200 {
00201 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00202 << endl;
00203 }
00204 for (int i=min;i<=max;i++)
00205 {
00206 v(ii++)=x(i);
00207 }
00208 }
00209
00214 void set_value_inv_partial(const dvector& x,const dvector& _v, const int& _ii,
00215 int n, const double fmin, const double fmax)
00216 {
00217 int& ii=(int&) _ii;
00218 dvector& v=(dvector&) _v;
00219 int min=x.indexmin();
00220 int max=min+n-1;
00221 if (max >x.indexmax())
00222 {
00223 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00224 << endl;
00225 }
00226 for (int i=min;i<=max;i++)
00227 {
00228 v(ii++)=boundpin(x(i),fmin,fmax);
00229 }
00230 }
00231
00236 void set_value_inv_partial(const dvar_matrix& x, const dvector& _v,
00237 const int& _ii, int n)
00238 {
00239 int mmin=x.indexmin();
00240 int mmax=x.indexmax();
00241 for (int i=mmin;i<=mmax;i++)
00242 {
00243 set_value_inv_partial(x(i),_v,_ii,n);
00244 }
00245 }
00246
00251 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00252 const int& _ii, int n)
00253 {
00254 int& ii=(int&) _ii;
00255 dvector& v=(dvector&) _v;
00256 int min=x.indexmin();
00257 int max=min+n-1;
00258 if (max >x.indexmax())
00259 {
00260 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00261 << endl;
00262 }
00263 for (int i=min;i<=max;i++)
00264 {
00265 v(ii++)=value(x(i));
00266 }
00267 }
00268
00273 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00274 const int& _ii, int n, const double fmin, const double fmax)
00275 {
00276 int& ii=(int&) _ii;
00277 int min=x.indexmin();
00278 int max=min+n-1;
00279 dvector& v=(dvector&) _v;
00280 if (max >x.indexmax())
00281 {
00282 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00283 << endl;
00284 }
00285 for (int i=min;i<=max;i++)
00286 {
00287 v(ii++)=boundpin(x(i),fmin,fmax);
00288 }
00289 }
00290
00295 void set_value_inv(const prevariable& x, const dvector& _v, const int& _ii)
00296 {
00297 int& ii=(int&) _ii;
00298 dvector& v=(dvector&) _v;
00299 v(ii++)=value(x);
00300 }
00301
00306 void set_value_inv(const dvariable& u, const dvector& _x, const int& _ii,
00307 const double fmin, const double fmax)
00308 {
00309 int& ii=(int&) _ii;
00310 dvector& x=(dvector&) _x;
00311 x(ii++)=boundpin(value(u),fmin,fmax);
00312 }
00313
00318 void set_value_inv(const dvar_vector& x, const dvector& _v, const int& _ii)
00319 {
00320 int& ii=(int&) _ii;
00321 dvector& v=(dvector&) _v;
00322 if (!(!(x)))
00323 {
00324 int min=x.indexmin();
00325 int max=x.indexmax();
00326 for (int i=min;i<=max;i++)
00327 {
00328 v(ii++)=value(x(i));
00329 }
00330 }
00331 }
00332
00337 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00338 double fmin,double fmax,double s)
00339 {
00340 int& ii=(int&) _ii;
00341 dvector& v=(dvector&) _v;
00342 int min=x.indexmin();
00343 int max=x.indexmax();
00344 for (int i=min;i<=max;i++)
00345 {
00346 v(ii++)=boundpin(x(i),fmin,fmax)*s;
00347 }
00348 }
00349
00354 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00355 double fmin,double fmax,double s,const ivector& flags)
00356 {
00357 int& ii=(int&) _ii;
00358 dvector& v=(dvector&) _v;
00359 int min=x.indexmin();
00360 int max=x.indexmax();
00361 for (int i=min;i<=max;i++)
00362 {
00363 if (flags(i))
00364 {
00365 v(ii++)=boundpin(x(i),fmin,fmax)*s;
00366 }
00367 }
00368 }
00369
00374 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00375 double s)
00376 {
00377 int& ii=(int&) _ii;
00378 dvector& v=(dvector&) _v;
00379 if (!(!(x)))
00380 {
00381 int min=x.indexmin();
00382 int max=x.indexmax();
00383 for (int i=min;i<=max;i++)
00384 {
00385 v(ii++)=value(x(i))*s;
00386 }
00387 }
00388 }
00389
00394 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii)
00395 {
00396 if (!(!(x)))
00397 {
00398 int min=x.rowmin();
00399 int max=x.rowmax();
00400 for (int i=min;i<=max;i++)
00401 {
00402 if (allocated(x(i)))
00403 set_value_inv(x(i),v,ii);
00404 }
00405 }
00406 }
00407
00412 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00413 double s)
00414 {
00415 if (!(!(x)))
00416 {
00417 int min=x.rowmin();
00418 int max=x.rowmax();
00419 for (int i=min;i<=max;i++)
00420 {
00421 if (allocated(x(i)))
00422 set_value_inv(x(i),v,ii,s);
00423 }
00424 }
00425 }
00426
00431 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii,
00432 const double fmin, const double fmax)
00433 {
00434 if (allocated(x))
00435 {
00436 int min=x.rowmin();
00437 int max=x.rowmax();
00438 for (int i=min;i<=max;i++)
00439 {
00440 if (allocated(x(i)))
00441 set_value_inv(x(i),v,ii,fmin,fmax);
00442 }
00443 }
00444 }
00445
00450 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00451 double fmin,double fmax,double s)
00452 {
00453 if (allocated(x))
00454 {
00455 int min=x.rowmin();
00456 int max=x.rowmax();
00457 for (int i=min;i<=max;i++)
00458 {
00459 if (allocated(x(i)))
00460 set_value_inv(x(i),v,ii,fmin,fmax,s);
00461 }
00462 }
00463 }
00464
00469 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii)
00470 {
00471 if (!(!(x)))
00472 {
00473 int min=x.slicemin();
00474 int max=x.slicemax();
00475 for (int i=min;i<=max;i++)
00476 {
00477 if (allocated(x(i)))
00478 set_value_inv(x(i),v,ii);
00479 }
00480 }
00481 }
00482
00487 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii,
00488 const double fmin, const double fmax)
00489 {
00490 if (!(!(x)))
00491 {
00492 int min=x.slicemin();
00493 int max=x.slicemax();
00494 for (int i=min;i<=max;i++)
00495 {
00496 if (allocated(x(i)))
00497 set_value_inv(x(i),v,ii,fmin,fmax);
00498 }
00499 }
00500 }