DGtal
1.3.beta
src
DGtal
math
BasicMathFunctions.h
1
17
#pragma once
18
33
#if defined(BasicMathFunctions_RECURSES)
34
#error Recursive header files inclusion detected in BasicMathFunctions.h
35
#else // defined(BasicMathFunctions_RECURSES)
36
37
#define BasicMathFunctions_RECURSES
38
39
#if !defined BasicMathFunctions_h
40
41
#define BasicMathFunctions_h
42
44
// Inclusions
45
#include <algorithm>
46
#include <functional>
47
#include "DGtal/base/Common.h"
48
#include "DGtal/base/Bits.h"
49
#include "DGtal/kernel/NumberTraits.h"
51
52
namespace
DGtal
53
{
54
namespace
functions
55
{
56
72
template
<
typename
T>
73
T
power
(
const
T&aVal,
const
unsigned
int
exponent)
74
{
75
unsigned
int
q=exponent;
76
T p(aVal);
77
78
if
(exponent == 0) {
return
1; }
79
80
T result =
NumberTraits<T>::ONE
;
81
while
(q != 0)
82
{
83
if
(q % 2 == 1) {
// q is odd
84
result *= p;
85
q--;
86
}
87
p *= p;
88
q /= 2;
89
}
90
return
result;
91
}
92
93
101
template
<
typename
T>
102
T
roundToUpperPowerOfTwo
(
const
T &n){
103
return
(T) 1 << (1+
DGtal::Bits::mostSignificantBit
( (
unsigned
int
) n-1 ) );
104
}
105
115
template
<
typename
T>
116
T
abs
(
const
T & a)
117
{
118
BOOST_CONCEPT_ASSERT((
boost::LessThanComparable<T>
));
119
if
(a<0)
120
return
-a;
121
else
122
return
a;
123
}
124
131
template
<
typename
T>
132
inline
133
T
square
( T x )
134
{
return
x * x; }
135
142
template
<
typename
T>
143
inline
144
T
cube
( T x )
145
{
return
x * x * x; }
146
147
}
// namespace functions
148
}
// namespace DGTal
149
150
151
153
154
#endif // !defined BasicMathFunctions_h
155
156
#undef BasicMathFunctions_RECURSES
157
#endif // else defined(BasicMathFunctions_RECURSES)
DGtal::functions::cube
T cube(T x)
Definition:
BasicMathFunctions.h:144
DGtal::NumberTraits
Aim: The traits class for all models of Cinteger.
Definition:
NumberTraits.h:562
boost::LessThanComparable
Go to http://www.sgi.com/tech/stl/LessThanComparable.html.
Definition:
Boost.dox:48
DGtal::Bits::mostSignificantBit
static unsigned int mostSignificantBit(DGtal::uint8_t n)
Definition:
Bits.h:343
DGtal::functions::roundToUpperPowerOfTwo
T roundToUpperPowerOfTwo(const T &n)
Definition:
BasicMathFunctions.h:102
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
DGtal::functions::square
T square(T x)
Definition:
BasicMathFunctions.h:133
DGtal::functions::abs
T abs(const T &a)
Definition:
BasicMathFunctions.h:116
DGtal::functions::power
T power(const T &aVal, const unsigned int exponent)
Definition:
BasicMathFunctions.h:73
Generated on Mon Jun 20 2022 18:23:18 for DGtal by
1.8.17