[CppAD] RevTwo problem
    Kasper Kristensen 
    kkr at dfu.min.dk
       
    Mon Feb 20 14:43:32 EST 2006
    
    
  
Dear list,
I have been trying to compute specific rows in the hessian of a simple
function F:R^2->R using the "RevTwo" method of an ADFun object. Running
the attached code with the latest version of the library I get the
following output:
Hessian: { 8.2999, 2.93431, 2.93431, 6.28781 }
First row: { 8.2999, 2.93431 }
Second row: { 5.30565e-312, 5.19526e-270 }
Could someone please tell me why this goes wrong?
Best regards
Kasper Kristensen
CODE SAMPLE:
#include <CppAD/CppAD.h>
using namespace CppAD;
int main()
{
   vector<AD<double> > x(2);
   vector<AD<double> > y(1);
   Independent(x);
   y[0]=exp(x[0]*x[0]+x[1]*x[1]);
   ADFun<double> F(x,y);
   vector<double> x0(2);
   x0[0]=0.7; x0[1]=0.5;
   std::cout << "Hessian: " << F.Hessian(x0,0) << "\n";
   vector<size_t> I(1);
   vector<size_t> J(1);
   I[0]=0;
   J[0]=0;
   std::cout << "First row: " << F.RevTwo(x0,I,J) << "\n";
   J[0]=1;
   std::cout << "Second row: " << F.RevTwo(x0,I,J) << "\n";
}
    
    
More information about the CppAD
mailing list