We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent c0af98f commit 1dd27b6Copy full SHA for 1dd27b6
5 files changed
stan/math/rev/fun/beta.hpp
@@ -179,10 +179,9 @@ inline auto beta(const Scalar& a, const VarMat& b) {
179
auto digamma_ab = to_arena((digamma(arena_b.val()).array()
180
- digamma(arena_a + arena_b.val().array()))
181
* beta_val.array());
182
- return make_callback_var(
183
- beta_val, [arena_b, digamma_ab](auto& vi) mutable {
184
- arena_b.adj().array() += vi.adj().array() * digamma_ab.array();
185
- });
+ return make_callback_var(beta_val, [arena_b, digamma_ab](auto& vi) mutable {
+ arena_b.adj().array() += vi.adj().array() * digamma_ab.array();
+ });
186
}
187
188
@@ -209,12 +208,11 @@ inline auto beta(const VarMat& a, const Scalar& b) {
209
208
double arena_b = value_of(b);
210
auto digamma_ab = to_arena(digamma(arena_a.val()).array()
211
- digamma(arena_a.val().array() + arena_b));
212
- return make_callback_var(beta(arena_a.val(), arena_b),
213
- [arena_a, digamma_ab](auto& vi) mutable {
214
- arena_a.adj().array() += vi.adj().array()
215
- * digamma_ab
216
- * vi.val().array();
217
+ return make_callback_var(
+ beta(arena_a.val(), arena_b), [arena_a, digamma_ab](auto& vi) mutable {
+ arena_a.adj().array()
+ += vi.adj().array() * digamma_ab * vi.val().array();
218
} else if (!is_constant<Scalar>::value) {
219
arena_t<promote_scalar_t<double, VarMat>> arena_a = value_of(a);
220
var arena_b = b;
stan/math/rev/fun/lub_constrain.hpp
@@ -320,15 +320,14 @@ inline auto lub_constrain(const T& x, const L& lb, const U& ub,
320
auto diff = to_arena(ub_val - lb_val);
321
auto neg_abs_x = to_arena(-arena_x_val.abs());
322
auto inv_logit_x = to_arena(inv_logit(arena_x_val));
323
- arena_t<ret_type> ret = (is_lb_inf).select(
324
- ub_val - arena_x_val.exp(), diff * inv_logit_x + lb_val);
+ arena_t<ret_type> ret = (is_lb_inf).select(ub_val - arena_x_val.exp(),
+ diff * inv_logit_x + lb_val);
325
lp += (is_lb_inf)
326
.select(arena_x_val,
327
log(diff) + (neg_abs_x - (2.0 * log1p_exp(neg_abs_x))))
328
.sum();
329
- reverse_pass_callback(
330
- [arena_x, arena_x_val, ub, arena_lb, ret, lp, diff, inv_logit_x,
331
- is_lb_inf]() mutable {
+ reverse_pass_callback([arena_x, arena_x_val, ub, arena_lb, ret, lp, diff,
+ inv_logit_x, is_lb_inf]() mutable {
332
using T_var = arena_t<promote_scalar_t<var, T>>;
333
using L_var = arena_t<promote_scalar_t<var, L>>;
334
const auto lp_adj = lp.adj();
stan/math/rev/fun/svd_U.hpp
@@ -52,8 +52,8 @@ inline auto svd_U(const EigMat& m) {
52
arena_t<ret_type> arena_U = svd.matrixU();
53
auto arena_V = to_arena(svd.matrixV());
54
55
56
- [arena_m, arena_U, arena_D, arena_V, arena_Fp]() mutable {
+ reverse_pass_callback([arena_m, arena_U, arena_D, arena_V,
+ arena_Fp]() mutable {
57
Eigen::MatrixXd UUadjT = arena_U.val_op().transpose() * arena_U.adj_op();
58
arena_m.adj()
59
+= .5 * arena_U.val_op()
stan/math/rev/fun/svd_V.hpp
@@ -52,8 +52,8 @@ inline auto svd_V(const EigMat& m) {
auto arena_U = to_arena(svd.matrixU());
arena_t<ret_type> arena_V = svd.matrixV();
- [arena_m, arena_U, arena_D, arena_V, arena_Fm]() mutable {
+ arena_Fm]() mutable {
Eigen::MatrixXd VTVadj = arena_V.val_op().transpose() * arena_V.adj_op();
+= 0.5 * arena_U
test/unit/math/test_ad_matvar.hpp
@@ -968,9 +968,9 @@ void expect_ad_vectorized_matvar(const ad_tolerances& tols, const F& f,
968
std::vector<decltype(y_vec)> y_stdvec_vec{y_vec, y_vec};
969
std::vector<std::vector<T1>> x_stdvec_stdvec{x_stdvec, x_stdvec};
970
std::vector<std::vector<T2>> y_stdvec_stdvec{y_stdvec, y_stdvec};
971
- expect_ad_matvar(tols, f, x_scal, y); // scal, mat
972
- expect_ad_matvar(tols, f, x_scal, y_vec); // scal, mat
973
- expect_ad_matvar(tols, f, x_scal, y_stdvec); // scal, nest<mat>
+ expect_ad_matvar(tols, f, x_scal, y); // scal, mat
+ expect_ad_matvar(tols, f, x_scal, y_vec); // scal, mat
+ expect_ad_matvar(tols, f, x_scal, y_stdvec); // scal, nest<mat>
974
expect_ad_matvar(tols, f, x, y_vec); // stdvec, vec
975
expect_ad_matvar(tols, f, x_stdvec, y_stdvec_vec); // nest<stdvec>, nest<vec>
976
expect_ad_matvar(tols, f, x_stdvec, y); // nest<stdvec>, mat
0 commit comments