Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011
00012
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
00033
00034
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 }