#include <cmath>
#include <algorithm>
#include <limits>
#include <string>
#include <iostream>
#include <vector>
#include <tuple>
#include <cstdint>
#include <ignition/math/config.hh>
#include "ignition/math/Export.hh"
Go to the source code of this file.
Namespaces | |
ignition | |
ignition::math | |
Math classes and function useful in robot applications. | |
Macros | |
#define | IGN_BOX_VOLUME(_x, _y, _z) (_x *_y * _z) |
Compute box volume. More... | |
#define | IGN_BOX_VOLUME_V(_v) (_v.X() *_v.Y() * _v.Z()) |
Compute box volume from a vector. More... | |
#define | IGN_CYLINDER_VOLUME(_r, _l) (_l * IGN_PI * std::pow(_r, 2)) |
Compute cylinder volume. More... | |
#define | IGN_DBL_INF DPRCT_INF_D |
Double positive infinite value. More... | |
#define | IGN_DBL_LOW DPRCT_LOW_D |
Double low value, equivalent to -IGN_DBL_MAX. More... | |
#define | IGN_DBL_MAX DPRCT_MAX_D |
Double maximum value. This value will be similar to 1.79769e+308. More... | |
#define | IGN_DBL_MIN DPRCT_MIN_D |
Double min value. This value will be similar to 2.22507e-308. More... | |
#define | IGN_FLT_INF DPRCT_INF_F |
Float positive infinite value. More... | |
#define | IGN_FLT_LOW DPRCT_LOW_F |
Float lowest value, equivalent to -IGN_FLT_MAX. More... | |
#define | IGN_FLT_MAX DPRCT_MAX_F |
Float maximum value. This value will be similar to 3.40282e+38. More... | |
#define | IGN_FLT_MIN DPRCT_MIN_F |
Float minimum value. This value will be similar to 1.17549e-38. More... | |
#define | IGN_FP_VOLATILE |
Define IGN_FP_VOLATILE for FP equality comparisons Use volatile parameters when checking floating point equality on the 387 math coprocessor to work around bugs from the 387 extra precision. More... | |
#define | IGN_INT16_INF DPRCT_INF_I16 |
16-bit integer positive infinite value More... | |
#define | IGN_INT16_LOW DPRCT_LOW_I16 |
16bit integer lowest value. This is equivalent to IGN_INT16_MIN, and is defined here for completeness. More... | |
#define | IGN_INT16_MAX DPRCT_MAX_I16 |
16bit integer maximum value More... | |
#define | IGN_INT16_MIN DPRCT_MIN_I16 |
16bit integer minimum value More... | |
#define | IGN_INT32_INF DPRCT_INF_I32 |
32-bit integer positive infinite value More... | |
#define | IGN_INT32_LOW DPRCT_LOW_I32 |
32bit integer minimum value. This is equivalent to IGN_INT32_MIN, and is defined here for completeness. More... | |
#define | IGN_INT32_MAX DPRCT_MAX_I32 |
32bit integer maximum value More... | |
#define | IGN_INT32_MIN DPRCT_MIN_I32 |
32bit integer minimum value More... | |
#define | IGN_INT64_INF DPRCT_INF_I64 |
64-bit integer positive infinite value More... | |
#define | IGN_INT64_LOW DPRCT_LOW_I64 |
64bit integer lowest value. This is equivalent to IGN_INT64_MIN, and is defined here for completeness. More... | |
#define | IGN_INT64_MAX DPRCT_MAX_I64 |
64bit integer maximum value More... | |
#define | IGN_INT64_MIN DPRCT_MIN_I64 |
64bit integer minimum value More... | |
#define | IGN_PI 3.14159265358979323846 |
Define IGN_PI, IGN_PI_2, and IGN_PI_4. This was put here for Windows support. More... | |
#define | IGN_PI_2 1.57079632679489661923 |
#define | IGN_PI_4 0.78539816339744830962 |
#define | IGN_SPHERE_VOLUME(_radius) (4.0*IGN_PI*std::pow(_radius, 3)/3.0) |
Compute sphere volume. More... | |
#define | IGN_SQRT2 1.41421356237309504880 |
#define | IGN_UINT16_INF DPRCT_INF_UI16 |
16-bit unsigned integer positive infinite value More... | |
#define | IGN_UINT16_LOW DPRCT_LOW_UI16 |
16bit unsigned integer lowest value. This is equivalent to IGN_UINT16_MIN, and is defined here for completeness. More... | |
#define | IGN_UINT16_MAX DPRCT_MAX_UI16 |
16bit unsigned integer maximum value More... | |
#define | IGN_UINT16_MIN DPRCT_MIN_UI16 |
16bit unsigned integer minimum value More... | |
#define | IGN_UINT32_INF DPRCT_INF_UI32 |
32-bit unsigned integer positive infinite value More... | |
#define | IGN_UINT32_LOW DPRCT_LOW_UI32 |
32bit unsigned integer lowest value. This is equivalent to IGN_UINT32_MIN, and is defined here for completeness. More... | |
#define | IGN_UINT32_MAX DPRCT_MAX_UI32 |
32bit unsigned integer maximum value More... | |
#define | IGN_UINT32_MIN DPRCT_MIN_UI32 |
32bit unsigned integer minimum value More... | |
#define | IGN_UINT64_INF DPRCT_INF_UI64 |
64-bit unsigned integer positive infinite value More... | |
#define | IGN_UINT64_LOW DPRCT_LOW_UI64 |
64bit unsigned integer lowest value. This is equivalent to IGN_UINT64_MIN, and is defined here for completeness. More... | |
#define | IGN_UINT64_MAX DPRCT_MAX_UI64 |
64bit unsigned integer maximum value More... | |
#define | IGN_UINT64_MIN DPRCT_MIN_UI64 |
64bit unsigned integer minimum value More... | |
Typedefs | |
using | PairInput = uint32_t |
using | PairOutput = uint64_t |
Functions | |
template<typename T > | |
static const static double const static double const static double const static double const static float const static float const static float const static float const static uint16_t const static uint16_t const static uint16_t const static uint16_t const static int16_t const static int16_t const static int16_t const static int16_t const static uint32_t const static uint32_t const static uint32_t const static uint32_t const static int32_t const static int32_t const static int32_t const static int32_t const static uint64_t const static uint64_t const static uint64_t const static uint64_t const static int64_t const static int64_t const static int64_t const int64_t T | clamp (T _v, T _min, T _max) |
Simple clamping function. More... | |
template<typename T > | |
bool | equal (const T &_a, const T &_b, const T &_epsilon=T(1e-6)) |
check if two values are equal, within a tolerance More... | |
float | fixnan (float _v) |
Fix a nan value. More... | |
double | fixnan (double _v) |
Fix a nan value. More... | |
template<typename T > | |
bool | greaterOrNearEqual (const T &_a, const T &_b, const T &_epsilon=1e-6) |
inequality test, within a tolerance More... | |
bool | isEven (const int _v) |
Check if parameter is even. More... | |
bool | isEven (const unsigned int _v) |
Check if parameter is even. More... | |
bool | isnan (float _v) |
check if a float is NaN More... | |
bool | isnan (double _v) |
check if a double is NaN More... | |
bool | isOdd (const int _v) |
Check if parameter is odd. More... | |
bool | isOdd (const unsigned int _v) |
Check if parameter is odd. More... | |
bool | isPowerOfTwo (unsigned int _x) |
Is this a power of 2? More... | |
template<typename T > | |
bool | lessOrNearEqual (const T &_a, const T &_b, const T &_epsilon=1e-6) |
inequality test, within a tolerance More... | |
template<typename T > | |
T | max (const std::vector< T > &_values) |
get the maximum value of vector of values More... | |
template<typename T > | |
T | mean (const std::vector< T > &_values) |
get mean of vector of values More... | |
template<typename T > | |
T | min (const std::vector< T > &_values) |
get the minimum value of vector of values More... | |
PairOutput | Pair (const PairInput _a, const PairInput _b) |
A pairing function that maps two values to a unique third value. This is an implement of Szudzik's function. More... | |
double | parseFloat (const std::string &_input) |
parse string into float More... | |
int | parseInt (const std::string &_input) |
parse string into an integer More... | |
template<typename T > | |
T | precision (const T &_a, const unsigned int &_precision) |
get value at a specified precision More... | |
unsigned int | roundUpPowerOfTwo (unsigned int _x) |
Get the smallest power of two that is greater or equal to a given value. More... | |
template<typename T > | |
int | sgn (T _value) |
The signum function. More... | |
template<typename T > | |
int | signum (T _value) |
The signum function. More... | |
template<typename T > | |
void | sort2 (T &_a, T &_b) |
Sort two numbers, such that _a <= _b. More... | |
template<typename T > | |
void | sort3 (T &_a, T &_b, T &_c) |
Sort three numbers, such that _a <= _b <= _c. More... | |
std::tuple< PairInput, PairInput > | Unpair (const PairOutput _key) |
The reverse of the Pair function. Accepts a key, produced from the Pair function, and returns a tuple consisting of the two non-negative integer values used to create the _key. More... | |
template<typename T > | |
T | variance (const std::vector< T > &_values) |
get variance of vector of values More... | |
Variables | |
static const size_t | IGN_EIGHT_SIZE_T = 8u |
size_t type with a value of 8 More... | |
static const size_t | IGN_FIVE_SIZE_T = 5u |
size_t type with a value of 5 More... | |
static const size_t | IGN_FOUR_SIZE_T = 4u |
size_t type with a value of 4 More... | |
static const size_t | IGN_NINE_SIZE_T = 9u |
size_t type with a value of 9 More... | |
static const size_t | IGN_ONE_SIZE_T = 1u |
size_t type with a value of 1 More... | |
static const size_t | IGN_SEVEN_SIZE_T = 7u |
size_t type with a value of 7 More... | |
static const size_t | IGN_SIX_SIZE_T = 6u |
size_t type with a value of 6 More... | |
static const size_t | IGN_THREE_SIZE_T = 3u |
size_t type with a value of 3 More... | |
static const size_t | IGN_TWO_SIZE_T = 2u |
size_t type with a value of 2 More... | |
static const size_t | IGN_ZERO_SIZE_T = 0u |
size_t type with a value of 0 More... | |
static const double | INF_D = std::numeric_limits<double>::infinity() |
Double positive infinite value. More... | |
static const float | INF_F = std::numeric_limits<float>::infinity() |
float positive infinite value More... | |
static const int16_t | INF_I16 = std::numeric_limits<int16_t>::infinity() |
16-bit unsigned integer positive infinite value More... | |
static const int32_t | INF_I32 = std::numeric_limits<int32_t>::infinity() |
32-bit unsigned integer positive infinite value More... | |
static const int64_t | INF_I64 = std::numeric_limits<int64_t>::infinity() |
64-bit unsigned integer positive infinite value More... | |
static const uint16_t | INF_UI16 = std::numeric_limits<uint16_t>::infinity() |
16-bit unsigned integer positive infinite value More... | |
static const uint32_t | INF_UI32 = std::numeric_limits<uint32_t>::infinity() |
32-bit unsigned integer positive infinite value More... | |
static const uint64_t | INF_UI64 = std::numeric_limits<uint64_t>::infinity() |
64-bit unsigned integer positive infinite value More... | |
static const double | LOW_D = std::numeric_limits<double>::lowest() |
Double low value, equivalent to -MAX_D. More... | |
static const float | LOW_F = std::numeric_limits<float>::lowest() |
Float low value, equivalent to -MAX_F. More... | |
static const int16_t | LOW_I16 = std::numeric_limits<int16_t>::lowest() |
16bit unsigned integer lowest value. This is equivalent to IGN_INT16_MIN, and is defined here for completeness. More... | |
static const int32_t | LOW_I32 = std::numeric_limits<int32_t>::lowest() |
32bit unsigned integer lowest value. This is equivalent to IGN_INT32_MIN, and is defined here for completeness. More... | |
static const int64_t | LOW_I64 = std::numeric_limits<int64_t>::lowest() |
64bit unsigned integer lowest value. This is equivalent to IGN_INT64_MIN, and is defined here for completeness. More... | |
static const uint16_t | LOW_UI16 = std::numeric_limits<uint16_t>::lowest() |
16bit unsigned integer lowest value. This is equivalent to IGN_UINT16_MIN, and is defined here for completeness. More... | |
static const uint32_t | LOW_UI32 = std::numeric_limits<uint32_t>::lowest() |
32bit unsigned integer lowest value. This is equivalent to IGN_UINT32_MIN, and is defined here for completeness. More... | |
static const uint64_t | LOW_UI64 = std::numeric_limits<uint64_t>::lowest() |
64bit unsigned integer lowest value. This is equivalent to IGN_UINT64_MIN, and is defined here for completeness. More... | |
static const double | MAX_D = std::numeric_limits<double>::max() |
Double maximum value. This value will be similar to 1.79769e+308. More... | |
static const float | MAX_F = std::numeric_limits<float>::max() |
Float maximum value. This value will be similar to 3.40282e+38. More... | |
static const int16_t | MAX_I16 = std::numeric_limits<int16_t>::max() |
16bit unsigned integer maximum value More... | |
static const int32_t | MAX_I32 = std::numeric_limits<int32_t>::max() |
32bit unsigned integer maximum value More... | |
static const int64_t | MAX_I64 = std::numeric_limits<int64_t>::max() |
64bit unsigned integer maximum value More... | |
static const uint16_t | MAX_UI16 = std::numeric_limits<uint16_t>::max() |
16bit unsigned integer maximum value More... | |
static const uint32_t | MAX_UI32 = std::numeric_limits<uint32_t>::max() |
32bit unsigned integer maximum value More... | |
static const uint64_t | MAX_UI64 = std::numeric_limits<uint64_t>::max() |
64bit unsigned integer maximum value More... | |
static const double | MIN_D = std::numeric_limits<double>::min() |
Double min value. This value will be similar to 2.22507e-308. More... | |
static const float | MIN_F = std::numeric_limits<float>::min() |
Float minimum value. This value will be similar to 1.17549e-38. More... | |
static const int16_t | MIN_I16 = std::numeric_limits<int16_t>::min() |
16bit unsigned integer minimum value More... | |
static const int32_t | MIN_I32 = std::numeric_limits<int32_t>::min() |
32bit unsigned integer minimum value More... | |
static const int64_t | MIN_I64 = std::numeric_limits<int64_t>::min() |
64bit unsigned integer minimum value More... | |
static const uint16_t | MIN_UI16 = std::numeric_limits<uint16_t>::min() |
16bit unsigned integer minimum value More... | |
static const uint32_t | MIN_UI32 = std::numeric_limits<uint32_t>::min() |
32bit unsigned integer minimum value More... | |
static const uint64_t | MIN_UI64 = std::numeric_limits<uint64_t>::min() |
64bit unsigned integer minimum value More... | |
static const double | NAN_D = std::numeric_limits<double>::quiet_NaN() |
Returns the representation of a quiet not a number (NAN) More... | |
static const float | NAN_F = std::numeric_limits<float>::quiet_NaN() |
Returns the representation of a quiet not a number (NAN) More... | |
static const int | NAN_I = std::numeric_limits<int>::quiet_NaN() |
Returns the representation of a quiet not a number (NAN) More... | |
Macro Definition Documentation
◆ IGN_BOX_VOLUME
#define IGN_BOX_VOLUME | ( | _x, | |
_y, | |||
_z | |||
) | (_x *_y * _z) |
Compute box volume.
- Parameters
-
[in] _x X length [in] _y Y length [in] _z Z length
◆ IGN_BOX_VOLUME_V
#define IGN_BOX_VOLUME_V | ( | _v | ) | (_v.X() *_v.Y() * _v.Z()) |
Compute box volume from a vector.
- Parameters
-
[in] _v Vector3d that contains the box's dimensions.
◆ IGN_CYLINDER_VOLUME
Compute cylinder volume.
- Parameters
-
[in] _r Cylinder base radius [in] _l Cylinder length
◆ IGN_DBL_INF
#define IGN_DBL_INF DPRCT_INF_D |
Double positive infinite value.
- Deprecated:
- Use static const value instead.
◆ IGN_DBL_LOW
#define IGN_DBL_LOW DPRCT_LOW_D |
Double low value, equivalent to -IGN_DBL_MAX.
- Deprecated:
- Use static const value instead.
◆ IGN_DBL_MAX
#define IGN_DBL_MAX DPRCT_MAX_D |
Double maximum value. This value will be similar to 1.79769e+308.
- Deprecated:
- Use static const value instead.
◆ IGN_DBL_MIN
#define IGN_DBL_MIN DPRCT_MIN_D |
Double min value. This value will be similar to 2.22507e-308.
- Deprecated:
- Use static const value instead.
◆ IGN_FLT_INF
#define IGN_FLT_INF DPRCT_INF_F |
Float positive infinite value.
- Deprecated:
- Use static const value instead.
◆ IGN_FLT_LOW
#define IGN_FLT_LOW DPRCT_LOW_F |
Float lowest value, equivalent to -IGN_FLT_MAX.
- Deprecated:
- Use static const value instead.
◆ IGN_FLT_MAX
#define IGN_FLT_MAX DPRCT_MAX_F |
Float maximum value. This value will be similar to 3.40282e+38.
- Deprecated:
- Use static const value instead.
◆ IGN_FLT_MIN
#define IGN_FLT_MIN DPRCT_MIN_F |
Float minimum value. This value will be similar to 1.17549e-38.
- Deprecated:
- Use static const value instead.
◆ IGN_FP_VOLATILE
#define IGN_FP_VOLATILE |
Define IGN_FP_VOLATILE for FP equality comparisons Use volatile parameters when checking floating point equality on the 387 math coprocessor to work around bugs from the 387 extra precision.
Referenced by ignition::math::equal().
◆ IGN_INT16_INF
#define IGN_INT16_INF DPRCT_INF_I16 |
16-bit integer positive infinite value
- Deprecated:
- Use static const value instead.
◆ IGN_INT16_LOW
#define IGN_INT16_LOW DPRCT_LOW_I16 |
16bit integer lowest value. This is equivalent to IGN_INT16_MIN, and is defined here for completeness.
- Deprecated:
- Use static const value instead.
◆ IGN_INT16_MAX
#define IGN_INT16_MAX DPRCT_MAX_I16 |
16bit integer maximum value
- Deprecated:
- Use static const value instead.
◆ IGN_INT16_MIN
#define IGN_INT16_MIN DPRCT_MIN_I16 |
16bit integer minimum value
- Deprecated:
- Use static const value instead.
◆ IGN_INT32_INF
#define IGN_INT32_INF DPRCT_INF_I32 |
32-bit integer positive infinite value
- Deprecated:
- Use static const value instead.
◆ IGN_INT32_LOW
#define IGN_INT32_LOW DPRCT_LOW_I32 |
32bit integer minimum value. This is equivalent to IGN_INT32_MIN, and is defined here for completeness.
- Deprecated:
- Use static const value instead.
◆ IGN_INT32_MAX
#define IGN_INT32_MAX DPRCT_MAX_I32 |
32bit integer maximum value
- Deprecated:
- Use static const value instead.
◆ IGN_INT32_MIN
#define IGN_INT32_MIN DPRCT_MIN_I32 |
32bit integer minimum value
- Deprecated:
- Use static const value instead.
◆ IGN_INT64_INF
#define IGN_INT64_INF DPRCT_INF_I64 |
64-bit integer positive infinite value
- Deprecated:
- Use static const value instead.
◆ IGN_INT64_LOW
#define IGN_INT64_LOW DPRCT_LOW_I64 |
64bit integer lowest value. This is equivalent to IGN_INT64_MIN, and is defined here for completeness.
- Deprecated:
- Use static const value instead.
◆ IGN_INT64_MAX
#define IGN_INT64_MAX DPRCT_MAX_I64 |
64bit integer maximum value
- Deprecated:
- Use static const value instead.
◆ IGN_INT64_MIN
#define IGN_INT64_MIN DPRCT_MIN_I64 |
64bit integer minimum value
- Deprecated:
- Use static const value instead.
◆ IGN_PI
#define IGN_PI 3.14159265358979323846 |
Define IGN_PI, IGN_PI_2, and IGN_PI_4. This was put here for Windows support.
Referenced by Quaternion< T >::Euler(), Matrix4< T >::EulerRotation(), OnePole< math::Quaterniond >::Fc(), BiQuad< math::Vector3d >::Fc(), and MassMatrix3< T >::PrincipalMoments().
◆ IGN_PI_2
#define IGN_PI_2 1.57079632679489661923 |
Referenced by MassMatrix3< T >::PrincipalAxesOffset().
◆ IGN_PI_4
#define IGN_PI_4 0.78539816339744830962 |
◆ IGN_SPHERE_VOLUME
Compute sphere volume.
- Parameters
-
[in] _radius Sphere radius
◆ IGN_SQRT2
#define IGN_SQRT2 1.41421356237309504880 |
◆ IGN_UINT16_INF
#define IGN_UINT16_INF DPRCT_INF_UI16 |
16-bit unsigned integer positive infinite value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT16_LOW
#define IGN_UINT16_LOW DPRCT_LOW_UI16 |
16bit unsigned integer lowest value. This is equivalent to IGN_UINT16_MIN, and is defined here for completeness.
- Deprecated:
- Use static const value instead.
◆ IGN_UINT16_MAX
#define IGN_UINT16_MAX DPRCT_MAX_UI16 |
16bit unsigned integer maximum value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT16_MIN
#define IGN_UINT16_MIN DPRCT_MIN_UI16 |
16bit unsigned integer minimum value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT32_INF
#define IGN_UINT32_INF DPRCT_INF_UI32 |
32-bit unsigned integer positive infinite value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT32_LOW
#define IGN_UINT32_LOW DPRCT_LOW_UI32 |
32bit unsigned integer lowest value. This is equivalent to IGN_UINT32_MIN, and is defined here for completeness.
- Deprecated:
- Use static const value instead.
◆ IGN_UINT32_MAX
#define IGN_UINT32_MAX DPRCT_MAX_UI32 |
32bit unsigned integer maximum value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT32_MIN
#define IGN_UINT32_MIN DPRCT_MIN_UI32 |
32bit unsigned integer minimum value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT64_INF
#define IGN_UINT64_INF DPRCT_INF_UI64 |
64-bit unsigned integer positive infinite value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT64_LOW
#define IGN_UINT64_LOW DPRCT_LOW_UI64 |
64bit unsigned integer lowest value. This is equivalent to IGN_UINT64_MIN, and is defined here for completeness.
- Deprecated:
- Use static const value instead.
◆ IGN_UINT64_MAX
#define IGN_UINT64_MAX DPRCT_MAX_UI64 |
64bit unsigned integer maximum value
- Deprecated:
- Use static const value instead.
◆ IGN_UINT64_MIN
#define IGN_UINT64_MIN DPRCT_MIN_UI64 |
64bit unsigned integer minimum value
- Deprecated:
- Use static const value instead.