ADMB Documentation  11.5.3197
 All Classes Files Functions Variables Typedefs Friends Defines
fvar_ar8.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 // file fvar_fn.cpp
00012 // math.h functions involving prevariables
00013 #include "fvar.hpp"
00014 
00015 #ifdef __TURBOC__
00016   #pragma hdrstop
00017   #include <iostream.h>
00018   #include <iomanip.h>
00019 #endif
00020 
00021 #ifdef __ZTC__
00022   #include <iostream.hpp>
00023   #include <iomanip.hpp>
00024 #endif
00025 
00026 #include <stdio.h>
00027 #include <math.h>
00028 
00029 
00030 void gradfree(dlink *);
00031 
00032 //extern prevariable * FRETURN;
00033 //extern int RETURN_INDEX;
00034 //extern dlist * GRAD_LIST; //js
00035 
00036 void shape_check(const dvar_vector& v1, const dvar_vector& v2,
00037   const char *function_name);
00038 void shape_check(const dvector& v1, const dvar_vector& v2,
00039   const char *function_name);
00040 void shape_check(const dvector& v1, const dvector& v2,
00041   const char *function_name);
00042 void shape_check(const dvar_vector& v1, const dvector& v2,
00043   const char *function_name);
00044 
00049  dvar_vector sinh(const dvar_vector& v1)// ***
00050  {
00051    RETURN_ARRAYS_INCREMENT();
00052    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00053    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00054    {
00055      tmp.elem(i)=sinh(v1.elem(i));             // ***
00056    }
00057    RETURN_ARRAYS_DECREMENT();
00058    return(tmp);
00059  }
00060 
00065  dvar_vector cosh(const dvar_vector& v1)// ***
00066  {
00067    RETURN_ARRAYS_INCREMENT();
00068    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00069    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00070    {
00071      tmp.elem(i)=cosh(v1.elem(i));             // ***
00072    }
00073    RETURN_ARRAYS_DECREMENT();
00074    return(tmp);
00075  }
00076 
00081  dvar_vector tanh(const dvar_vector& v1)// ***
00082  {
00083    RETURN_ARRAYS_INCREMENT();
00084    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00085    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00086    {
00087      tmp.elem(i)=tanh(v1.elem(i));             // ***
00088    }
00089    RETURN_ARRAYS_DECREMENT();
00090    return(tmp);
00091  }
00092 
00097  dvar_vector pow(const dvar_vector& v1, const dvar_vector& v2)// ***
00098  {
00099    shape_check(v1,v2,
00100      "dvar_vector pow(const dvar_vector& v1,const dvar_vector& v2)");
00101 
00102    RETURN_ARRAYS_INCREMENT();
00103    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00104    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00105    {
00106      tmp.elem(i)=pow(v1.elem(i),v2.elem(i));             // ***
00107    }
00108    RETURN_ARRAYS_DECREMENT();
00109    return(tmp);
00110  }
00111 
00116  dvar_vector pow(const prevariable& x, const dvar_vector& v2)// ***
00117  {
00118    RETURN_ARRAYS_INCREMENT();
00119    dvar_vector tmp(v2.indexmin(),v2.indexmax());
00120    for (int i=v2.indexmin();i<=v2.indexmax();i++)
00121    {
00122      tmp.elem(i)=pow(x,v2.elem(i));             // ***
00123    }
00124    RETURN_ARRAYS_DECREMENT();
00125    return(tmp);
00126  }
00127 
00132  dvar_vector asin(const dvar_vector& v1)// ***
00133  {
00134    RETURN_ARRAYS_INCREMENT();
00135    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00136    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00137    {
00138      tmp.elem(i)=asin(v1.elem(i));             // ***
00139    }
00140    RETURN_ARRAYS_DECREMENT();
00141    return(tmp);
00142  }
00143 
00148  dvar_vector acos(const dvar_vector& v1)// ***
00149  {
00150    RETURN_ARRAYS_INCREMENT();
00151    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00152    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00153    {
00154      tmp.elem(i)=acos(v1.elem(i));             // ***
00155    }
00156    RETURN_ARRAYS_DECREMENT();
00157    return(tmp);
00158  }
00159 
00164  dvar_vector log10(const dvar_vector& v1)// ***
00165  {
00166    RETURN_ARRAYS_INCREMENT();
00167    dvar_vector tmp(v1.indexmin(),v1.indexmax());
00168    for (int i=v1.indexmin();i<=v1.indexmax();i++)
00169    {
00170      tmp.elem(i)=log10(v1.elem(i));             // ***
00171    }
00172    RETURN_ARRAYS_DECREMENT();
00173    return(tmp);
00174  }
00175 
00180  void shape_check(const dvar_vector& v1, const dvar_vector& v2,
00181    const char *function_name)
00182  {
00183    if (v1.indexmin() != v2.indexmin() || v1.indexmax() != v2.indexmax())
00184    {
00185      cerr << " Vector sizes do no match in" << function_name << "\n";
00186      ad_exit(1);
00187    }
00188  }
00189 
00194  void shape_check(const dvector& v1, const dvar_vector& v2,
00195    const char *function_name)
00196  {
00197    if (v1.indexmin() != v2.indexmin() || v1.indexmax() != v2.indexmax())
00198    {
00199      cerr << " Vector sizes do no match in" << function_name << "\n";
00200      ad_exit(1);
00201    }
00202  }
00203 
00208  void shape_check(const dvar_vector& v1, const dvector& v2,
00209    const char *function_name)
00210  {
00211    if (v1.indexmin() != v2.indexmin() || v1.indexmax() != v2.indexmax())
00212    {
00213      cerr << " Vector sizes do no match in" << function_name << "\n";
00214      ad_exit(1);
00215    }
00216  }