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