1 #ifndef STAN_MATH_PRIM_FUN_INITIALIZE_HPP
2 #define STAN_MATH_PRIM_FUN_INITIALIZE_HPP
3 
4 #include <stan/math/prim/fun/Eigen.hpp>
5 #include <stan/math/prim/meta.hpp>
6 #include <vector>
7 #include <type_traits>
8 
9 namespace stan {
10 namespace math {
11 
12 // initializations called for local variables generate in Stan
13 // code; fills in all cells in first arg with second arg
14 
15 template <typename T, typename V, require_all_stan_scalar_t<T, V>* = nullptr,
16           require_convertible_t<V, T>* = nullptr>
initialize(T & x,V v)17 inline void initialize(T& x, V v) {
18   x = v;
19 }
20 
21 template <typename T, int R, int C, typename V>
initialize(Eigen::Matrix<T,R,C> & x,const V & v)22 inline void initialize(Eigen::Matrix<T, R, C>& x, const V& v) {
23   x.fill(v);
24 }
25 
26 template <typename T, typename V>
initialize(std::vector<T> & x,const V & v)27 inline void initialize(std::vector<T>& x, const V& v) {
28   for (size_t i = 0; i < x.size(); ++i) {
29     initialize(x[i], v);
30   }
31 }
32 
33 }  // namespace math
34 }  // namespace stan
35 #endif
36