gradient.hpp
Go to the documentation of this file.
1 #ifndef STAN_MODEL_GRADIENT_HPP
2 #define STAN_MODEL_GRADIENT_HPP
3 
6 #include <stan/math/rev/mat.hpp>
8 #include <sstream>
9 #include <stdexcept>
10 
11 namespace stan {
12  namespace model {
13 
14  template <class M>
15  void gradient(const M& model,
16  const Eigen::Matrix<double, Eigen::Dynamic, 1>& x,
17  double& f,
18  Eigen::Matrix<double, Eigen::Dynamic, 1>& grad_f,
19  std::ostream* msgs = 0) {
20  stan::math::gradient(model_functional<M>(model, msgs), x, f, grad_f);
21  }
22 
23  template <class M>
24  void gradient(const M& model,
25  const Eigen::Matrix<double, Eigen::Dynamic, 1>& x,
26  double& f,
27  Eigen::Matrix<double, Eigen::Dynamic, 1>& grad_f,
28  callbacks::logger& logger) {
29  std::stringstream ss;
30  try {
31  stan::math::gradient(model_functional<M>(model, &ss), x, f, grad_f);
32  } catch (std::exception& e) {
33  if (ss.str().length() > 0)
34  logger.info(ss);
35  throw;
36  }
37  if (ss.str().length() > 0)
38  logger.info(ss);
39  }
40 
41  }
42 }
43 #endif
Float_t ss
Definition: plot.C:24
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
void gradient(const M &model, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &x, double &f, Eigen::Matrix< double, Eigen::Dynamic, 1 > &grad_f, std::ostream *msgs=0)
Definition: gradient.hpp:15
virtual void info(const std::string &message)
Definition: logger.hpp:47
Float_t e
Definition: plot.C:35
void gradient(const F &f, const Eigen::Matrix< T, Eigen::Dynamic, 1 > &x, T &fx, Eigen::Matrix< T, Eigen::Dynamic, 1 > &grad_fx)
Definition: gradient.hpp:39
const XML_Char XML_Content * model
Definition: expat.h:151