1#ifndef STAN_MATH_REV_CORE_GEVV_VVV_VARI_HPP
2#define STAN_MATH_REV_CORE_GEVV_VVV_VARI_HPP
19 const var* v2,
int stride2,
size_t length,
22 for (
size_t i = 0; i < length; i++) {
23 result += v1[i * stride1].vi_->val_ * v2[i * stride2].vi_->val_;
26 return alpha->vi_->val_ * result;
31 int stride2,
size_t length)
39 for (
size_t i = 0; i <
length_; i++) {
40 v1_[i] = v1[i * stride1].vi_;
42 for (
size_t i = 0; i <
length_; i++) {
43 v2_[i] = v2[i * stride2].vi_;
48 const double adj_alpha = adj_ *
alpha_->val_;
49 for (
size_t i = 0; i <
length_; i++) {
50 v1_[i]->adj_ += adj_alpha *
v2_[i]->val_;
51 v2_[i]->adj_ += adj_alpha *
v1_[i]->val_;
gevv_vvv_vari(const var *alpha, const var *v1, int stride1, const var *v2, int stride2, size_t length)
static double eval_gevv(const var *alpha, const var *v1, int stride1, const var *v2, int stride2, size_t length, double *dotprod)
void * alloc(size_t len)
Return a newly allocated block of memory of the appropriate size managed by the stack allocator.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
static thread_local AutodiffStackStorage * instance_