00001
00002
00003
00004
00005
00006
00011 #include "fvar.hpp"
00012
00017 void set_value_inv( CGNU_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( CGNU_DOUBLE u,const dvector& _x,const int& _ii, CGNU_DOUBLE fmin,
00029 CGNU_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,CGNU_DOUBLE fmin,
00041 CGNU_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 CGNU_DOUBLE fmin,CGNU_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 CGNU_DOUBLE fmin,CGNU_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 CGNU_DOUBLE fmin,CGNU_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 CGNU_DOUBLE fmin,CGNU_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, int n)
00193 {
00194 int& ii=(int&) _ii;
00195 dvector& v=(dvector&) _v;
00196 int min=x.indexmin();
00197 int max=min+n-1;
00198 #ifdef SAFE_ARRAYS
00199 if (max >x.indexmax())
00200 {
00201 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00202 << endl;
00203 }
00204 #endif
00205 for (int i=min;i<=max;i++)
00206 {
00207 v(ii++)=x(i);
00208 }
00209 }
00210
00215 void set_value_inv_partial(const dvector& x,const dvector& _v, const int& _ii, int n,
00216 CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00217 {
00218 int& ii=(int&) _ii;
00219 dvector& v=(dvector&) _v;
00220 int min=x.indexmin();
00221 int max=min+n-1;
00222 #ifdef SAFE_ARRAYS
00223 if (max >x.indexmax())
00224 {
00225 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00226 << endl;
00227 }
00228 #endif
00229 for (int i=min;i<=max;i++)
00230 {
00231 v(ii++)=boundpin(x(i),fmin,fmax);
00232 }
00233 }
00234
00239 void set_value_inv_partial(const dvar_matrix& x, const dvector& _v,
00240 const int& _ii, int n)
00241 {
00242 int mmin=x.indexmin();
00243 int mmax=x.indexmax();
00244 for (int i=mmin;i<=mmax;i++)
00245 {
00246 set_value_inv_partial(x(i),_v,_ii,n);
00247 }
00248 }
00249
00254 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00255 const int& _ii, int n)
00256 {
00257 int& ii=(int&) _ii;
00258 dvector& v=(dvector&) _v;
00259 int min=x.indexmin();
00260 int max=min+n-1;
00261 #ifdef SAFE_ARRAYS
00262 if (max >x.indexmax())
00263 {
00264 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00265 << endl;
00266 }
00267 #endif
00268 for (int i=min;i<=max;i++)
00269 {
00270 v(ii++)=value(x(i));
00271 }
00272 }
00273
00278 void set_value_inv_partial(const dvar_vector& x, const dvector& _v, const int& _ii, int n,
00279 CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00280 {
00281 int& ii=(int&) _ii;
00282 int min=x.indexmin();
00283 int max=min+n-1;
00284 dvector& v=(dvector&) _v;
00285 #ifdef SAFE_ARRAYS
00286 if (max >x.indexmax())
00287 {
00288 cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00289 << endl;
00290 }
00291 #endif
00292 for (int i=min;i<=max;i++)
00293 {
00294 v(ii++)=boundpin(x(i),fmin,fmax);
00295 }
00296 }
00297
00302 void set_value_inv(const prevariable& x, const dvector& _v, const int& _ii)
00303 {
00304 int& ii=(int&) _ii;
00305 dvector& v=(dvector&) _v;
00306 v(ii++)=value(x);
00307 }
00308
00313 void set_value_inv(const dvariable& u, const dvector& _x, const int& _ii, CGNU_DOUBLE fmin,
00314 CGNU_DOUBLE fmax)
00315 {
00316 int& ii=(int&) _ii;
00317 dvector& x=(dvector&) _x;
00318 x(ii++)=boundpin(value(u),fmin,fmax);
00319 }
00320
00325 void set_value_inv(const dvar_vector& x, const dvector& _v, const int& _ii)
00326 {
00327 int& ii=(int&) _ii;
00328 dvector& v=(dvector&) _v;
00329 if (!(!(x)))
00330 {
00331 int min=x.indexmin();
00332 int max=x.indexmax();
00333 for (int i=min;i<=max;i++)
00334 {
00335 v(ii++)=value(x(i));
00336 }
00337 }
00338 }
00339
00344 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00345 double fmin,double fmax,double s)
00346 {
00347 int& ii=(int&) _ii;
00348 dvector& v=(dvector&) _v;
00349 int min=x.indexmin();
00350 int max=x.indexmax();
00351 for (int i=min;i<=max;i++)
00352 {
00353 v(ii++)=boundpin(x(i),fmin,fmax)*s;
00354 }
00355 }
00356
00361 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00362 double fmin,double fmax,double s,const ivector& flags)
00363 {
00364 int& ii=(int&) _ii;
00365 dvector& v=(dvector&) _v;
00366 int min=x.indexmin();
00367 int max=x.indexmax();
00368 for (int i=min;i<=max;i++)
00369 {
00370 if (flags(i))
00371 {
00372 v(ii++)=boundpin(x(i),fmin,fmax)*s;
00373 }
00374 }
00375 }
00376
00381 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,double s)
00382 {
00383 int& ii=(int&) _ii;
00384 dvector& v=(dvector&) _v;
00385 if (!(!(x)))
00386 {
00387 int min=x.indexmin();
00388 int max=x.indexmax();
00389 for (int i=min;i<=max;i++)
00390 {
00391 v(ii++)=value(x(i))*s;
00392 }
00393 }
00394 }
00395
00400 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii)
00401 {
00402 if (!(!(x)))
00403 {
00404 int min=x.rowmin();
00405 int max=x.rowmax();
00406 for (int i=min;i<=max;i++)
00407 {
00408 if (allocated(x(i)))
00409 set_value_inv(x(i),v,ii);
00410 }
00411 }
00412 }
00413
00418 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00419 double s)
00420 {
00421 if (!(!(x)))
00422 {
00423 int min=x.rowmin();
00424 int max=x.rowmax();
00425 for (int i=min;i<=max;i++)
00426 {
00427 if (allocated(x(i)))
00428 set_value_inv(x(i),v,ii,s);
00429 }
00430 }
00431 }
00432
00437 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii,
00438 CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00439 {
00440 if (allocated(x))
00441 {
00442 int min=x.rowmin();
00443 int max=x.rowmax();
00444 for (int i=min;i<=max;i++)
00445 {
00446 if (allocated(x(i)))
00447 set_value_inv(x(i),v,ii,fmin,fmax);
00448 }
00449 }
00450 }
00451
00456 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00457 double fmin,double fmax,double s)
00458 {
00459 if (allocated(x))
00460 {
00461 int min=x.rowmin();
00462 int max=x.rowmax();
00463 for (int i=min;i<=max;i++)
00464 {
00465 if (allocated(x(i)))
00466 set_value_inv(x(i),v,ii,fmin,fmax,s);
00467 }
00468 }
00469 }
00470
00475 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii)
00476 {
00477 if (!(!(x)))
00478 {
00479 int min=x.slicemin();
00480 int max=x.slicemax();
00481 for (int i=min;i<=max;i++)
00482 {
00483 if (allocated(x(i)))
00484 set_value_inv(x(i),v,ii);
00485 }
00486 }
00487 }
00488
00493 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii,
00494 CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00495 {
00496 if (!(!(x)))
00497 {
00498 int min=x.slicemin();
00499 int max=x.slicemax();
00500 for (int i=min;i<=max;i++)
00501 {
00502 if (allocated(x(i)))
00503 set_value_inv(x(i),v,ii,fmin,fmax);
00504 }
00505 }
00506 }