ADMB Documentation  11.1.1916
 All Classes Files Functions Variables Typedefs Friends Defines
f3arr2.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: f3arr2.cpp 1657 2014-02-19 23:22:28Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00011 #include "fvar.hpp"
00012 
00017 dvariable norm(const dvar3_array& m)
00018     {
00019       RETURN_ARRAYS_INCREMENT();
00020       dvariable tmp=0.0;
00021       for (int k=m.slicemin();k<=m.slicemax();k++)
00022       {
00023         tmp+=norm2(m(k));
00024       }
00025       tmp=sqrt(tmp);
00026       RETURN_ARRAYS_DECREMENT();
00027       return tmp;
00028     }
00029 
00034 dvariable norm2(const dvar3_array& m)
00035     {
00036       RETURN_ARRAYS_INCREMENT();
00037       dvariable tmp=0.0;
00038       for (int k=m.slicemin();k<=m.slicemax();k++)
00039       {
00040         tmp+=norm2(m(k));
00041       }
00042       RETURN_ARRAYS_DECREMENT();
00043       return tmp;
00044     }
00045 dvariable sumsq(const dvar3_array& m) {return(norm2(m));}
00046 
00051 dvar3_array exp(const dvar3_array& m)
00052    {
00053      RETURN_ARRAYS_INCREMENT();
00054      dvar3_array tmp;
00055      tmp.allocate(m);
00056      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00057      {
00058        tmp(i)=exp(m(i));
00059      }
00060      RETURN_ARRAYS_DECREMENT();
00061      return tmp;
00062    }
00063 
00068 dvar3_array log(const dvar3_array& m)
00069    {
00070      RETURN_ARRAYS_INCREMENT();
00071      dvar3_array tmp;
00072      tmp.allocate(m);
00073      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00074      {
00075        tmp(i)=log(m(i));
00076      }
00077      RETURN_ARRAYS_DECREMENT();
00078      return tmp;
00079    }
00080 
00085 dvar3_array sin(const dvar3_array& m)
00086    {
00087      RETURN_ARRAYS_INCREMENT();
00088      dvar3_array tmp;
00089      tmp.allocate(m);
00090      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00091      {
00092        tmp(i)=sin(m(i));
00093      }
00094      RETURN_ARRAYS_DECREMENT();
00095      return tmp;
00096    }
00097 
00102 dvar3_array cos(const dvar3_array& m)
00103    {
00104      RETURN_ARRAYS_INCREMENT();
00105      dvar3_array tmp;
00106      tmp.allocate(m);
00107      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00108      {
00109        tmp(i)=cos(m(i));
00110      }
00111      RETURN_ARRAYS_DECREMENT();
00112      return tmp;
00113    }
00114 
00119 dvar3_array sqrt(const dvar3_array& m)
00120    {
00121      RETURN_ARRAYS_INCREMENT();
00122      dvar3_array tmp;
00123      tmp.allocate(m);
00124      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00125      {
00126        tmp(i)=sqrt(m(i));
00127      }
00128      RETURN_ARRAYS_DECREMENT();
00129      return tmp;
00130    }
00131 
00136 dvar3_array sqr(const dvar3_array& m)
00137    {
00138      RETURN_ARRAYS_INCREMENT();
00139      dvar3_array tmp;
00140      tmp.allocate(m);
00141      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00142      {
00143        tmp(i)=sqr(m(i));
00144      }
00145      RETURN_ARRAYS_DECREMENT();
00146      return tmp;
00147    }
00148 
00153 dvar3_array tan(const dvar3_array& m)
00154    {
00155      RETURN_ARRAYS_INCREMENT();
00156      dvar3_array tmp;
00157      tmp.allocate(m);
00158      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00159      {
00160        tmp(i)=tan(m(i));
00161      }
00162      RETURN_ARRAYS_DECREMENT();
00163      return tmp;
00164    }
00165 
00170 dvar3_array elem_prod(const dvar3_array& m1, const dvar3_array& m2)
00171    {
00172      RETURN_ARRAYS_INCREMENT();
00173      dvar3_array tmp;
00174      tmp.allocate(m1);
00175      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00176      {
00177        tmp(i)=elem_prod(m1(i),m2(i));
00178      }
00179      RETURN_ARRAYS_DECREMENT();
00180      return tmp;
00181    }
00182 
00187 dvar3_array elem_div(const dvar3_array& m1, const dvar3_array& m2)
00188    {
00189      RETURN_ARRAYS_INCREMENT();
00190      dvar3_array tmp;
00191      tmp.allocate(m1);
00192      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00193      {
00194        tmp(i)=elem_div(m1(i),m2(i));
00195      }
00196      RETURN_ARRAYS_DECREMENT();
00197      return tmp;
00198    }
00199 
00204 dvar3_array operator+(const dvar3_array& m1,const dvar3_array& m2)
00205    {
00206      RETURN_ARRAYS_INCREMENT();
00207      dvar3_array tmp;
00208      tmp.allocate(m1);
00209      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00210      {
00211        tmp(i)=m1(i)+m2(i);
00212      }
00213      RETURN_ARRAYS_DECREMENT();
00214      return tmp;
00215    }
00216 
00221 dvar3_array operator-(const dvar3_array& m1, const dvar3_array& m2)
00222    {
00223      RETURN_ARRAYS_INCREMENT();
00224      dvar3_array tmp;
00225      tmp.allocate(m1);
00226      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00227      {
00228        tmp(i)=m1(i)-m2(i);
00229      }
00230      RETURN_ARRAYS_DECREMENT();
00231      return tmp;
00232    }
00233 
00238 dvar3_array elem_prod(const d3_array& m1, const dvar3_array& m2)
00239    {
00240      RETURN_ARRAYS_INCREMENT();
00241      dvar3_array tmp;
00242      tmp.allocate(m1);
00243      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00244      {
00245        tmp(i)=elem_prod(m1(i),m2(i));
00246      }
00247      RETURN_ARRAYS_DECREMENT();
00248      return tmp;
00249    }
00250 
00255 dvar3_array elem_div(const d3_array& m1, const dvar3_array& m2)
00256    {
00257      RETURN_ARRAYS_INCREMENT();
00258      dvar3_array tmp;
00259      tmp.allocate(m1);
00260      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00261      {
00262        tmp(i)=elem_div(m1(i),m2(i));
00263      }
00264      RETURN_ARRAYS_DECREMENT();
00265      return tmp;
00266    }
00267 
00272 dvar3_array operator+(const d3_array& m1, const dvar3_array& m2)
00273    {
00274      RETURN_ARRAYS_INCREMENT();
00275      dvar3_array tmp;
00276      tmp.allocate(m1);
00277      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00278      {
00279        tmp(i)=m1(i)+m2(i);
00280      }
00281      RETURN_ARRAYS_DECREMENT();
00282      return tmp;
00283    }
00284 
00289 dvar3_array operator-(const d3_array& m1, const dvar3_array& m2)
00290    {
00291      RETURN_ARRAYS_INCREMENT();
00292      dvar3_array tmp;
00293      tmp.allocate(m1);
00294      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00295      {
00296        tmp(i)=m1(i)-m2(i);
00297      }
00298      RETURN_ARRAYS_DECREMENT();
00299      return tmp;
00300    }