Skip to content

Commit

Permalink
fix expression test failure
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveBronder committed Oct 22, 2020
1 parent 3464880 commit e793e6c
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions stan/math/rev/core/operator_addition.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,8 @@ inline auto add(const VarMat& a, const Arith& b) {
using op_ret_type
= decltype((a.val().array() + as_array_or_scalar(b)).matrix());
using ret_type = promote_var_matrix_t<op_ret_type, VarMat>;
arena_t<VarMat> arena_a = a;
arena_t<ret_type> ret(a.val().array() + as_array_or_scalar(b));
arena_t<VarMat> arena_a(a);
arena_t<ret_type> ret(arena_a.val().array() + as_array_or_scalar(b));
reverse_pass_callback(
[ret, arena_a]() mutable { arena_a.adj() += ret.adj_op(); });
return ret_type(ret);
Expand Down Expand Up @@ -197,8 +197,8 @@ inline auto add(const Arith& a, const VarMat& b) {
* @return Variable result of adding two variables.
*/
template <typename Var, typename EigMat,
require_eigen_vt<std::is_arithmetic, EigMat>* = nullptr,
require_var_vt<std::is_arithmetic, Var>* = nullptr>
require_var_vt<std::is_arithmetic, Var>* = nullptr,
require_eigen_vt<std::is_arithmetic, EigMat>* = nullptr>
inline auto add(const Var& a, const EigMat& b) {
using ret_type = promote_scalar_t<var, EigMat>;
arena_t<ret_type> ret(a.val() + b.array());
Expand All @@ -216,28 +216,28 @@ inline auto add(const Var& a, const EigMat& b) {
* @return Variable result of adding two variables.
*/
template <typename EigMat, typename Var,
require_var_vt<std::is_arithmetic, Var>* = nullptr,
require_eigen_vt<std::is_arithmetic, EigMat>* = nullptr>
require_eigen_vt<std::is_arithmetic, EigMat>* = nullptr,
require_var_vt<std::is_arithmetic, Var>* = nullptr>
inline auto add(const EigMat& a, const Var& b) {
return add(b, a);
}

/**
* Addition operator for a variable and variable matrix (C++).
*
* @tparam Var A `var_value` with an underlying arithmetic type.
* @tparam VarMat An Eigen Matrix type with a variable Scalar type or a
* `var_value` with an underlying matrix type.
* @tparam Var A `var_value` with an underlying arithmetic type.
* @param a First variable operand.
* @param b Second variable operand.
* @return Variable result of adding two variables.
*/
template <typename Var, typename VarMat,
require_rev_matrix_t<VarMat>* = nullptr,
require_var_vt<std::is_arithmetic, Var>* = nullptr>
require_var_vt<std::is_arithmetic, Var>* = nullptr,
require_rev_matrix_t<VarMat>* = nullptr>
inline auto add(const Var& a, const VarMat& b) {
arena_t<VarMat> arena_b(b);
arena_t<VarMat> ret(a.val() + b.val().array());
arena_t<VarMat> ret(a.val() + arena_b.val().array());
reverse_pass_callback([ret, a, arena_b]() mutable {
for (Eigen::Index i = 0; i < arena_b.size(); ++i) {
const auto ret_adj = ret.adj().coeffRef(i);
Expand All @@ -259,8 +259,8 @@ inline auto add(const Var& a, const VarMat& b) {
* @return Variable result of adding two variables.
*/
template <typename Var, typename VarMat,
require_rev_matrix_t<VarMat>* = nullptr,
require_var_vt<std::is_arithmetic, Var>* = nullptr>
require_var_vt<std::is_arithmetic, Var>* = nullptr,
require_rev_matrix_t<VarMat>* = nullptr>
inline auto add(const VarMat& a, const Var& b) {
return add(b, a);
}
Expand Down

0 comments on commit e793e6c

Please sign in to comment.