| 
| template<typename T >  | 
| constexpr auto  | playrho::AlmostEqual (T a, T b, int ulp=4) -> std::enable_if_t< IsArithmeticV< T >, bool > | 
|   | Determines whether the given two values are "almost equal".  More...
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::AlmostZero (const T &value) -> decltype(abs(value)< std::numeric_limits< T >::min()) | 
|   | Gets whether a given value is almost zero.  More...
  | 
|   | 
| template<typename T >  | 
| auto  | playrho::Atan2 (T y, T x) | 
|   | Computes the arc-tangent of the given y and x values.  More...
  | 
|   | 
| 
template<typename T >  | 
| auto  | playrho::Average (const T &span) | 
|   | Computes the average of the given values. 
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::Bisect (const T &a1, const T &a2) -> decltype((a1+a2)/2) | 
|   | Bisection method.  More...
  | 
|   | 
| template<class T >  | 
| constexpr auto  | playrho::cfloor (T v) noexcept | 
|   | Constant expression enhanced floor function.  More...
  | 
|   | 
| Length2  | playrho::ComputeCentroid (const Span< const Length2 > &vertices) | 
|   | Computes the centroid of a counter-clockwise array of 3 or more vertices.  More...
  | 
|   | 
| template<class T1 , class T2 , std::enable_if_t< std::tuple_size_v< T1 >==2 &&std::tuple_size_v< T2 >==2, int >  = 0>  | 
| constexpr auto  | playrho::Cross (const T1 &a, const T2 &b) noexcept | 
|   | Performs the 2-element analog of the cross product of two vectors.  More...
  | 
|   | 
| template<class T >  | 
| constexpr auto  | playrho::ctrunc (T v) noexcept | 
|   | Constant expression enhanced truncate function.  More...
  | 
|   | 
| template<typename T1 , typename T2 >  | 
| constexpr auto  | playrho::Dot (const T1 &a, const T2 &b) noexcept | 
|   | Performs the dot product on two vectors (A and B).  More...
  | 
|   | 
| template<class T >  | 
| Angle  | playrho::GetAngle (const Vector2< T > &value) | 
|   | Gets the angle.  More...
  | 
|   | 
| 
NonNegativeFF< Area >  | playrho::GetAreaOfCircle (Length radius) | 
|   | Gets the area of a circle. 
  | 
|   | 
| NonNegativeFF< Area >  | playrho::GetAreaOfPolygon (const Span< const Length2 > &vertices) | 
|   | Gets the area of a polygon.  More...
  | 
|   | 
| 
std::vector< Length2 >  | playrho::GetCircleVertices (Length radius, std::size_t slices, Angle start=0_deg, Real turns=Real(1)) | 
|   | Gets the vertices for a circle described by the given parameters. 
  | 
|   | 
| constexpr Angle  | playrho::GetFwdRotationalAngle (const Angle &a1, const Angle &a2) noexcept | 
|   | Gets the forward/clockwise rotational angle to go from angle 1 to angle 2.  More...
  | 
|   | 
| constexpr auto  | playrho::GetInverse22 (const Mat33 &value) noexcept -> Mat33 | 
|   | Gets the inverse of the given matrix as a 2-by-2.  More...
  | 
|   | 
| template<typename T >  | 
| auto  | playrho::GetMagnitude (const T &value) noexcept(noexcept(sqrt(GetMagnitudeSquared(value)))) -> decltype(sqrt(GetMagnitudeSquared(value))) | 
|   | Gets the magnitude of the given value.  More...
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::GetMagnitudeSquared (const T &value) noexcept | 
|   | Gets the square of the magnitude of the given iterable value.  More...
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::GetModuloNext (T value, const T count) noexcept -> decltype(++value,(value< count)? value:static_cast< T >(0), T()) | 
|   | Gets the modulo next value.  More...
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::GetModuloPrev (const T value, const T count) noexcept -> decltype((value ? value :count) - static_cast< T >(1), T()) | 
|   | Gets the modulo previous value.  More...
  | 
|   | 
| Angle  | playrho::GetNormalized (Angle value) noexcept | 
|   | Gets the "normalized" value of the given angle.  More...
  | 
|   | 
| SecondMomentOfArea  | playrho::GetPolarMoment (const Span< const Length2 > &vertices) | 
|   | Gets the polar moment of the area enclosed by the given vertices.  More...
  | 
|   | 
| constexpr Angle  | playrho::GetRevRotationalAngle (const Angle &a1, const Angle &a2) noexcept | 
|   | Gets the reverse (counter) clockwise rotational angle to go from angle 1 to angle 2.  More...
  | 
