ADMB Documentation  11.1.2192
 All Classes Files Functions Variables Typedefs Friends Defines
cranfill.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: cranfill.cpp 1944 2014-04-28 22:27:45Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00011 #include <fvar.hpp>
00012 
00013 #ifdef __TURBOC__
00014   #pragma hdrstop
00015   #include <iostream.h>
00016 #endif
00017 
00018 #ifdef __ZTC__
00019   #include <iostream.hpp>
00020 #endif
00021 
00022 #include <math.h>
00023 
00028 double var(const dvector& v)
00029   {
00030     double tmp;
00031     tmp=norm(v)/sqrt(double(v.size()));
00032     double tmp1;
00033     tmp1=mean(v);
00034     return(tmp*tmp-tmp1*tmp1);
00035   }
00036 
00041 double std_dev(const dvector& v)
00042   {
00043     double tmp;
00044     tmp=norm(v)/sqrt(double(v.size()));
00045     double tmp1;
00046     tmp1=mean(v);
00047     return(sqrt(tmp*tmp-tmp1*tmp1));
00048   }
00049 
00054 double mean(const dvector& v)
00055   {
00056     double tmp=0;
00057     for (int i=v.indexmin(); i<=v.indexmax(); i++)
00058     {
00059       tmp+=v.elem(i);
00060     }
00061     return(tmp/v.size());
00062   }
00063 
00068   void dvector::fill_seqadd(const double base, const double offset)
00069   {
00070     double temp=0;
00071     for (int i=indexmin(); i<=indexmax(); i++)
00072     {
00073        elem(i)=base+temp;
00074        temp=temp+offset;
00075     }
00076   }
00077 
00082   void ivector::fill_seqadd(int base, int offset)
00083   {
00084     int temp=0;
00085     for (int i=indexmin(); i<=indexmax(); i++)
00086     {
00087        elem(i)=base+temp;
00088        temp=temp+offset;
00089     }
00090   }
00091 
00096 void lvector::fill_seqadd(const AD_LONG_INT& base, const AD_LONG_INT& offset)
00097   {
00098     long int temp=0;
00099     for (int i=indexmin(); i<=indexmax(); i++)
00100     {
00101        elem(i)=base+temp;
00102        temp=temp+offset;
00103     }
00104   }
00105 
00110 void dmatrix::colfill_seqadd(const int& j, const double base,
00111   const double offset)
00112   {
00113     double temp=0;
00114     for (int i=rowmin(); i<=rowmax(); i++)
00115     {
00116       elem(i,j)=base+temp;
00117       temp=temp+offset;
00118     }
00119   }
00120 
00125 void dmatrix::colfill(int j, const dvector& v)
00126   {
00127     for (int i=rowmin(); i<=rowmax(); i++)
00128     {
00129       (*this)[i][j]=v[i];
00130     }
00131   }
00132 
00137 void dmatrix::rowfill(int i, const dvector& v)
00138   {
00139     for (int j=colmin(); j<=colmax(); j++)
00140     {
00141       (*this)[i][j]=v[j];
00142     }
00143   }
00144 
00149 void dmatrix::rowfill_seqadd(const int& i, const double base,
00150   const double offset)
00151   {
00152     double temp=0;
00153     for (int j=colmin(); j<=colmax(); j++)
00154     {
00155       elem(i,j)=base+temp;
00156       temp=temp+offset;
00157     }
00158   }