The variable implementation base class.
This class is complete (not abstract) and may be used for constants.
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 30 of file vari.hpp.
stan::math::vari::vari |
( |
double |
x | ) |
|
|
inlineexplicit |
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.
- Parameters
-
x | Value of the constructed variable. |
Definition at line 58 of file vari.hpp.
virtual void stan::math::vari::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 in stan::math::adj_jac_vari< F, Targs >, stan::math::multiply_mat_vari< Ta, 1, Ca, double, 1 >, stan::math::multiply_mat_vari< Ta, Ra, Ca, double, Cb >, stan::math::multiply_mat_vari< double, 1, Ca, Tb, 1 >, stan::math::cholesky_opencl, stan::math::internal::mdivide_left_tri_vd_vari< TriView, R1, C1, R2, C2 >, stan::math::multiply_mat_vari< double, Ra, Ca, Tb, Cb >, stan::math::gp_periodic_cov_vari< T_x, double, T_l, T_p >, stan::math::internal::mdivide_left_vd_vari< R1, C1, R2, C2 >, stan::math::internal::mdivide_left_spd_vd_vari< R1, C1, R2, C2 >, stan::math::cholesky_scalar, stan::math::internal::mdivide_left_ldlt_vd_vari< R1, C1, R2, C2 >, stan::math::internal::mdivide_left_tri_dv_vari< TriView, R1, C1, R2, C2 >, stan::math::gp_exp_quad_cov_vari< T_x, double, T_l >, stan::math::internal::dot_product_vari< T1, T2 >, stan::math::internal::ibeta_ddv_vari, stan::math::multiply_mat_vari< Ta, 1, Ca, Tb, 1 >, stan::math::internal::mdivide_left_dv_vari< R1, C1, R2, C2 >, stan::math::internal::mdivide_left_ldlt_dv_vari< R1, C1, R2, C2 >, stan::math::internal::mdivide_left_spd_dv_vari< R1, C1, R2, C2 >, stan::math::internal::ibeta_dvd_vari, stan::math::cov_exp_quad_vari< T_x, double, T_l >, stan::math::gp_periodic_cov_vari< T_x, T_sigma, T_l, T_p >, stan::math::internal::ibeta_dvv_vari, stan::math::internal::trace_inv_quad_form_ldlt_vari< T2, R2, C2, T3, R3, C3 >, stan::math::cholesky_block, stan::math::internal::ibeta_vdd_vari, stan::math::internal::quad_form_vari< Ta, Ra, Ca, Tb, Rb, Cb >, stan::math::gp_exp_quad_cov_vari< T_x, T_sigma, T_l >, stan::math::multiply_mat_vari< Ta, Ra, Ca, Tb, Cb >, stan::math::internal::squared_distance_vd_vari, stan::math::internal::mdivide_left_tri_vv_vari< TriView, R1, C1, R2, C2 >, stan::math::internal::ibeta_vdv_vari, stan::math::internal::mdivide_left_spd_vv_vari< R1, C1, R2, C2 >, stan::math::internal::mdivide_left_ldlt_vv_vari< R1, C1, R2, C2 >, stan::math::internal::mdivide_left_vv_vari< R1, C1, R2, C2 >, stan::math::internal::trace_gen_quad_form_vari< Td, Rd, Cd, Ta, Ra, Ca, Tb, Rb, Cb >, stan::math::internal::fma_ddv_vari, stan::math::internal::gamma_p_dv_vari, stan::math::internal::trace_quad_form_vari< Ta, Ra, Ca, Tb, Rb, Cb >, stan::math::algebra_solver_vari< Fs, F, T, Fx >, stan::math::precomputed_gradients_vari, stan::math::cov_exp_quad_vari< T_x, T_sigma, T_l >, stan::math::internal::fma_vdd_vari, stan::math::internal::ibeta_vvd_vari, stan::math::internal::log_inv_logit_diff_dv_vari, stan::math::internal::dot_self_vari, stan::math::internal::log_inv_logit_diff_vd_vari, stan::math::internal::pow_dv_vari, stan::math::internal::gamma_p_vd_vari, stan::math::internal::squared_distance_vv_vari, stan::math::internal::fma_vdv_vari, stan::math::internal::log_falling_factorial_dv_vari, stan::math::internal::multiply_log_dv_vari, stan::math::internal::owens_t_dv_vari, stan::math::internal::divide_dv_vari, stan::math::internal::fmod_dv_vari, stan::math::gevv_vvv_vari, stan::math::internal::subtract_dv_vari, stan::math::internal::gamma_q_dv_vari, stan::math::internal::log_inv_logit_diff_vv_vari, stan::math::internal::fdim_dv_vari, stan::math::stored_gradient_vari, stan::math::internal::pow_vd_vari, stan::math::sum_v_vari, stan::math::internal::ibeta_vvv_vari, stan::math::internal::log_rising_factorial_dv_vari, stan::math::internal::atan2_dv_vari, stan::math::internal::beta_dv_vari, stan::math::internal::lbeta_dv_vari, stan::math::internal::determinant_vari< R, C >, stan::math::internal::log_falling_factorial_vd_vari, stan::math::internal::multiply_log_vd_vari, stan::math::internal::unit_vector_elt_vari, stan::math::internal::fma_vvd_vari, stan::math::internal::owens_t_vd_vari, stan::math::internal::divide_vd_vari, stan::math::internal::log_sum_exp_vector_vari, stan::math::internal::subtract_vd_vari, stan::math::internal::log_softmax_elt_vari, stan::math::internal::fmod_vd_vari, stan::math::internal::gamma_q_vd_vari, stan::math::internal::log_diff_exp_dv_vari, stan::math::internal::log_sum_exp_dv_vari, stan::math::internal::add_vd_vari, stan::math::internal::multiply_vd_vari, stan::math::internal::fdim_vd_vari, stan::math::scal_squared_distance_dv_vari, stan::math::internal::log_sum_exp_matrix_vari, stan::math::internal::log_rising_factorial_vd_vari, stan::math::internal::log_det_ldlt_vari< R, C >, stan::math::internal::beta_vd_vari, stan::math::internal::lbeta_vd_vari, stan::math::internal::atan2_vd_vari, stan::math::internal::log_diff_exp_vd_vari, stan::math::internal::log_sum_exp_vd_vari, stan::math::internal::hypot_vd_vari, stan::math::scal_squared_distance_vd_vari, stan::math::internal::binary_log_loss_0_vari, stan::math::internal::pow_vv_vari, stan::math::precomp_vvv_vari, stan::math::internal::divide_vv_vari, stan::math::internal::gamma_p_vv_vari, stan::math::internal::gamma_q_vv_vari, stan::math::internal::inc_beta_vvv_vari, stan::math::internal::log_falling_factorial_vv_vari, stan::math::internal::owens_t_vv_vari, stan::math::internal::subtract_vv_vari, stan::math::precomp_vv_vari, stan::math::internal::log_rising_factorial_vv_vari, stan::math::internal::multiply_log_vv_vari, stan::math::internal::add_vv_vari, stan::math::internal::multiply_vv_vari, stan::math::precomp_v_vari, stan::math::internal::falling_factorial_vd_vari, stan::math::internal::fma_vvv_vari, stan::math::internal::fmod_vv_vari, stan::math::internal::log10_vari, stan::math::internal::log_diff_exp_vv_vari, stan::math::internal::log_sum_exp_vv_vari, stan::math::internal::rising_factorial_vd_vari, stan::math::internal::bessel_first_kind_dv_vari, stan::math::internal::bessel_second_kind_dv_vari, stan::math::internal::beta_vv_vari, stan::math::internal::ceil_vari, stan::math::internal::erf_vari, stan::math::internal::erfc_vari, stan::math::internal::fdim_vv_vari, stan::math::internal::floor_vari, stan::math::internal::lbeta_vv_vari, stan::math::internal::lmgamma_dv_vari, stan::math::internal::log1m_exp_v_vari, stan::math::internal::modified_bessel_first_kind_dv_vari, stan::math::internal::modified_bessel_second_kind_dv_vari, stan::math::internal::round_vari, stan::math::internal::trunc_vari, stan::math::internal::decrement_vari, stan::math::internal::increment_vari, stan::math::internal::neg_vari, stan::math::internal::acosh_vari, stan::math::internal::asinh_vari, stan::math::internal::atan2_vv_vari, stan::math::internal::binary_log_loss_1_vari, stan::math::internal::digamma_vari, stan::math::internal::exp2_vari, stan::math::internal::hypot_vv_vari, stan::math::internal::inv_cloglog_vari, stan::math::internal::inv_Phi_vari, stan::math::internal::lgamma_vari, stan::math::internal::log1p_exp_v_vari, stan::math::internal::log2_vari, stan::math::internal::tgamma_vari, stan::math::internal::acos_vari, stan::math::internal::asin_vari, stan::math::internal::atan_vari, stan::math::internal::atanh_vari, stan::math::internal::cbrt_vari, stan::math::internal::cos_vari, stan::math::internal::cosh_vari, stan::math::internal::exp_vari, stan::math::internal::expm1_vari, stan::math::internal::inv_vari, stan::math::internal::inv_logit_vari, stan::math::internal::inv_sqrt_vari, stan::math::internal::inv_square_vari, stan::math::internal::log_vari, stan::math::internal::log1m_vari, stan::math::internal::log1p_vari, stan::math::internal::Phi_vari, stan::math::internal::sin_vari, stan::math::internal::sqrt_vari, stan::math::scal_squared_distance_vv_vari, stan::math::internal::tan_vari, stan::math::internal::tanh_vari, stan::math::internal::sinh_vari, and stan::math::internal::square_vari.
Definition at line 85 of file vari.hpp.
static void stan::math::vari::operator delete |
( |
void * |
| ) |
|
|
inlinestatic |
Delete a pointer from the underlying memory pool.
This no-op implementation enables a subclass to throw exceptions in its constructor. An exception thrown in the constructor of a subclass will result in an error being raised, which is in turn caught and calls delete().
See the discussion of "plugging the memory leak" in: http://www.parashift.com/c++-faq/memory-pools.html
Definition at line 140 of file vari.hpp.