All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
roboptim::detail::ProductDifferentiation Struct Reference

Utility structure used for product differentiation. More...

#include <roboptim/core/operator/product.hxx>

Classes

struct  Types
 Some useful types for product differentiation. More...
 

Static Public Member Functions

template<typename U , typename V >
static void gradient (typename Types< U, V >::gradient_ref grad_uv, const typename Types< U, V >::rowVectorU_ref u, const typename Types< U, V >::rowVectorV_ref v, const typename Types< U, V >::gradientU_ref grad_u, const typename Types< U, V >::gradientV_ref grad_v, typename boost::enable_if< typename Types< U, V >::fullDense_t >::type *=0)
 Full dense version of gradient computation. More...
 
template<typename U , typename V >
static void gradient (typename Types< U, V >::gradient_ref grad_uv, const typename Types< U, V >::rowVectorU_ref u, const typename Types< U, V >::rowVectorV_ref v, const typename Types< U, V >::gradientU_ref grad_u, const typename Types< U, V >::gradientV_ref grad_v, typename boost::disable_if< typename Types< U, V >::fullDense_t >::type *=0)
 Dense/sparse version of gradient computation. More...
 
template<typename U , typename V >
static void jacobian (typename Types< U, V >::jacobian_ref jac_uv, const typename Types< U, V >::vectorU_ref u, const typename Types< U, V >::vectorV_ref v, const typename Types< U, V >::jacobianU_ref jac_u, const typename Types< U, V >::jacobianV_ref jac_v, typename boost::enable_if< typename Types< U, V >::fullDense_t >::type *=0)
 Full dense version of Jacobian computation. More...
 
template<typename U , typename V >
static void jacobian (typename Types< U, V >::jacobian_ref jac_uv, const typename Types< U, V >::vectorU_ref u, const typename Types< U, V >::vectorV_ref v, const typename Types< U, V >::jacobianU_ref jac_u, const typename Types< U, V >::jacobianV_ref jac_v, typename boost::disable_if< typename Types< U, V >::fullDense_t >::type *=0)
 Dense/sparse version of Jacobian computation. More...
 

Detailed Description

Utility structure used for product differentiation.

Member Function Documentation

template<typename U , typename V >
static void roboptim::detail::ProductDifferentiation::gradient ( typename Types< U, V >::gradient_ref  grad_uv,
const typename Types< U, V >::rowVectorU_ref  u,
const typename Types< U, V >::rowVectorV_ref  v,
const typename Types< U, V >::gradientU_ref  grad_u,
const typename Types< U, V >::gradientV_ref  grad_v,
typename boost::enable_if< typename Types< U, V >::fullDense_t >::type *  = 0 
)
inlinestatic

Full dense version of gradient computation.

template<typename U , typename V >
static void roboptim::detail::ProductDifferentiation::gradient ( typename Types< U, V >::gradient_ref  grad_uv,
const typename Types< U, V >::rowVectorU_ref  u,
const typename Types< U, V >::rowVectorV_ref  v,
const typename Types< U, V >::gradientU_ref  grad_u,
const typename Types< U, V >::gradientV_ref  grad_v,
typename boost::disable_if< typename Types< U, V >::fullDense_t >::type *  = 0 
)
inlinestatic

Dense/sparse version of gradient computation.

dense.cwiseProduct (sparse) or sparse.cwiseProduct (dense) are apparently not available in Eigen.

template<typename U , typename V >
static void roboptim::detail::ProductDifferentiation::jacobian ( typename Types< U, V >::jacobian_ref  jac_uv,
const typename Types< U, V >::vectorU_ref  u,
const typename Types< U, V >::vectorV_ref  v,
const typename Types< U, V >::jacobianU_ref  jac_u,
const typename Types< U, V >::jacobianV_ref  jac_v,
typename boost::enable_if< typename Types< U, V >::fullDense_t >::type *  = 0 
)
inlinestatic

Full dense version of Jacobian computation.

template<typename U , typename V >
static void roboptim::detail::ProductDifferentiation::jacobian ( typename Types< U, V >::jacobian_ref  jac_uv,
const typename Types< U, V >::vectorU_ref  u,
const typename Types< U, V >::vectorV_ref  v,
const typename Types< U, V >::jacobianU_ref  jac_u,
const typename Types< U, V >::jacobianV_ref  jac_v,
typename boost::disable_if< typename Types< U, V >::fullDense_t >::type *  = 0 
)
inlinestatic

Dense/sparse version of Jacobian computation.

dense.cwiseProduct (sparse) or sparse.cwiseProduct (dense) are apparently not available in Eigen.

ROBOPTIM_DO_NOT_CHECK_ALLOCATION

ROBOPTIM_DO_NOT_CHECK_ALLOCATION

References roboptim::is_malloc_allowed(), and roboptim::set_is_malloc_allowed().