1 #ifndef STAN_MATH_PRIM_MAT_FUN_MATRIX_EXP_2X2_HPP 2 #define STAN_MATH_PRIM_MAT_FUN_MATRIX_EXP_2X2_HPP 18 template <
typename Mtype>
20 using T =
typename Mtype::Scalar;
21 T a = A(0, 0), b = A(0, 1), c = A(1, 0), d = A(1, 1), delta;
24 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> B(2, 2);
25 T half_delta = 0.5 * delta;
26 T cosh_half_delta =
cosh(half_delta);
27 T sinh_half_delta =
sinh(half_delta);
28 T exp_half_a_plus_d =
exp(0.5 * (a + d));
29 T Two_exp_sinh = 2 * exp_half_a_plus_d * sinh_half_delta;
30 T delta_cosh = delta * cosh_half_delta;
31 T ad_sinh_half_delta = (a - d) * sinh_half_delta;
33 B(0, 0) = exp_half_a_plus_d * (delta_cosh + ad_sinh_half_delta);
34 B(0, 1) = b * Two_exp_sinh;
35 B(1, 0) = c * Two_exp_sinh;
36 B(1, 1) = exp_half_a_plus_d * (delta_cosh - ad_sinh_half_delta);
fvar< T > sqrt(const fvar< T > &x)
fvar< T > cosh(const fvar< T > &x)
Mtype matrix_exp_2x2(const Mtype &A)
Return the matrix exponential of a 2x2 matrix.
fvar< T > square(const fvar< T > &x)
fvar< T > exp(const fvar< T > &x)
fvar< T > sinh(const fvar< T > &x)