ADMB Documentation  11.1.1060
 All Classes Files Functions Variables Typedefs Friends Defines
setin.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: setin.cpp 542 2012-07-10 21:04:06Z 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, 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 }