Automatic Differentiation
 
Loading...
Searching...
No Matches
crossprod.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_OPENCL_REV_CROSSPROD_HPP
2#define STAN_MATH_OPENCL_REV_CROSSPROD_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(transpose(M.val()) * M.val(),
24 [M](vari_value<matrix_cl<double>>& res) mutable {
25 M.adj() += M.val()
26 * (res.adj() + transpose(res.adj()));
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.
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...
matrix_cl< typename std::decay_t< T_A >::Scalar > crossprod(T_A &&A)
Returns the result of pre-multiplying a matrix by its own transpose.
Definition crossprod.hpp:21
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...