ADMB Documentation  11.1.1916
 All Classes Files Functions Variables Typedefs Friends Defines
setin.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: setin.cpp 1708 2014-02-28 21:43:41Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
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,
00029   CGNU_DOUBLE fmin, 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,
00041   CGNU_DOUBLE fmin, 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,
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   #ifdef SAFE_ARRAYS
00200     if (max >x.indexmax())
00201     {
00202       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00203            << endl;
00204     }
00205   #endif
00206   for (int i=min;i<=max;i++)
00207   {
00208     v(ii++)=x(i);
00209   }
00210 }
00211 
00216 void set_value_inv_partial(const dvector& x,const dvector& _v, const int& _ii,
00217   int n, CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00218 {
00219   int& ii=(int&) _ii;
00220   dvector& v=(dvector&) _v;
00221   int min=x.indexmin();
00222   int max=min+n-1;
00223   #ifdef SAFE_ARRAYS
00224     if (max >x.indexmax())
00225     {
00226       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00227            << endl;
00228     }
00229   #endif
00230   for (int i=min;i<=max;i++)
00231   {
00232     v(ii++)=boundpin(x(i),fmin,fmax);
00233   }
00234 }
00235 
00240 void set_value_inv_partial(const dvar_matrix& x, const dvector& _v,
00241   const int& _ii, int n)
00242 {
00243   int mmin=x.indexmin();
00244   int mmax=x.indexmax();
00245   for (int i=mmin;i<=mmax;i++)
00246   {
00247     set_value_inv_partial(x(i),_v,_ii,n);
00248   }
00249 }
00250 
00255 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00256   const int& _ii, int n)
00257 {
00258   int& ii=(int&) _ii;
00259   dvector& v=(dvector&) _v;
00260   int min=x.indexmin();
00261   int max=min+n-1;
00262   #ifdef SAFE_ARRAYS
00263     if (max >x.indexmax())
00264     {
00265       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00266            << endl;
00267     }
00268   #endif
00269   for (int i=min;i<=max;i++)
00270   {
00271     v(ii++)=value(x(i));
00272   }
00273 }
00274 
00279 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00280   const int& _ii, int n, CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00281 {
00282   int& ii=(int&) _ii;
00283   int min=x.indexmin();
00284   int max=min+n-1;
00285   dvector& v=(dvector&) _v;
00286   #ifdef SAFE_ARRAYS
00287     if (max >x.indexmax())
00288     {
00289       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00290            << endl;
00291     }
00292   #endif
00293   for (int i=min;i<=max;i++)
00294   {
00295     v(ii++)=boundpin(x(i),fmin,fmax);
00296   }
00297 }
00298 
00303 void set_value_inv(const prevariable& x, const dvector& _v, const int& _ii)
00304 {
00305   int& ii=(int&) _ii;
00306   dvector& v=(dvector&) _v;
00307   v(ii++)=value(x);
00308 }
00309 
00314 void set_value_inv(const dvariable& u, const dvector& _x, const int& _ii,
00315   CGNU_DOUBLE fmin, CGNU_DOUBLE fmax)
00316 {
00317   int& ii=(int&) _ii;
00318   dvector& x=(dvector&) _x;
00319   x(ii++)=boundpin(value(u),fmin,fmax);
00320 }
00321 
00326 void set_value_inv(const dvar_vector& x, const dvector& _v, const int& _ii)
00327 {
00328   int& ii=(int&) _ii;
00329   dvector& v=(dvector&) _v;
00330   if (!(!(x)))
00331   {
00332     int min=x.indexmin();
00333     int max=x.indexmax();
00334     for (int i=min;i<=max;i++)
00335     {
00336       v(ii++)=value(x(i));
00337     }
00338   }
00339 }
00340 
00345 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00346   double fmin,double fmax,double s)
00347 {
00348   int& ii=(int&) _ii;
00349   dvector& v=(dvector&) _v;
00350   int min=x.indexmin();
00351   int max=x.indexmax();
00352   for (int i=min;i<=max;i++)
00353   {
00354     v(ii++)=boundpin(x(i),fmin,fmax)*s;
00355   }
00356 }
00357 
00362 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00363   double fmin,double fmax,double s,const ivector& flags)
00364 {
00365   int& ii=(int&) _ii;
00366   dvector& v=(dvector&) _v;
00367   int min=x.indexmin();
00368   int max=x.indexmax();
00369   for (int i=min;i<=max;i++)
00370   {
00371     if (flags(i))
00372     {
00373       v(ii++)=boundpin(x(i),fmin,fmax)*s;
00374     }
00375   }
00376 }
00377 
00382 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00383   double s)
00384 {
00385   int& ii=(int&) _ii;
00386   dvector& v=(dvector&) _v;
00387   if (!(!(x)))
00388   {
00389     int min=x.indexmin();
00390     int max=x.indexmax();
00391     for (int i=min;i<=max;i++)
00392     {
00393       v(ii++)=value(x(i))*s;
00394     }
00395   }
00396 }
00397 
00402 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii)
00403 {
00404   if (!(!(x)))
00405   {
00406     int min=x.rowmin();
00407     int max=x.rowmax();
00408     for (int i=min;i<=max;i++)
00409     {
00410       if (allocated(x(i)))
00411         set_value_inv(x(i),v,ii);
00412     }
00413   }
00414 }
00415 
00420 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00421   double s)
00422 {
00423   if (!(!(x)))
00424   {
00425     int min=x.rowmin();
00426     int max=x.rowmax();
00427     for (int i=min;i<=max;i++)
00428     {
00429       if (allocated(x(i)))
00430         set_value_inv(x(i),v,ii,s);
00431     }
00432   }
00433 }
00434 
00439 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii,
00440   CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00441 {
00442   if (allocated(x))
00443   {
00444     int min=x.rowmin();
00445     int max=x.rowmax();
00446     for (int i=min;i<=max;i++)
00447     {
00448       if (allocated(x(i)))
00449         set_value_inv(x(i),v,ii,fmin,fmax);
00450     }
00451   }
00452 }
00453 
00458 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00459   double fmin,double fmax,double s)
00460 {
00461   if (allocated(x))
00462   {
00463     int min=x.rowmin();
00464     int max=x.rowmax();
00465     for (int i=min;i<=max;i++)
00466     {
00467       if (allocated(x(i)))
00468         set_value_inv(x(i),v,ii,fmin,fmax,s);
00469     }
00470   }
00471 }
00472 
00477 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii)
00478 {
00479   if (!(!(x)))
00480   {
00481     int min=x.slicemin();
00482     int max=x.slicemax();
00483     for (int i=min;i<=max;i++)
00484     {
00485       if (allocated(x(i)))
00486         set_value_inv(x(i),v,ii);
00487     }
00488   }
00489 }
00490 
00495 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii,
00496   CGNU_DOUBLE fmin,CGNU_DOUBLE fmax)
00497 {
00498   if (!(!(x)))
00499   {
00500     int min=x.slicemin();
00501     int max=x.slicemax();
00502     for (int i=min;i<=max;i++)
00503     {
00504       if (allocated(x(i)))
00505         set_value_inv(x(i),v,ii,fmin,fmax);
00506     }
00507   }
00508 }