ADMB Documentation  11.5.3197
 All Classes Files Functions Variables Typedefs Friends Defines
f3arr9.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id$
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00011 #include "fvar.hpp"
00012 
00017 dvar3_array elem_prod(const dvar3_array& m1, const d3_array& m2)
00018    {
00019      RETURN_ARRAYS_INCREMENT();
00020      dvar3_array tmp;
00021      tmp.allocate(m1);
00022      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00023      {
00024        tmp(i)=elem_prod(m1(i),m2(i));
00025      }
00026      RETURN_ARRAYS_DECREMENT();
00027      return tmp;
00028    }
00029 
00034 dvar3_array elem_div(const dvar3_array& m1, const d3_array& m2)
00035    {
00036      RETURN_ARRAYS_INCREMENT();
00037      dvar3_array tmp;
00038      tmp.allocate(m1);
00039      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00040      {
00041        tmp(i)=elem_div(m1(i),m2(i));
00042      }
00043      RETURN_ARRAYS_DECREMENT();
00044      return tmp;
00045    }
00046 
00051 dvar3_array operator+(const dvar3_array& m1, const d3_array& m2)
00052    {
00053      RETURN_ARRAYS_INCREMENT();
00054      dvar3_array tmp;
00055      tmp.allocate(m1);
00056      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00057      {
00058        tmp(i)=m1(i)+m2(i);
00059      }
00060      RETURN_ARRAYS_DECREMENT();
00061      return tmp;
00062    }
00063 
00068 dvar3_array operator-(const dvar3_array& m1, const d3_array& m2)
00069    {
00070      RETURN_ARRAYS_INCREMENT();
00071      dvar3_array tmp;
00072      tmp.allocate(m1);
00073      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00074      {
00075        tmp(i)=m1(i)-m2(i);
00076      }
00077      RETURN_ARRAYS_DECREMENT();
00078      return tmp;
00079    }
00080 
00085 dvar3_array operator+(const dvariable& d, const d3_array& m2)
00086    {
00087      RETURN_ARRAYS_INCREMENT();
00088      dvar3_array tmp;
00089      tmp.allocate(m2);
00090      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00091      {
00092        tmp(i)=d+m2(i);
00093      }
00094      RETURN_ARRAYS_DECREMENT();
00095      return tmp;
00096    }
00097 
00102 dvar3_array operator-(const dvariable& d, const d3_array& m2)
00103    {
00104      RETURN_ARRAYS_INCREMENT();
00105      dvar3_array tmp;
00106      tmp.allocate(m2);
00107      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00108      {
00109        tmp(i)=d-m2(i);
00110      }
00111      RETURN_ARRAYS_DECREMENT();
00112      return tmp;
00113    }
00114 
00119 dvar3_array operator*(const dvariable& d, const d3_array& m2)
00120    {
00121      RETURN_ARRAYS_INCREMENT();
00122      dvar3_array tmp;
00123      tmp.allocate(m2);
00124      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00125      {
00126        tmp(i)=d*m2(i);
00127      }
00128      RETURN_ARRAYS_DECREMENT();
00129      return tmp;
00130    }
00131 
00136 dvar3_array operator*(const dvariable& d, const dvar3_array& m2)
00137    {
00138      RETURN_ARRAYS_INCREMENT();
00139      dvar3_array tmp;
00140      tmp.allocate(m2);
00141      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00142      {
00143        tmp(i)=d*m2(i);
00144      }
00145      RETURN_ARRAYS_DECREMENT();
00146      return tmp;
00147    }
00148 
00153 dvar3_array operator*(double d, const dvar3_array& m2)
00154    {
00155      RETURN_ARRAYS_INCREMENT();
00156      dvar3_array tmp;
00157      tmp.allocate(m2);
00158      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00159      {
00160        tmp(i)=d*m2(i);
00161      }
00162      RETURN_ARRAYS_DECREMENT();
00163      return tmp;
00164    }
00165 
00170 dvar3_array operator-(const dvar3_array& m1, const dvariable& d)
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)=m1(i)-d;
00178      }
00179      RETURN_ARRAYS_DECREMENT();
00180      return tmp;
00181    }
00182 
00187 dvar3_array operator+(const dvar3_array& m1, const dvariable& d)
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)=m1(i)+d;
00195      }
00196      RETURN_ARRAYS_DECREMENT();
00197      return tmp;
00198    }
00199 
00204 dvar3_array operator+(double d, const dvar3_array& m1)
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)=d+m1(i);
00212      }
00213      RETURN_ARRAYS_DECREMENT();
00214      return tmp;
00215    }
00216 
00221 dvar3_array operator*(const dvar3_array& m1, const dvariable& d)
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)*d;
00229      }
00230      RETURN_ARRAYS_DECREMENT();
00231      return tmp;
00232    }
00233 
00238 dvar3_array operator+(const dvariable& d1, const dvar3_array& m1)
00239    {
00240      RETURN_ARRAYS_INCREMENT();
00241      dvar3_array tmp;
00242      tmp.allocate(m1);
00243 
00244      for (int i=tmp.slicemin();i<=tmp.slicemax();i++)
00245      {
00246        tmp(i)=m1(i)+d1;
00247      }
00248 
00249      RETURN_ARRAYS_DECREMENT();
00250      return tmp;
00251    }