Automatic Differentiation
 
Loading...
Searching...
No Matches
tcrossprod.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_OPENCL_REV_TCROSSPROD_HPP
2#define STAN_MATH_OPENCL_REV_TCROSSPROD_HPP
3#ifdef STAN_OPENCL
4
8
9namespace stan {
10namespace math {
11
20template <typename T,
21 require_all_kernel_expressions_and_none_scalar_t<T>* = nullptr>
23 return make_callback_var(M.val() * transpose(M.val()),
24 [M](vari_value<matrix_cl<double>>& res) mutable {
25 M.adj() += (res.adj() + transpose(res.adj()))
26 * M.val();
27 });
28}
29
30} // namespace math
31} // namespace stan
32
33#endif
34#endif
Represents an arithmetic matrix on the OpenCL device.
Definition matrix_cl.hpp:47
auto transpose(Arg &&a)
Transposes a kernel generator expression.
Eigen::Matrix< value_type_t< EigMat >, EigMat::RowsAtCompileTime, EigMat::RowsAtCompileTime > tcrossprod(const EigMat &m)
var_value< plain_type_t< T > > make_callback_var(T &&value, F &&functor)
Creates a new var initialized with a callback_vari with a given value and reverse-pass callback funct...
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...