Ignition Math

API Reference

4.0.0
ignition::math Namespace Reference

Math classes and function useful in robot applications. More...

Namespaces

 graph
 

Classes

class  Angle
 An angle and related functions. More...
 
class  BiQuad
 Bi-quad filter base class. More...
 
class  BiQuadVector3
 BiQuad vector3 filter. More...
 
class  Box
 Mathematical representation of a box and related functions. More...
 
class  Color
 Defines a color using a red (R), green (G), blue (B), and alpha (A) component. Each color component is in the range [0..1]. More...
 
class  Filter
 Filter base class. More...
 
class  Frustum
 Mathematical representation of a frustum and related functions. This is also known as a view frustum. More...
 
class  Inertial
 A class for inertial information about a rigid body consisting of the scalar mass, a 3x3 symmetric moment of inertia matrix, and center of mass reference frame pose. More...
 
class  Kmeans
 K-Means clustering algorithm. Given a set of observations, k-means partitions the observations into k sets so as to minimize the within-cluster sum of squares. Description based on http://en.wikipedia.org/wiki/K-means_clustering. More...
 
class  Line2
 A two dimensional line segment. The line is defined by a start and end point. More...
 
class  Line3
 A three dimensional line segment. The line is defined by a start and end point. More...
 
class  MassMatrix3
 A class for inertial information about a rigid body consisting of the scalar mass and a 3x3 symmetric moment of inertia matrix stored as two Vector3's. More...
 
class  Matrix3
 A 3x3 matrix class. More...
 
class  Matrix4
 A 4x4 matrix class. More...
 
class  MovingWindowFilter
 Base class for MovingWindowFilter. This replaces the version of MovingWindowFilter in the Ignition Common library. More...
 
class  OnePole
 A one-pole DSP filter. More...
 
class  OnePoleQuaternion
 One-pole quaternion filter. More...
 
class  OnePoleVector3
 One-pole vector3 filter. More...
 
class  OrientedBox
 Mathematical representation of a box which can be arbitrarily positioned and rotated. More...
 
class  PID
 Generic PID controller class. Generic proportional-integral-derivative controller class that keeps track of PID-error states and control inputs given the state of a system and a user specified target state. It includes a user-adjustable command offset term (feed-forward). More...
 
class  Plane
 A plane and related functions. More...
 
class  Pose3
 Encapsulates a position and rotation in three space. More...
 
class  Quaternion
 A quaternion class. More...
 
class  Rand
 Random number generator class. More...
 
class  RotationSpline
 Spline for rotations. More...
 
class  SemanticVersion
 Version comparison class based on Semantic Versioning 2.0.0 http://semver.org/ Compares versions and converts versions from string. More...
 
class  SignalMaxAbsoluteValue
 Computing the maximum of the absolute value of a discretely sampled signal. Also known as the maximum norm, infinity norm, or supremum norm. More...
 
class  SignalMaximum
 Computing the maximum value of a discretely sampled signal. More...
 
class  SignalMean
 Computing the mean value of a discretely sampled signal. More...
 
class  SignalMinimum
 Computing the minimum value of a discretely sampled signal. More...
 
class  SignalRootMeanSquare
 Computing the square root of the mean squared value of a discretely sampled signal. More...
 
class  SignalStatistic
 Statistical properties of a discrete time scalar signal. More...
 
class  SignalStats
 Collection of statistics for a scalar signal. More...
 
class  SignalVariance
 Computing the incremental variance of a discretely sampled signal. More...
 
class  SphericalCoordinates
 Convert spherical coordinates for planetary surfaces. More...
 
class  Spline
 Splines. More...
 
class  Temperature
 A class that stores temperature information, and allows conversion between different units. More...
 
class  Triangle
 Triangle class and related functions. More...
 
class  Triangle3
 A 3-dimensional triangle and related functions. More...
 
class  Vector2
 Two dimensional (x, y) vector. More...
 
class  Vector3
 The Vector3 class represents the generic vector containing 3 elements. Since it's commonly used to keep coordinate system related information, its elements are labeled by x, y, z. More...
 
class  Vector3Stats
 Collection of statistics for a Vector3 signal. More...
 
class  Vector4
 T Generic x, y, z, w vector. More...
 

