| Stan Math Library 2.12.0 reverse mode automatic differentiation

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

apply_scalar_unary.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_VECTORIZE_APPLY_SCALAR_UNARY_HPP
2 #define STAN_MATH_PRIM_MAT_VECTORIZE_APPLY_SCALAR_UNARY_HPP
3
4 #include <Eigen/Dense>
5 #include <vector>
6
7 namespace stan {
8 namespace math {
9
34 template <typename F, typename T>
35 struct apply_scalar_unary {
39 typedef typename Eigen::internal::traits<T>::Scalar scalar_t;
40
45 typedef Eigen::Matrix<scalar_t, T::RowsAtCompileTime,
46 T::ColsAtCompileTime>
47 return_t;
48
57 static inline return_t apply(const T& x) {
58 return_t result(x.rows(), x.cols());
59 for (int j = 0; j < x.cols(); ++j)
60 for (int i = 0; i < x.rows(); ++i)
61 result(i, j) = apply_scalar_unary<F, scalar_t>::apply(x(i, j));
62 return result;
63 }
64 };
65
72 template <typename F>
73 struct apply_scalar_unary<F, double> {
77 typedef double return_t;
78
88 static inline return_t apply(double x) {
89 return F::fun(x);
90 }
91 };
92
101 template <typename F>
102 struct apply_scalar_unary<F, int> {
106 typedef double return_t;
107
117 static inline return_t apply(int x) {
118 return F::fun(static_cast<double>(x));
119 }
120 };
121
131 template <typename F, typename T>
132 struct apply_scalar_unary<F, std::vector<T> > {
137 typedef typename std::vector<typename apply_scalar_unary<F, T>::return_t>
138 return_t;
139
149 static inline return_t apply(const std::vector<T>& x) {
150 return_t fx(x.size());
151 for (size_t i = 0; i < x.size(); ++i)
152 fx[i] = apply_scalar_unary<F, T>::apply(x[i]);
153 return fx;
154 }
155 };
156
157 }
158 }
159 #endif
stan::math::apply_scalar_unary< F, double >::apply
static return_t apply(double x)
Apply the function specified by F to the specified argument.
Definition: apply_scalar_unary.hpp:88
stan
Definition: log_sum_exp.hpp:8
std
Definition: std_numeric_limits.hpp:7
stan::math::apply_scalar_unary::return_t
Eigen::Matrix< scalar_t, T::RowsAtCompileTime, T::ColsAtCompileTime > return_t
Return type for applying the function elementwise to a matrix expression template of type T...
Definition: apply_scalar_unary.hpp:47
stan::math::apply_scalar_unary< F, std::vector< T > >::apply
static return_t apply(const std::vector< T > &x)
Apply the function specified by F elementwise to the specified argument.
Definition: apply_scalar_unary.hpp:149
stan::math::apply_scalar_unary< F, int >::apply
static return_t apply(int x)
Apply the function specified by F to the specified argument.
Definition: apply_scalar_unary.hpp:117
stan::math::apply_scalar_unary< F, double >::return_t
double return_t
The return type, double.
Definition: apply_scalar_unary.hpp:77
stan::math::apply_scalar_unary< F, std::vector< T > >::return_t
std::vector< typename apply_scalar_unary< F, T >::return_t > return_t
Return type, which is calculated recursively as a standard vector of the return type of the contained...
Definition: apply_scalar_unary.hpp:138
stan::math::apply_scalar_unary::scalar_t
Eigen::internal::traits< T >::Scalar scalar_t
Type of underlying scalar for the matrix type T.
Definition: apply_scalar_unary.hpp:39
stan::math::apply_scalar_unary
Base template class for vectorization of unary scalar functions defined by a template class F to a sc...
Definition: apply_scalar_unary.hpp:35
stan::math::apply_scalar_unary< F, int >::return_t
double return_t
The return type, double.
Definition: apply_scalar_unary.hpp:106
stan::math::apply_scalar_unary::apply
static return_t apply(const T &x)
Return the result of applying the function defined by the template parameter F to the specified matri...
Definition: apply_scalar_unary.hpp:57

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