Stan Math Library  2.12.0
reverse mode automatic differentiation
Public Member Functions | Public Attributes | List of all members
stan::math::multiply_mat_vari< double, RA, CA, TB, CB > Class Template Reference

This is a subclass of the vari class for matrix multiplication A * B where A is an N by M matrix of double and B is M by K. More...

#include <multiply.hpp>

Inheritance diagram for stan::math::multiply_mat_vari< double, RA, CA, TB, CB >:
stan::math::vari

Public Member Functions

 multiply_mat_vari (const Eigen::Matrix< double, RA, CA > &A, const Eigen::Matrix< TB, CA, CB > &B)
 Constructor for multiply_mat_vari. More...
 
virtual void chain ()
 Apply the chain rule to this variable based on the variables on which it depends. More...
 
- Public Member Functions inherited from stan::math::vari
 vari (const double x)
 Construct a variable implementation from a value. More...
 
 vari (const double x, bool stacked)
 
virtual ~vari ()
 Throw an illegal argument exception. More...
 
void init_dependent ()
 Initialize the adjoint for this (dependent) variable to 1. More...
 
void set_zero_adjoint ()
 Set the adjoint value of this variable to 0. More...
 

Public Attributes

int A_rows_
 
int A_cols_
 
int B_cols_
 
int A_size_
 
int B_size_
 
double * Ad_
 
double * Bd_
 
vari ** variRefB_
 
vari ** variRefAB_
 
- Public Attributes inherited from stan::math::vari
const double val_
 The value of this variable. More...
 
double adj_
 The adjoint of this variable, which is the partial derivative of this variable with respect to the root variable. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from stan::math::vari
static void * operator new (size_t nbytes)
 Allocate memory from the underlying memory pool. More...
 
static void operator delete (void *)
 Delete a pointer from the underlying memory pool. More...
 

Detailed Description

template<int RA, int CA, typename TB, int CB>
class stan::math::multiply_mat_vari< double, RA, CA, TB, CB >

This is a subclass of the vari class for matrix multiplication A * B where A is an N by M matrix of double and B is M by K.

The class stores the structure of each matrix, the double values of A and B, and pointers to the varis for A and B if A or B is a var. It also instantiates and stores pointers to varis for all elements of A * B.

Template Parameters
RARows for matrix A
CAColumns for matrix A, Rows for matrix B
TBScalar type for matrix B
CBColumns for matrix B

Definition at line 213 of file multiply.hpp.

Constructor & Destructor Documentation

template<int RA, int CA, typename TB , int CB>
stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::multiply_mat_vari ( const Eigen::Matrix< double, RA, CA > &  A,
const Eigen::Matrix< TB, CA, CB > &  B 
)
inline

Constructor for multiply_mat_vari.

All memory allocated in ChainableStack's stack_alloc arena.

It is critical for the efficiency of this object that the constructor create new varis that aren't popped onto the var_stack_, but rather are popped onto the var_nochain_stack_. This is controlled to the second argument to vari's constructor.

Parameters
Arow vector
Bvector

Definition at line 237 of file multiply.hpp.

Member Function Documentation

template<int RA, int CA, typename TB , int CB>
virtual void stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::chain ( )
inlinevirtual

Apply the chain rule to this variable based on the variables on which it depends.

The base implementation in this class is a no-op.

Reimplemented from stan::math::vari.

Definition at line 262 of file multiply.hpp.

Member Data Documentation

template<int RA, int CA, typename TB , int CB>
int stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::A_cols_

Definition at line 215 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
int stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::A_rows_

Definition at line 215 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
int stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::A_size_

Definition at line 215 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
double* stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::Ad_

Definition at line 216 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
int stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::B_cols_

Definition at line 215 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
int stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::B_size_

Definition at line 215 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
double* stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::Bd_

Definition at line 217 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
vari** stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::variRefAB_

Definition at line 219 of file multiply.hpp.

template<int RA, int CA, typename TB , int CB>
vari** stan::math::multiply_mat_vari< double, RA, CA, TB, CB >::variRefB_

Definition at line 218 of file multiply.hpp.


The documentation for this class was generated from the following file:

     [ Stan Home Page ] © 2011–2016, Stan Development Team.