CMS 3D CMS Logo

Exp.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_Utilities_Exp_h
2 #define PhysicsTools_Utilities_Exp_h
3 
4 #include <cmath>
5 
6 namespace funct {
7 
8  template<typename T>
9  struct ExpStruct {
10  ExpStruct(const T& t) : _(t) { }
11  inline double operator()() const { return ::exp(_()); }
12  T _;
13  };
14 
15  template<typename T>
16  struct Exp {
17  typedef ExpStruct<T> type;
18  inline static type compose(const T& t) { return type(t); }
19  };
20 
21  template<typename T>
22  inline typename Exp<T>::type exp(const T & t) { return Exp<T>::compose(t); }
23 
24 }
25 
26 #endif
Definition: Abs.h:5
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
static type compose(const T &t)
Definition: Exp.h:18
Definition: Exp.h:16
double operator()() const
Definition: Exp.h:11
arg type
Definition: Factorize.h:39
ExpStruct< T > type
Definition: Exp.h:17
ExpStruct(const T &t)
Definition: Exp.h:10
long double T