![]() |
Stan
1.3
probability, sampling & optimization
|
The variable implementation base class. More...
#include <agrad_thread_safe.hpp>
Public Member Functions | |
| vari (const double x) | |
| Construct a variable implementation from a value. | |
| virtual void | chain () |
| Apply the chain rule to this variable based on the variables on which it depends. | |
| vari (const double x) | |
| Construct a variable implementation from a value. | |
| vari (const double x, bool stacked) | |
| ~vari () | |
| Throw an illegal argument exception. | |
| virtual void | init_dependent () |
| Initialize the adjoint for this (dependent) variable to 1. | |
| virtual void | set_zero_adjoint () |
| Set the adjoint value of this variable to 0. | |
Public Member Functions inherited from stan::agrad::chainable | |
| chainable () | |
| Construct a chainable object. | |
| ~chainable () | |
| Chainables are not destructible and should go on the function call stack or be allocated with operator new. | |
Static Public Member Functions | |
| static void * | operator new (size_t nbytes) |
| Allocate memory from the underlying memory pool. | |
| static void | recover_memory () |
| Recover memory used for all variables for reuse. | |
| static void | free_memory () |
| Return all memory used for gradients back to the system. | |
Static Public Member Functions inherited from stan::agrad::chainable | |
| static void * | operator new (size_t nbytes) |
| Allocate memory from the underlying memory pool. | |
Public Attributes | |
| const double | val_ |
| The value of this variable. | |
| double | adj_ |
| The adjoint of this variable, which is the partial derivative of this variable with respect to the root variable. | |
Friends | |
| class | var |
| std::ostream & | operator<< (std::ostream &os, const vari *v) |
| Insertion operator for vari. | |
The variable implementation base class.
A variable implementation is constructed with a constant value. It also stores the adjoint for storing the partial derivative with respect to the root of the derivative tree.
The chain() method applies the chain rule. Concrete extensions of this class will represent base variables or the result of operations such as addition or subtraction. These extended classes will store operand variables and propagate derivative information via an implementation of chain().
Definition at line 53 of file agrad_thread_safe.hpp.
|
inline |
Construct a variable implementation from a value.
The adjoint is initialized to zero.
All constructed variables are added to the stack. Variables should be constructed before variables on which they depend to insure proper partial derivative propagation. During derivative propagation, the chain() method of each variable will be called in the reverse order of construction.
| x | Value of the constructed variable. |
Definition at line 82 of file agrad_thread_safe.hpp.
|
inline |
Construct a variable implementation from a value.
The adjoint is initialized to zero.
All constructed variables are added to the stack. Variables should be constructed before variables on which they depend to insure proper partial derivative propagation. During derivative propagation, the chain() method of each variable will be called in the reverse order of construction.
| x | Value of the constructed variable. |
|
inline |
|
inline |
|
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::agrad::chainable.
Reimplemented in stan::agrad::partials_vari.
Definition at line 93 of file agrad_thread_safe.hpp.
|
inlinestatic |
Return all memory used for gradients back to the system.
Definition at line 123 of file agrad_thread_safe.hpp.
|
inlinevirtual |
Initialize the adjoint for this (dependent) variable to 1.
This operation is applied to the dependent variable before propagating derivatives.
Reimplemented from stan::agrad::chainable.
|
inlinestatic |
Allocate memory from the underlying memory pool.
This memory is is managed by the gradient program and will be recovered as a whole. Classes should not be allocated with this operator if they have non-trivial destructors.
| nbytes | Number of bytes to allocate. |
Definition at line 105 of file agrad_thread_safe.hpp.
|
inlinestatic |
Recover memory used for all variables for reuse.
Definition at line 114 of file agrad_thread_safe.hpp.
|
inlinevirtual |
Set the adjoint value of this variable to 0.
Reimplemented from stan::agrad::chainable.
|
friend |
|
friend |
Definition at line 55 of file agrad_thread_safe.hpp.
| double stan::agrad::vari::adj_ |
The adjoint of this variable, which is the partial derivative of this variable with respect to the root variable.
Definition at line 68 of file agrad_thread_safe.hpp.
| const double stan::agrad::vari::val_ |
The value of this variable.
Definition at line 62 of file agrad_thread_safe.hpp.