Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
 
Loading...
Searching...
No Matches
StemFunction.h
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2010, 2013 Jitse Niesen <jitse@maths.leeds.ac.uk>
5//
6// This Source Code Form is subject to the terms of the Mozilla
7// Public License v. 2.0. If a copy of the MPL was not distributed
8// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10#ifndef EIGEN_STEM_FUNCTION
11#define EIGEN_STEM_FUNCTION
12
13namespace Eigen {
14
15namespace internal {
16
18template <typename Scalar>
19Scalar stem_function_exp(Scalar x, int)
20{
21 using std::exp;
22 return exp(x);
23}
24
26template <typename Scalar>
27Scalar stem_function_cos(Scalar x, int n)
28{
29 using std::cos;
30 using std::sin;
31 Scalar res;
32
33 switch (n % 4) {
34 case 0:
35 res = std::cos(x);
36 break;
37 case 1:
38 res = -std::sin(x);
39 break;
40 case 2:
41 res = -std::cos(x);
42 break;
43 case 3:
44 res = std::sin(x);
45 break;
46 }
47 return res;
48}
49
51template <typename Scalar>
52Scalar stem_function_sin(Scalar x, int n)
53{
54 using std::cos;
55 using std::sin;
56 Scalar res;
57
58 switch (n % 4) {
59 case 0:
60 res = std::sin(x);
61 break;
62 case 1:
63 res = std::cos(x);
64 break;
65 case 2:
66 res = -std::sin(x);
67 break;
68 case 3:
69 res = -std::cos(x);
70 break;
71 }
72 return res;
73}
74
76template <typename Scalar>
77Scalar stem_function_cosh(Scalar x, int n)
78{
79 using std::cosh;
80 using std::sinh;
81 Scalar res;
82
83 switch (n % 2) {
84 case 0:
85 res = std::cosh(x);
86 break;
87 case 1:
88 res = std::sinh(x);
89 break;
90 }
91 return res;
92}
93
95template <typename Scalar>
96Scalar stem_function_sinh(Scalar x, int n)
97{
98 using std::cosh;
99 using std::sinh;
100 Scalar res;
101
102 switch (n % 2) {
103 case 0:
104 res = std::sinh(x);
105 break;
106 case 1:
107 res = std::cosh(x);
108 break;
109 }
110 return res;
111}
112
113} // end namespace internal
114
115} // end namespace Eigen
116
117#endif // EIGEN_STEM_FUNCTION
Namespace containing all symbols from the Eigen library.
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_exp_op< typename Derived::Scalar >, const Derived > exp(const Eigen::ArrayBase< Derived > &x)