Stan  2.5.0
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
to_fvar.hpp
Go to the documentation of this file.
1 #ifndef STAN__AGRAD__FWD__MATRIX__TO_FVAR_HPP
2 #define STAN__AGRAD__FWD__MATRIX__TO_FVAR_HPP
3 
4 #include <vector>
10 
11 namespace stan {
12  namespace agrad {
13 
14  template<typename T>
15  inline
16  fvar<T>
17  to_fvar(const T& x) {
18  return fvar<T>(x);
19  }
20 
21  template<typename T>
22  inline
23  fvar<T>
24  to_fvar(const fvar<T>& x) {
25  return x;
26  }
27 
28  inline
29  matrix_fd
31  matrix_fd m_v(m.rows(), m.cols());
32  for (int j = 0; j < m.cols(); ++j)
33  for (int i = 0; i < m.rows(); ++i)
34  m_v(i,j) = m(i,j);
35  return m_v;
36  }
37 
38  inline
39  matrix_fd
40  to_fvar(const matrix_fd& m) {
41  return m;
42  }
43 
44  inline
45  matrix_fv
46  to_fvar(const matrix_fv& m) {
47  return m;
48  }
49 
50  inline
52  to_fvar(const matrix_ffd& m) {
53  return m;
54  }
55 
56  inline
57  matrix_ffv
58  to_fvar(const matrix_ffv& m) {
59  return m;
60  }
61 
62  inline
63  vector_fd
65  vector_fd v_v(v.size());
66  for (int i = 0; i < v.size(); ++i)
67  v_v[i] = v[i];
68  return v_v;
69  }
70 
71  inline
72  vector_fd
73  to_fvar(const vector_fd& v) {
74  return v;
75  }
76 
77  inline
78  vector_fv
79  to_fvar(const vector_fv& v) {
80  return v;
81  }
82 
83  inline
85  to_fvar(const vector_ffd& v) {
86  return v;
87  }
88 
89  inline
90  vector_ffv
91  to_fvar(const vector_ffv& v) {
92  return v;
93  }
94 
95  inline
98  row_vector_fd rv_v(rv.size());
99  for (int i = 0; i < rv.size(); ++i)
100  rv_v[i] = rv[i];
101  return rv_v;
102  }
103 
104  inline
106  to_fvar(const row_vector_fd& rv) {
107  return rv;
108  }
109 
110  inline
112  to_fvar(const row_vector_fv& rv) {
113  return rv;
114  }
115 
116  inline
118  to_fvar(const row_vector_ffd& rv) {
119  return rv;
120  }
121 
122  inline
124  to_fvar(const row_vector_ffv& rv) {
125  return rv;
126  }
127 
128  template<typename T, int R, int C>
129  inline
130  Eigen::Matrix<fvar<T>, R, C>
131  to_fvar(const Eigen::Matrix<T,R,C>& val,
132  const Eigen::Matrix<T,R,C>& deriv) {
133 
134  stan::math::check_matching_dims("to_fvar(%1%)",val,"value",
135  deriv, "deriv",(double*)0);
136  Eigen::Matrix<fvar<T>,R,C> ret(val.rows(), val.cols());
137  for(size_type i = 0; i < val.rows(); i++) {
138  for(size_type j = 0; j < val.cols(); j++) {
139  ret(i,j).val_ = val(i,j);
140  ret(i,j).d_ = deriv(i,j);
141  }
142  }
143  return ret;
144  }
145  }
146 }
147 #endif
Eigen::Matrix< fvar< double >, 1, Eigen::Dynamic > row_vector_fd
Definition: typedefs.hpp:50
fvar< T > to_fvar(const T &x)
Definition: to_fvar.hpp:17
Eigen::Matrix< fvar< fvar< var > >, 1, Eigen::Dynamic > row_vector_ffv
Definition: typedefs.hpp:62
Eigen::Matrix< fvar< var >, 1, Eigen::Dynamic > row_vector_fv
Definition: typedefs.hpp:54
bool check_matching_dims(const char *function, const Eigen::Matrix< T1, R1, C1 > &y1, const char *name1, const Eigen::Matrix< T2, R2, C2 > &y2, const char *name2, T_result *result)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic >::Index size_type
Definition: typedefs.hpp:14
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > matrix_d
Type for matrix of double values.
Definition: typedefs.hpp:23
Eigen::Matrix< fvar< double >, Eigen::Dynamic, 1 > vector_fd
Definition: typedefs.hpp:34
Eigen::Matrix< fvar< fvar< double > >, 1, Eigen::Dynamic > row_vector_ffd
Definition: typedefs.hpp:58
Eigen::Matrix< fvar< double >, Eigen::Dynamic, Eigen::Dynamic > matrix_fd
Definition: typedefs.hpp:18
Eigen::Matrix< fvar< fvar< var > >, Eigen::Dynamic, Eigen::Dynamic > matrix_ffv
Definition: typedefs.hpp:30
Eigen::Matrix< fvar< var >, Eigen::Dynamic, 1 > vector_fv
Definition: typedefs.hpp:38
Eigen::Matrix< fvar< var >, Eigen::Dynamic, Eigen::Dynamic > matrix_fv
Definition: typedefs.hpp:22
Eigen::Matrix< fvar< fvar< double > >, Eigen::Dynamic, 1 > vector_ffd
Definition: typedefs.hpp:42
Eigen::Matrix< double, Eigen::Dynamic, 1 > vector_d
Type for (column) vector of double values.
Definition: typedefs.hpp:30
Eigen::Matrix< fvar< fvar< var > >, Eigen::Dynamic, 1 > vector_ffv
Definition: typedefs.hpp:46
Eigen::Matrix< fvar< fvar< double > >, Eigen::Dynamic, Eigen::Dynamic > matrix_ffd
Definition: typedefs.hpp:26
Eigen::Matrix< double, 1, Eigen::Dynamic > row_vector_d
Type for (row) vector of double values.
Definition: typedefs.hpp:37

     [ Stan Home Page ] © 2011–2014, Stan Development Team.