CMS 3D CMS Logo

Tan.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_Utilities_Tan_h
2 #define PhysicsTools_Utilities_Tan_h
3 #include <cmath>
4 
5 namespace funct {
6 
7  template <typename T>
8  struct TanStruct {
9  TanStruct(const T& t) : _(t) {}
10  inline double operator()() const { return ::tan(_()); }
11  inline operator double() const { return ::tan(_()); }
12  T _;
13  };
14 
15  template <typename T>
16  struct Tan {
17  typedef TanStruct<T> type;
18  inline static type compose(const T& t) { return type(t); }
19  };
20 
21  template <typename T>
22  inline typename Tan<T>::type tan(const T& t) {
23  return Tan<T>::compose(t);
24  }
25 
26 } // namespace funct
27 
28 #endif
funct::Tan
Definition: Tan.h:16
funct::Tan::compose
static type compose(const T &t)
Definition: Tan.h:18
funct::TanStruct::_
T _
Definition: Tan.h:12
funct::TanStruct
Definition: Tan.h:8
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
funct::TanStruct::TanStruct
TanStruct(const T &t)
Definition: Tan.h:9
T
long double T
Definition: Basic3DVectorLD.h:48
funct::Tan::type
TanStruct< T > type
Definition: Tan.h:17
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
funct::TanStruct::operator()
double operator()() const
Definition: Tan.h:10
funct
Definition: Abs.h:5