Typedefs

typedef std::mt19937 GeneratorType
 
typedef Inertial< double > Inertiald
 
typedef Inertial< float > Inertialf
 
typedef Line2< double > Line2d
 
typedef Line2< float > Line2f
 
typedef Line2< int > Line2i
 
typedef Line3< double > Line3d
 
typedef Line3< float > Line3f
 
typedef Line3< int > Line3i
 
typedef MassMatrix3< double > MassMatrix3d
 
typedef MassMatrix3< float > MassMatrix3f
 
typedef Matrix3< double > Matrix3d
 
typedef Matrix3< float > Matrix3f
 
typedef Matrix3< int > Matrix3i
 
typedef Matrix4< double > Matrix4d
 
typedef Matrix4< float > Matrix4f
 
typedef Matrix4< int > Matrix4i
 
typedef std::normal_distribution< double > NormalRealDist
 
typedef OrientedBox< double > OrientedBoxd
 
typedef OrientedBox< float > OrientedBoxf
 
typedef OrientedBox< int > OrientedBoxi
 
using PairInput = uint32_t
 
using PairOutput = uint64_t
 
typedef Plane< double > Planed
 
typedef Plane< float > Planef
 
typedef Plane< int > Planei
 
typedef Pose3< double > Pose3d
 
typedef Pose3< float > Pose3f
 
typedef Pose3< int > Pose3i
 
typedef Quaternion< double > Quaterniond
 
typedef Quaternion< float > Quaternionf
 
typedef Quaternion< int > Quaternioni
 
typedef Triangle3< double > Triangle3d
 Double specialization of the Triangle class. More...
 
typedef Triangle3< float > Triangle3f
 Float specialization of the Triangle class. More...
 
typedef Triangle3< int > Triangle3i
 Integer specialization of the Triangle class. More...
 
typedef Triangle< double > Triangled
 Double specialization of the Triangle class. More...
 
typedef Triangle< float > Trianglef
 Float specialization of the Triangle class. More...
 
typedef Triangle< int > Trianglei
 Integer specialization of the Triangle class. More...
 
typedef std::uniform_int_distribution< int32_t > UniformIntDist
 
typedef std::uniform_real_distribution< double > UniformRealDist
 
typedef Vector2< double > Vector2d
 
typedef Vector2< float > Vector2f
 
typedef Vector2< int > Vector2i
 
typedef Vector3< double > Vector3d
 
typedef Vector3< float > Vector3f
 
typedef Vector3< int > Vector3i
 
typedef Vector4< double > Vector4d
 
typedef Vector4< float > Vector4f
 
typedef Vector4< int > Vector4i
 

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 >
max (const std::vector< T > &_values)
 get the maximum value of vector of values More...
 
template<typename T >
mean (const std::vector< T > &_values)
 get mean of vector of values More...
 