|   | 
| Angle  | playrho::GetShortestDelta (Angle a0, Angle a1) noexcept | 
|   | Gets the shortest angular distance to go from angle 0 to angle 1.  More...
  | 
|   | 
| constexpr auto  | playrho::GetSymInverse33 (const Mat33 &value) noexcept -> Mat33 | 
|   | Gets the symmetric inverse of this matrix as a 3-by-3.  More...
  | 
|   | 
| constexpr Vec2  | playrho::InverseTransform (const Vec2 &v, const Mat22 &A) noexcept | 
|   | 
| 
template<class IN_TYPE >  | 
| constexpr auto  | playrho::Invert (const Matrix22< IN_TYPE > &value) noexcept | 
|   | Inverts the given value. 
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::IsOdd (const T &val) -> decltype((val % 2) !=T{}) | 
|   | Is-odd.  More...
  | 
|   | 
| 
template<typename T >  | 
| constexpr auto  | playrho::IsPowerOfTwo (const T &n) -> decltype(n &&!(n &(n - 1))) | 
|   | Reports whether or not the given value is a power of two. 
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::MakeUnsigned (const T &arg) noexcept -> std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T >> | 
|   | Makes the given value into an unsigned value.  More...
  | 
|   | 
| template<typename T >  | 
| auto  | playrho::ModuloViaFmod (T dividend, T divisor) | 
|   | Modulo operation using std::fmod.  More...
  | 
|   | 
| template<typename T >  | 
| auto  | playrho::ModuloViaTrunc (T dividend, T divisor) noexcept | 
|   | Modulo operation using std::trunc.  More...
  | 
|   | 
| 
constexpr Mat22  | playrho::MulT (const Mat22 &A, const Mat22 &B) noexcept | 
|   | Computes A^T * B. 
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::NextPowerOfTwo (T x) -> decltype((x|(x >> 1u)), T(++x)) | 
|   | Gets the next largest power of 2.  More...
  | 
|   | 
| 
Real  | playrho::Normalize (Vec2 &vector) | 
|   | Converts the given vector into a unit vector and returns its original length. 
  | 
|   | 
| 
template<typename T >  | 
| auto  | playrho::RoundOff (const T &value, unsigned precision=DefaultRoundOffPrecission) -> decltype(round(value *static_cast< T >(precision))/static_cast< T >(precision)) | 
|   | Computes the rounded value of the given value. 
  | 
|   | 
| auto  | playrho::RoundOff (const Vec2 &value, std::uint32_t precision=DefaultRoundOffPrecission) -> Vec2 | 
|   | Computes the rounded value of the given value.  More...
  | 
|   | 
| template<typename T , typename U >  | 
| constexpr auto  | playrho::Secant (const T &target, const U &a1, const T &s1, const U &a2, const T &s2) -> decltype(a1+(target - s1) *(a2 - a1)/(s2 - s1)) | 
|   | Secant method.  More...
  | 
|   | 
| template<typename T , typename U >  | 
| constexpr auto  | playrho::Solve (const Matrix22< U > &mat, const Vector2< T > &b) noexcept | 
|   | Solves A * x = b, where b is a column vector.  More...
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::Solve22 (const Mat33 &mat, const Vector2< T > &b) noexcept -> Vector2< T > | 
|   | Solves A * x = b, where b is a column vector.  More...
  | 
|   | 
| template<typename T >  | 
| constexpr auto  | playrho::Solve33 (const Mat33 &mat, const Vector3< T > &b) noexcept -> Vector3< T > | 
|   | Solves A * x = b, where b is a column vector.  More...
  | 
|   | 
| 
template<class T >  | 
| constexpr auto  | playrho::Square (T t) noexcept(noexcept(t *t)) -> decltype(t *t) | 
|   | Squares the given value. 
  | 
|   | 
| 
template<class T >  | 
| constexpr auto  | playrho::ToSigned (const T &value) -> decltype(static_cast< std::make_signed_t< T >>(value)) | 
|   | Converts the given value to its closest signed equivalent. 
  | 
|   | 
| 
constexpr Vec2  | playrho::Transform (const Vec2 &v, const Mat33 &A) noexcept | 
|   | Multiplies a vector by a matrix. 
  | 
|   | 
| template<std::size_t M, typename T1 , std::size_t N, typename T2 >  | 
| constexpr auto  | playrho::Transform (const Vector< T1, M > &v, const Matrix< T2, M, N > &m) noexcept | 
|   | Multiplies an M-element vector by an M-by-N matrix.  More...
  | 
|   | 
Conventional and custom math related code.