@@ -313,28 +313,29 @@ inline auto lub_constrain(const T& x, const L& lb, const U& ub,
313313 } else {
314314 arena_t <T> arena_x = x;
315315 arena_t <L> arena_lb = lb;
316- const auto x_val = value_of (arena_x).array ();
316+ const auto arena_x_val = to_arena ( value_of (arena_x).array () );
317317 const auto lb_val = value_of (arena_lb).array ().eval ();
318318 check_less (" lub_constrain" , " lb" , lb_val, ub_val);
319319 auto is_lb_inf = to_arena ((lb_val == NEGATIVE_INFTY));
320320 auto diff = to_arena (ub_val - lb_val);
321- auto neg_abs_x = to_arena (-( value_of (arena_x). array ()) .abs ());
322- auto inv_logit_x = to_arena (inv_logit (value_of (arena_x). array () ));
321+ auto neg_abs_x = to_arena (-arena_x_val .abs ());
322+ auto inv_logit_x = to_arena (inv_logit (arena_x_val ));
323323 arena_t <ret_type> ret = (is_lb_inf).select (
324- ub_val - value_of (arena_x). array () .exp (), diff * inv_logit_x + lb_val);
324+ ub_val - arena_x_val .exp (), diff * inv_logit_x + lb_val);
325325 lp += (is_lb_inf)
326- .select (value_of (arena_x). array () ,
326+ .select (arena_x_val ,
327327 log (diff) + (neg_abs_x - (2.0 * log1p_exp (neg_abs_x))))
328328 .sum ();
329- reverse_pass_callback ([arena_x, ub, arena_lb, ret, lp, diff, inv_logit_x,
329+ reverse_pass_callback (
330+ [arena_x, arena_x_val, ub, arena_lb, ret, lp, diff, inv_logit_x,
330331 is_lb_inf]() mutable {
331332 using T_var = arena_t <promote_scalar_t <var, T>>;
332333 using L_var = arena_t <promote_scalar_t <var, L>>;
333334 const auto lp_adj = lp.adj ();
334335 if (!is_constant<T>::value) {
335- const auto x_sign = value_of (arena_x). array () .sign ().eval ();
336+ const auto x_sign = arena_x_val .sign ().eval ();
336337 forward_as<T_var>(arena_x).adj ().array () += (is_lb_inf).select (
337- ret.adj ().array () * -value_of (arena_x). array () .exp () + lp_adj,
338+ ret.adj ().array () * -arena_x_val .exp () + lp_adj,
338339 ret.adj ().array () * diff * inv_logit_x * (1.0 - inv_logit_x)
339340 + lp.adj () * (1.0 - 2.0 * inv_logit_x));
340341 }
0 commit comments