Robotics Library  0.7.0
Real.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2009, Markus Rickert
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are met:
7 //
8 // * Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 //
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
18 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 // POSSIBILITY OF SUCH DAMAGE.
25 //
26 
27 #ifndef RL_MATH_REAL_H
28 #define RL_MATH_REAL_H
29 
30 #include <cmath>
31 
35 namespace rl
36 {
40  namespace math
41  {
42  typedef double Real;
43 
44  template<typename T>
45  inline T cbrt(const T& arg)
46  {
47  if (arg < 0)
48  {
49  return -::std::pow(-arg, static_cast<T>(1.0 / 3.0));
50  }
51  else
52  {
53  return ::std::pow(arg, static_cast<T>(1.0 / 3.0));
54  }
55  }
56 
57  template<typename T>
58  inline T sign(const T& arg)
59  {
60  if (arg > 0)
61  {
62  return 1;
63  }
64  else if (arg < 0)
65  {
66  return -1;
67  }
68  else
69  {
70  return 0;
71  }
72  }
73  }
74 }
75 
76 #endif // RL_MATH_REAL_H
pow
Quaternion< Scalar > pow(const Scalar &t) const
Definition: QuaternionBaseAddons.h:128
rl::math::sign
T sign(const T &arg)
Definition: Real.h:58
rl::math::cbrt
T cbrt(const T &arg)
Definition: Real.h:45
rl::math::Real
double Real
Definition: Real.h:42
rl
Robotics Library.
Definition: AnalogInput.cpp:30