ADMB Documentation  11.1.1913
 All Classes Files Functions Variables Typedefs Friends Defines
cranfill.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: cranfill.cpp 1112 2013-07-12 21:41:41Z 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( CGNU_DOUBLE base, CGNU_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, CGNU_DOUBLE base, CGNU_DOUBLE offset)
00111   {
00112     double temp=0;
00113     for (int i=rowmin(); i<=rowmax(); i++)
00114     {
00115       elem(i,j)=base+temp;
00116       temp=temp+offset;
00117     }
00118   }
00119 
00124 void dmatrix::colfill(int j, const dvector& v)
00125   {
00126     for (int i=rowmin(); i<=rowmax(); i++)
00127     {
00128       (*this)[i][j]=v[i];
00129     }
00130   }
00131 
00136 void dmatrix::rowfill(int i, const dvector& v)
00137   {
00138     for (int j=colmin(); j<=colmax(); j++)
00139     {
00140       (*this)[i][j]=v[j];
00141     }
00142   }
00143 
00148 void dmatrix::rowfill_seqadd(const int& i, CGNU_DOUBLE base, CGNU_DOUBLE offset)
00149   {
00150     double temp=0;
00151     for (int j=colmin(); j<=colmax(); j++)
00152     {
00153       elem(i,j)=base+temp;
00154       temp=temp+offset;
00155     }
00156   }