REDMath.h

Namespaces

RED

Functions

typename T REDMin
typename T REDMax
typename T REDClamp
double REDLerp
REDExp float REDHalfToFloat
REDExp unsigned short REDFloatToHalf
unsigned short REDDoubleToHalf
double REDLog2
double REDFract
int REDPositiveMod
int REDFastFloor
double REDMISPower

Detailed Description

This file contains implementations of frequently used mathematic functions like min/max, conversions between math types…

Macro Definition

RED_HALF_ONE

Unsigned short value encoding 1.0f.

RED_HALF_MINUS_ONE

Unsigned short value encoding -1.0f.

Function Documentation

template<typename T>
inline const T &REDMin(const T &a, const T &b)

Gets the minimum value of two values.

The values class must implement the ‘<’ operator.

Parameters:
  • a – first value to compare.
  • b – second value to compare.
Returns:

the minimum of the two values.

template<typename T>
inline const T &REDMax(const T &a, const T &b)

Gets the maximum value of two values.

The values class must implement the ‘<’ operator.

Parameters:
  • a – first value to compare.
  • b – second value to compare.
Returns:

the maximum of the two values.

template<typename T>
inline const T &REDClamp(const T &a, const T &min, const T &max)

Clamps the value two external boundaries.

If a is lower than min, then the function returns min. If a is higher than max, then the function returns max. If a is between min and max, then the function returns a.

The values class must implement the ‘<’ operator.

Parameters:
  • a – first value to compare.
  • min – minimum value of the range.
  • max – maximum value of the range.
Returns:

the maximum of the two values.

inline double REDLerp(double t, double a, double b)

Returns the linear interpolation at ‘t’ between two given values.

Parameters:
  • t – a value in [0, 1].
  • a – first value.
  • b – second value.
inline unsigned short REDDoubleToHalf(double iDouble)

Converts a value from double to half-float format.

Parameters:iDouble – value in double format (64 bits).
Returns:the value converted to half-float format.
inline double REDLog2(double iValue)

Computes the base-2 logarithm of a value.

Parameters:iValue – input value.
Returns:the base-2 logarithm of a value.
inline double REDFract(double iValue)

Computes the fractional part of a value.

Parameters:iValue – input value.
Returns:the fractional part of a value.
inline int REDPositiveMod(int iValue, int iModulo)

Computes the positive modulo of a value.

Parameters:
  • iValue – input value.
  • iModulo – modulo value.
Returns:

the positive modulo of a value.

inline int REDFastFloor(double iValue)

Computes the floor of a value.

Parameters:iValue – input value.
Returns:the floor of a value.
inline double REDMISPower(double pdf_a, double pdf_b)