1#ifndef STAN_MATH_PRIM_FUN_SUBTRACT_HPP
2#define STAN_MATH_PRIM_FUN_SUBTRACT_HPP
21template <
typename ScalarA,
typename ScalarB,
22 require_all_stan_scalar_t<ScalarA, ScalarB>* =
nullptr,
23 require_all_not_var_t<ScalarA, ScalarB>* =
nullptr>
40template <
typename Mat1,
typename Mat2,
43inline auto subtract(
const Mat1& m1,
const Mat2& m2) {
58template <
typename Scal,
typename Mat, require_stan_scalar_t<Scal>* =
nullptr,
59 require_eigen_t<Mat>* =
nullptr,
60 require_all_not_st_var<Mat, Scal>* =
nullptr>
61inline auto subtract(
const Scal c,
const Mat& m) {
62 return (c - m.array()).matrix();
75template <
typename Mat,
typename Scal, require_eigen_t<Mat>* =
nullptr,
76 require_stan_scalar_t<Scal>* =
nullptr,
77 require_all_not_st_var<Scal, Mat>* =
nullptr>
78inline auto subtract(
const Mat& m,
const Scal c) {
79 return (m.array() - c).matrix();
require_all_t< is_eigen< std::decay_t< Types > >... > require_all_eigen_t
Require all of the types satisfy is_eigen.
subtraction_< as_operation_cl_t< T_a >, as_operation_cl_t< T_b > > subtract(T_a &&a, T_b &&b)
typename return_type< Ts... >::type return_type_t
Convenience type for the return type of the specified template parameters.
require_all_not_t< is_var< scalar_type_t< std::decay_t< Types > > >... > require_all_not_st_var
Require none of the scalar types satisfy is_var.
void check_matching_dims(const char *function, const char *name1, const T1 &y1, const char *name2, const T2 &y2)
Check if the two containers have the same dimensions.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...