template<typename 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 >
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, PairInputUnpair (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 >
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...
 

Detailed Description

Math classes and function useful in robot applications.

Typedef Documentation

◆ GeneratorType

◆ Inertiald

typedef Inertial<double> Inertiald

◆ Inertialf

typedef Inertial<float> Inertialf

◆ Line2d

typedef Line2<double> Line2d

◆ Line2f

typedef Line2<float> Line2f

◆ Line2i

typedef Line2<int> Line2i

◆ Line3d

typedef Line3<double> Line3d

◆ Line3f

typedef Line3<float> Line3f

◆ Line3i

typedef Line3<int> Line3i

◆ MassMatrix3d

typedef MassMatrix3<double> MassMatrix3d

◆ MassMatrix3f

typedef MassMatrix3<float> MassMatrix3f

◆ Matrix3d

typedef Matrix3<double> Matrix3d

◆ Matrix3f

typedef Matrix3<float> Matrix3f

◆ Matrix3i

typedef Matrix3<int> Matrix3i

◆ Matrix4d

typedef Matrix4<double> Matrix4d

◆ Matrix4f

typedef Matrix4<float> Matrix4f

◆ Matrix4i

typedef Matrix4<int> Matrix4i

◆ NormalRealDist

◆ OrientedBoxd

typedef OrientedBox<double> OrientedBoxd

◆ OrientedBoxf

typedef OrientedBox<float> OrientedBoxf

◆ OrientedBoxi

typedef OrientedBox<int> OrientedBoxi

◆ PairInput

using PairInput = uint32_t

◆ PairOutput

using PairOutput = uint64_t

◆ Planed

typedef Plane<double> Planed

◆ Planef

typedef Plane<float> Planef

◆ Planei

typedef Plane<int> Planei

◆ Pose3d

typedef Pose3<double> Pose3d

◆ Pose3f

typedef Pose3<float> Pose3f

◆ Pose3i

typedef Pose3<int> Pose3i

◆ Quaterniond

typedef Quaternion<double> Quaterniond

◆ Quaternionf

typedef Quaternion<float> Quaternionf

◆ Quaternioni

typedef Quaternion<int> Quaternioni

◆ Triangle3d

typedef Triangle3<double> Triangle3d

Double specialization of the Triangle class.

◆ Triangle3f

typedef Triangle3<float> Triangle3f

Float specialization of the Triangle class.

◆ Triangle3i

typedef Triangle3<int> Triangle3i

Integer specialization of the Triangle class.

◆ Triangled

typedef Triangle<double> Triangled

Double specialization of the Triangle class.

◆ Trianglef

typedef Triangle<float> Trianglef

Float specialization of the Triangle class.

◆ Trianglei

typedef Triangle<int> Trianglei

Integer specialization of the Triangle class.

◆ UniformIntDist

◆ UniformRealDist

◆ Vector2d

typedef Vector2<double> Vector2d

◆ Vector2f

typedef Vector2<float> Vector2f

◆ Vector2i

typedef Vector2<int> Vector2i

◆ Vector3d

typedef Vector3<double> Vector3d

◆ Vector3f

typedef Vector3<float> Vector3f

◆ Vector3i

typedef Vector3<int> Vector3i

◆ Vector4d

typedef Vector4<double> Vector4d

◆ Vector4f

typedef Vector4<float> Vector4f

◆ Vector4i

typedef Vector4<int> Vector4i

Function Documentation

◆ clamp()

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 ignition::math::clamp ( _v,
_min,
_max 
)
inlinestatic

◆ equal()

bool ignition::math::equal ( const T &  _a,
const T &  _b,
const T &  _epsilon = T(1e-6) 
)
inline

check if two values are equal, within a tolerance

Parameters
[in]_athe first value
[in]_bthe second value
[in]_epsilonthe tolerance

References IGN_FP_VOLATILE.

Referenced by Line2< T >::Collinear(), Quaternion< T >::Correct(), Line2< T >::Intersect(), Triangle3< T >::Intersects(), Matrix4< T >::IsAffine(), Quaternion< T >::operator!=(), Quaternion< T >::operator==(), Line2< T >::Parallel(), and Line2< T >::Slope().

◆ fixnan() [1/2]

float ignition::math::fixnan ( float  _v)
inline

Fix a nan value.

Parameters
[in]_vValue to correct.
Returns
0 if _v is NaN, _v otherwise.

References std::isinf(), and isnan().

◆ fixnan() [2/2]

double ignition::math::fixnan ( double  _v)
inline

Fix a nan value.

Parameters
[in]_vValue to correct.
Returns
0 if _v is NaN, _v otherwise.

References std::isinf(), and isnan().

◆ greaterOrNearEqual()

bool ignition::math::greaterOrNearEqual ( const T &  _a,
const T &  _b,
const T &  _epsilon = 1e-6 
)
inline

inequality test, within a tolerance

Parameters
[in]_athe first value
[in]_bthe second value
[in]_epsilonthe tolerance

◆ isEven() [1/2]

bool ignition::math::isEven ( const int  _v)
inline

Check if parameter is even.

Parameters
[in]_vValue to check.
Returns
True if _v is even.

◆ isEven() [2/2]

bool ignition::math::isEven ( const unsigned int  _v)
inline

Check if parameter is even.

Parameters
[in]_vValue to check.
Returns
True if _v is even.

◆ isnan() [1/2]

bool ignition::math::isnan ( float  _v)
inline

check if a float is NaN

Parameters
[in]_vthe value
Returns
true if _v is not a number, false otherwise

References std::isnan().

Referenced by fixnan().

◆ isnan() [2/2]

bool ignition::math::isnan ( double  _v)
inline

check if a double is NaN

Parameters
[in]_vthe value
Returns
true if _v is not a number, false otherwise

References std::isnan().

◆ isOdd() [1/2]

bool ignition::math::isOdd ( const int  _v)
inline

Check if parameter is odd.

Parameters
[in]_vValue to check.
Returns
True if _v is odd.

◆ isOdd() [2/2]

bool ignition::math::isOdd ( const unsigned int  _v)
inline

Check if parameter is odd.

Parameters
[in]_vValue to check.
Returns
True if _v is odd.

◆ isPowerOfTwo()

bool ignition::math::isPowerOfTwo ( unsigned int  _x)
inline

Is this a power of 2?

Parameters
[in]_xthe number
Returns
true if _x is a power of 2, false otherwise

Referenced by roundUpPowerOfTwo().

◆ lessOrNearEqual()

bool ignition::math::lessOrNearEqual ( const T &  _a,
const T &  _b,
const T &  _epsilon = 1e-6 
)
inline

inequality test, within a tolerance

Parameters
[in]_athe first value
[in]_bthe second value
[in]_epsilonthe tolerance

◆ max()

T ignition::math::max ( const std::vector< T > &  _values)
inline

get the maximum value of vector of values

Parameters
[in]_valuesthe vector of values
Returns
maximum

References numeric_limits::min(), and vector< T >::size().

◆ mean()

T ignition::math::mean ( const std::vector< T > &  _values)
inline

get mean of vector of values

Parameters
[in]_valuesthe vector of values
Returns
the mean

References vector< T >::size().

◆ min()

T ignition::math::min ( const std::vector< T > &  _values)
inline

get the minimum value of vector of values

Parameters
[in]_valuesthe vector of values
Returns
minimum

References numeric_limits::max(), and vector< T >::size().

◆ Pair()

PairOutput ignition::math::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.

Parameters
[in]_aFirst value, must be a non-negative integer. On Windows this value is uint16_t. On Linux/OSX this value is uint32_t.
[in]_bSecond value, must be a non-negative integer. On Windows this value is uint16_t. On Linux/OSX this value is uint32_t.
Returns
A unique non-negative integer value. On Windows the return value is uint32_t. On Linux/OSX the return value is uint64_t
See also
Unpair

◆ parseFloat()

double ignition::math::parseFloat ( const std::string _input)
inline

parse string into float

Parameters
_inputthe string
Returns
a floating point number (can be NaN) or 0 with a message in the error stream

References string::empty(), string::find_first_not_of(), NAN_D, and std::stod().

◆ parseInt()

int ignition::math::parseInt ( const std::string _input)
inline

parse string into an integer

Parameters
[in]_inputthe string
Returns
an integer, 0 or 0 and a message in the error stream

References string::empty(), string::find_first_not_of(), NAN_I, and std::stoi().

◆ precision()

T ignition::math::precision ( const T &  _a,
const unsigned int &  _precision 
)
inline

get value at a specified precision

Parameters
[in]_athe number
[in]_precisionthe precision
Returns
the value for the specified precision

References std::pow(), and std::round().

Referenced by Vector3< T >::Round(), and Quaternion< T >::Round().

◆ roundUpPowerOfTwo()

unsigned int ignition::math::roundUpPowerOfTwo ( unsigned int  _x)
inline

Get the smallest power of two that is greater or equal to a given value.

Parameters
[in]_xthe number
Returns
the same value if _x is already a power of two. Otherwise, it returns the smallest power of two that is greater than _x

References isPowerOfTwo().

◆ sgn()

int ignition::math::sgn ( _value)
inline

The signum function.

Returns 0 for zero values, -1 for negative values, +1 for positive values.

Parameters
[in]_valueThe value.
Returns
The signum of the value.

Referenced by signum().

◆ signum()

int ignition::math::signum ( _value)
inline

The signum function.

Returns 0 for zero values, -1 for negative values, +1 for positive values.

Parameters
[in]_valueThe value.
Returns
The signum of the value.

References sgn().

◆ sort2()

void ignition::math::sort2 ( T &  _a,
T &  _b 
)
inline

Sort two numbers, such that _a <= _b.

Parameters
[out]_athe first number
[out]_bthe second number

References std::swap().

Referenced by sort3().

◆ sort3()

void ignition::math::sort3 ( T &  _a,
T &  _b,
T &  _c 
)
inline

Sort three numbers, such that _a <= _b <= _c.

Parameters
[out]_athe first number
[out]_bthe second number
[out]_cthe third number

References sort2().

Referenced by MassMatrix3< T >::PrincipalMoments().

◆ Unpair()

std::tuple<PairInput, PairInput> ignition::math::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.

Parameters
[in]_keyA non-negative integer generated from the Pair function. On Windows this value is uint32_t. On Linux/OSX, this value is uint64_t.
Returns
A tuple that consists of the two non-negative integers that will generate _key when used with the Pair function. On Windows the tuple contains two uint16_t values. On Linux/OSX the tuple contains two uint32_t values.
See also
Pair

◆ variance()

T ignition::math::variance ( const std::vector< T > &  _values)
inline

get variance of vector of values

Parameters
[in]_valuesthe vector of values
Returns
the squared deviation

References vector< T >::size().

Variable Documentation

◆ IGN_EIGHT_SIZE_T

const size_t IGN_EIGHT_SIZE_T = 8u
static

size_t type with a value of 8

◆ IGN_FIVE_SIZE_T

const size_t IGN_FIVE_SIZE_T = 5u
static

size_t type with a value of 5

◆ IGN_FOUR_SIZE_T

const size_t IGN_FOUR_SIZE_T = 4u
static

size_t type with a value of 4

◆ IGN_NINE_SIZE_T

const size_t IGN_NINE_SIZE_T = 9u
static

size_t type with a value of 9

◆ IGN_ONE_SIZE_T

const size_t IGN_ONE_SIZE_T = 1u
static

size_t type with a value of 1

Referenced by Line2< T >::operator[](), Line3< T >::operator[](), and Vector2< T >::operator[]().

◆ IGN_SEVEN_SIZE_T

const size_t IGN_SEVEN_SIZE_T = 7u
static

size_t type with a value of 7

◆ IGN_SIX_SIZE_T

const size_t IGN_SIX_SIZE_T = 6u
static

size_t type with a value of 6

◆ IGN_THREE_SIZE_T

const size_t IGN_THREE_SIZE_T = 3u
static

size_t type with a value of 3

Referenced by Matrix4< T >::operator()(), and Vector4< T >::operator[]().

◆ IGN_TWO_SIZE_T

const size_t IGN_TWO_SIZE_T = 2u
static

◆ IGN_ZERO_SIZE_T

◆ INF_D

const double INF_D = std::numeric_limits<double>::infinity()
static

Double positive infinite value.

◆ INF_F

const float INF_F = std::numeric_limits<float>::infinity()
static

float positive infinite value

◆ INF_I16

const int16_t INF_I16 = std::numeric_limits<int16_t>::infinity()
static

16-bit unsigned integer positive infinite value

◆ INF_I32

const int32_t INF_I32 = std::numeric_limits<int32_t>::infinity()
static

32-bit unsigned integer positive infinite value

◆ INF_I64

const int64_t INF_I64 = std::numeric_limits<int64_t>::infinity()
static

64-bit unsigned integer positive infinite value

◆ INF_UI16

const uint16_t INF_UI16 = std::numeric_limits<uint16_t>::infinity()
static

16-bit unsigned integer positive infinite value

◆ INF_UI32

const uint32_t INF_UI32 = std::numeric_limits<uint32_t>::infinity()
static

32-bit unsigned integer positive infinite value

◆ INF_UI64

const uint64_t INF_UI64 = std::numeric_limits<uint64_t>::infinity()
static

64-bit unsigned integer positive infinite value

◆ LOW_D

const double LOW_D = std::numeric_limits<double>::lowest()
static

Double low value, equivalent to -MAX_D.

◆ LOW_F

const float LOW_F = std::numeric_limits<float>::lowest()
static

Float low value, equivalent to -MAX_F.

◆ LOW_I16

const int16_t LOW_I16 = std::numeric_limits<int16_t>::lowest()
static

16bit unsigned integer lowest value. This is equivalent to IGN_INT16_MIN, and is defined here for completeness.

◆ LOW_I32

const int32_t LOW_I32 = std::numeric_limits<int32_t>::lowest()
static

32bit unsigned integer lowest value. This is equivalent to IGN_INT32_MIN, and is defined here for completeness.

◆ LOW_I64

const int64_t LOW_I64 = std::numeric_limits<int64_t>::lowest()
static

64bit unsigned integer lowest value. This is equivalent to IGN_INT64_MIN, and is defined here for completeness.

◆ LOW_UI16

const uint16_t LOW_UI16 = std::numeric_limits<uint16_t>::lowest()
static

16bit unsigned integer lowest value. This is equivalent to IGN_UINT16_MIN, and is defined here for completeness.

◆ LOW_UI32

const uint32_t LOW_UI32 = std::numeric_limits<uint32_t>::lowest()
static

32bit unsigned integer lowest value. This is equivalent to IGN_UINT32_MIN, and is defined here for completeness.

◆ LOW_UI64

const uint64_t LOW_UI64 = std::numeric_limits<uint64_t>::lowest()
static

64bit unsigned integer lowest value. This is equivalent to IGN_UINT64_MIN, and is defined here for completeness.

◆ MAX_D

const double MAX_D = std::numeric_limits<double>::max()
static

Double maximum value. This value will be similar to 1.79769e+308.

Referenced by ignition::math::graph::Dijkstra().

◆ MAX_F

const float MAX_F = std::numeric_limits<float>::max()
static

Float maximum value. This value will be similar to 3.40282e+38.

◆ MAX_I16

const int16_t MAX_I16 = std::numeric_limits<int16_t>::max()
static

16bit unsigned integer maximum value

◆ MAX_I32

const int32_t MAX_I32 = std::numeric_limits<int32_t>::max()
static

32bit unsigned integer maximum value

◆ MAX_I64

const int64_t MAX_I64 = std::numeric_limits<int64_t>::max()
static

64bit unsigned integer maximum value

◆ MAX_UI16

const uint16_t MAX_UI16 = std::numeric_limits<uint16_t>::max()
static

16bit unsigned integer maximum value

◆ MAX_UI32

const uint32_t MAX_UI32 = std::numeric_limits<uint32_t>::max()
static

32bit unsigned integer maximum value

◆ MAX_UI64

const uint64_t MAX_UI64 = std::numeric_limits<uint64_t>::max()
static

64bit unsigned integer maximum value

Referenced by Graph< V, E, EdgeType >::EdgeFromId().

◆ MIN_D

const double MIN_D = std::numeric_limits<double>::min()
static

Double min value. This value will be similar to 2.22507e-308.

Referenced by Quaternion< T >::Integrate().

◆ MIN_F

const float MIN_F = std::numeric_limits<float>::min()
static

Float minimum value. This value will be similar to 1.17549e-38.

◆ MIN_I16

const int16_t MIN_I16 = std::numeric_limits<int16_t>::min()
static

16bit unsigned integer minimum value

◆ MIN_I32

const int32_t MIN_I32 = std::numeric_limits<int32_t>::min()
static

32bit unsigned integer minimum value

◆ MIN_I64

const int64_t MIN_I64 = std::numeric_limits<int64_t>::min()
static

64bit unsigned integer minimum value

◆ MIN_UI16

const uint16_t MIN_UI16 = std::numeric_limits<uint16_t>::min()
static

16bit unsigned integer minimum value

◆ MIN_UI32

const uint32_t MIN_UI32 = std::numeric_limits<uint32_t>::min()
static

32bit unsigned integer minimum value

◆ MIN_UI64

const uint64_t MIN_UI64 = std::numeric_limits<uint64_t>::min()
static

64bit unsigned integer minimum value

◆ NAN_D

const double NAN_D = std::numeric_limits<double>::quiet_NaN()
static

Returns the representation of a quiet not a number (NAN)

Referenced by parseFloat(), and Line2< T >::Slope().

◆ NAN_F

const float NAN_F = std::numeric_limits<float>::quiet_NaN()
static

Returns the representation of a quiet not a number (NAN)

◆ NAN_I

const int NAN_I = std::numeric_limits<int>::quiet_NaN()
static

Returns the representation of a quiet not a number (NAN)

Referenced by parseInt().