StemFunction.h
Go to the documentation of this file.
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 
13 namespace Eigen {
14 
15 namespace internal {
16 
18 template <typename Scalar>
19 Scalar stem_function_exp(Scalar x, int)
20 {
21  using std::exp;
22  return exp(x);
23 }
24 
26 template <typename Scalar>
27 Scalar 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 
51 template <typename Scalar>
52 Scalar 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 
76 template <typename Scalar>
77 Scalar 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 
95 template <typename Scalar>
96 Scalar 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
Scalar stem_function_sinh(Scalar x, int n)
Hyperbolic sine (and its derivatives).
Definition: StemFunction.h:96
EIGEN_DEVICE_FUNC const ExpReturnType exp() const
EIGEN_DEVICE_FUNC const CoshReturnType cosh() const
Definition: LDLT.h:16
EIGEN_DEVICE_FUNC const CosReturnType cos() const
Scalar stem_function_exp(Scalar x, int)
The exponential function (and its derivatives).
Definition: StemFunction.h:19
EIGEN_DEVICE_FUNC const SinhReturnType sinh() const
Scalar stem_function_sin(Scalar x, int n)
Sine (and its derivatives).
Definition: StemFunction.h:52
Scalar stem_function_cos(Scalar x, int n)
Cosine (and its derivatives).
Definition: StemFunction.h:27
Scalar stem_function_cosh(Scalar x, int n)
Hyperbolic cosine (and its derivatives).
Definition: StemFunction.h:77
EIGEN_DEVICE_FUNC const SinReturnType sin() const


hebiros
Author(s): Xavier Artache , Matthew Tesch
autogenerated on Thu Sep 3 2020 04:09:03