Math libraryMath.h
Math library declares a set of functions to compute common mathematical operations and transformations. They may replace and extend standard math functions from C library, and provide extra operations for specific mathematical algorithms. It is optimized for x86-64 Linux systems and much faster that standard GNU lib C functions. See the benchmarks to compare speed of each function.
Contents
- Mathematical constants
- Bitwise operations
- Byte swap
- Bit reversal permutation
- Bit scan
- Bit scan forward
- Bit scan backward
- Circular rotation
- Circular rotation to the left
- Circular rotation to the right
- Population count
- Arithmetic operations
- Absolute value
- Negative absolute value
- Number sign
- Square root
- Square value
- Cube value
- Inverse value
- Inverse square value
- Inverse cube value
- Three-state comparison
- Minimum and maximum absolute value
- Minimum absolute value
- Maximum absolute value
- Minimum and maximum value
- Minimum value
- Maximum value
- Greatest common divisor
- Least common multiple
- Cancellation
- Observational error
- Absolute error
- Relative error
- Scale functions
- Scale by power of 2
- Scale by power of 10
- Exponentiation functions
- Exponentiation by base 2
- Integer exponentiation by base 2
- Real exponentiation by base 2
- Exponentiation by base 10
- Integer exponentiation by base 10
- Real exponentiation by base 10
- Exponentiation by base E (natural logarithm)
- Exponentiation by custom base
- Integer exponentiation by custom base
- Real exponentiation by custom base
- Logarithmic functions
- Logarithm to base 2
- Integer logarithm to base 2
- Real logarithm to base 2
- Logarithm to base 10
- Integer logarithm to base 10
- Real logarithm to base 10
- Logarithm to base E (natural logarithm)
- Trigonometric functions
- Hypotenuse
- 2 dimensional hypotenuse
- 3 dimensional hypotenuse
- Cathetus
- Trigonometric sine
- Trigonometric cosine
- Trigonometric sine and cosine
- Trigonometric tangent
- Inverse trigonometric functions
- Inverse trigonometric sine
- Inverse trigonometric cosine
- Inverse trigonometric tangent
- Hyperbolic functions
- Hyperbolic sine
- Hyperbolic cosine
- Hyperbolic tangent
- Inverse hyperbolic functions
- Inverse hyperbolic sine
- Inverse hyperbolic cosine
- Inverse hyperbolic tangent
- Rounding
- Round down (floor)
- Round up (ceil)
- Round to nearest even integer
- Round to nearest integer, away from zero
- Round to nearest integer, toward zero (truncation)
- Fractional part
- Checks
- Check for normal value
- Check for subnormal value
- Check for finite value
- Check for infinite value
- Check for NaN value
Function list
C function name | Functions | C++ function name | Functions |
---|---|---|---|
Abs | 12 functions | Abs | 12 functions |
AbsError | 4 functions | AbsError | 4 functions |
ArcCos | 4 functions | ArcCos | 4 functions |
ArcCosH | 4 functions | ArcCosH | 4 functions |
ArcSin | 4 functions | ArcSin | 4 functions |
ArcSinH | 4 functions | ArcSinH | 4 functions |
ArcTan | 4 functions | ArcTan | 4 functions |
ArcTan2 | 4 functions | ArcTan2 | 4 functions |
ArcTanH | 4 functions | ArcTanH | 4 functions |
BitReverse | 16 functions | BitReverse | 16 functions |
ByteSwap | 16 functions | ByteSwap | 16 functions |
Cancel | 8 functions | Cancel | 8 functions |
Cath | 4 functions | Cath | 4 functions |
Compare | 20 functions | Compare | 20 functions |
Cos | 4 functions | Cos | 4 functions |
CosH | 4 functions | CosH | 4 functions |
Cube | 12 functions | Cube | 12 functions |
Exp | 4 functions | Exp | 4 functions |
Exp10 | 4 functions | Exp10 | 4 functions |
Exp10i | 3 functions | Exp10i | 3 functions |
Exp10m1 | 4 functions | Exp10m1 | 4 functions |
Exp2 | 4 functions | Exp2 | 4 functions |
Exp2i | 3 functions | Exp2i | 3 functions |
Exp2m1 | 4 functions | Exp2m1 | 4 functions |
ExpB | 4 functions | ExpB | 4 functions |
ExpBi | 8 functions | ExpBi | 8 functions |
ExpBm1 | 4 functions | ExpBm1 | 4 functions |
Expm1 | 4 functions | Expm1 | 4 functions |
Frac | 4 functions | Frac | 4 functions |
GCD | 8 functions | GCD | 8 functions |
Hypot2D | 4 functions | Hypot2D | 4 functions |
Hypot3D | 4 functions | Hypot3D | 4 functions |
InverseCube | 4 functions | InverseCube | 4 functions |
InverseSquare | 4 functions | InverseSquare | 4 functions |
InverseValue | 4 functions | InverseValue | 4 functions |
IsFinite | 2 functions | IsFinite | 2 functions |
IsInfinite | 2 functions | IsInfinite | 2 functions |
IsNaN | 2 functions | IsNaN | 2 functions |
IsNormal | 2 functions | IsNormal | 2 functions |
IsSubnormal | 2 functions | IsSubnormal | 2 functions |
LCM | 8 functions | LCM | 8 functions |
Log | 4 functions | Log | 4 functions |
Log10 | 4 functions | Log10 | 4 functions |
Log10i | 4 functions | Log10i | 4 functions |
Log10p1 | 4 functions | Log10p1 | 4 functions |
Log2 | 4 functions | Log2 | 4 functions |
Log2i | 4 functions | Log2i | 4 functions |
Log2p1 | 4 functions | Log2p1 | 4 functions |
Logp1 | 4 functions | Logp1 | 4 functions |
Max | 18 functions | Max | 18 functions |
MaxAbs | 11 functions | MaxAbs | 11 functions |
Min | 18 functions | Min | 18 functions |
MinAbs | 11 functions | MinAbs | 11 functions |
NegAbs | 12 functions | NegAbs | 12 functions |
PopCount | 16 functions | PopCount | 16 functions |
RelError | 4 functions | RelError | 4 functions |
RotateLeft | 8 functions | RotateLeft | 8 functions |
RotateRight | 8 functions | RotateRight | 8 functions |
Round | 4 functions | Round | 4 functions |
RoundDown | 4 functions | RoundDown | 4 functions |
RoundInt | 4 functions | RoundInt | 4 functions |
RoundUp | 4 functions | RoundUp | 4 functions |
Scale10 | 2 functions | Scale10 | 2 functions |
Scale2 | 2 functions | Scale2 | 2 functions |
ScanBackward | 8 functions | ScanBackward | 8 functions |
ScanForward | 8 functions | ScanForward | 8 functions |
Sign | 12 functions | Sign | 12 functions |
Sin | 4 functions | Sin | 4 functions |
SinCos | 4 functions | SinCos | 4 functions |
SinH | 4 functions | SinH | 4 functions |
Sqr | 12 functions | Sqr | 12 functions |
Sqrt | 8 functions | Sqrt | 8 functions |
Tan | 4 functions | Tan | 4 functions |
TanH | 4 functions | TanH | 4 functions |
Truncate | 4 functions | Truncate | 4 functions |
C function name | Functions | C++ function name | Functions |
Mathematical constants
Constant | Description |
---|---|
Basic constants | |
M_E | Base of natural logarithm |
M_PI | Pi const |
M_FI | The "Golden Ratio" |
M_1_FI | The inverse "Golden Ratio" |
Logarithmic constants | |
M_LN_2 | Natural logarithm of 2 |
M_LN_10 | Natural logarithm of 10 |
M_LOG2_10 | Binary logarithm of 10 |
M_LOG2_E | Binary logarithm of e |
M_LOG10_2 | Decimal logarithm of 2 |
M_LOG10_E | Decimal logarithm of e |
Square root constants | |
M_SQRT2 | Square root of 2 |
M_SQRT1_2 | Square root of 1/2 |
Special constants | |
M_INF | Infinity |
M_NAN | Not a Number |
Bitwise operations
A bitwise operation operates on one or more bit patterns or binary numerals at the level of their individual bits. It is a fast, primitive action directly supported by the processor, and is used to manipulate values for comparisons and calculations.
Byte swap
C Unsigned integer types uint8_t Math_ByteSwap_uint8 (uint8_t value); uint16_t Math_ByteSwap_uint16 (uint16_t value); uint32_t Math_ByteSwap_uint32 (uint32_t value); uint64_t Math_ByteSwap_uint64 (uint64_t value); uint8v16_t Math_ByteSwap_uint8v16 (uint8v16_t value); uint16v8_t Math_ByteSwap_uint16v8 (uint16v8_t value); uint32v4_t Math_ByteSwap_uint32v4 (uint32v4_t value); uint64v2_t Math_ByteSwap_uint64v2 (uint64v2_t value); Signed integer types sint8_t Math_ByteSwap_sint8 (sint8_t value); sint16_t Math_ByteSwap_sint16 (sint16_t value); sint32_t Math_ByteSwap_sint32 (sint32_t value); sint64_t Math_ByteSwap_sint64 (sint64_t value); sint8v16_t Math_ByteSwap_sint8v16 (sint8v16_t value); sint16v8_t Math_ByteSwap_sint16v8 (sint16v8_t value); sint32v4_t Math_ByteSwap_sint32v4 (sint32v4_t value); sint64v2_t Math_ByteSwap_sint64v2 (sint64v2_t value);
C++ Unsigned integer types uint8_t Math::ByteSwap (uint8_t value); uint16_t Math::ByteSwap (uint16_t value); uint32_t Math::ByteSwap (uint32_t value); uint64_t Math::ByteSwap (uint64_t value); uint8v16_t Math::ByteSwap (uint8v16_t value); uint16v8_t Math::ByteSwap (uint16v8_t value); uint32v4_t Math::ByteSwap (uint32v4_t value); uint64v2_t Math::ByteSwap (uint64v2_t value); Signed integer types sint8_t Math::ByteSwap (sint8_t value); sint16_t Math::ByteSwap (sint16_t value); sint32_t Math::ByteSwap (sint32_t value); sint64_t Math::ByteSwap (sint64_t value); sint8v16_t Math::ByteSwap (sint8v16_t value); sint16v8_t Math::ByteSwap (sint16v8_t value); sint32v4_t Math::ByteSwap (sint32v4_t value); sint64v2_t Math::ByteSwap (sint64v2_t value);
Description: Reverse byte order of the specified variable. This function is provided for converting little-endian values to big-endian format and vice versa.
Parameters:
- value - source value for swapping bytes
Return value: Source value with changed byte order.
Bit reversal permutation
C Unsigned integer types uint8_t Math_BitReverse_uint8 (uint8_t value); uint16_t Math_BitReverse_uint16 (uint16_t value); uint32_t Math_BitReverse_uint32 (uint32_t value); uint64_t Math_BitReverse_uint64 (uint64_t value); uint8v16_t Math_BitReverse_uint8v16 (uint8v16_t value); uint16v8_t Math_BitReverse_uint16v8 (uint16v8_t value); uint32v4_t Math_BitReverse_uint32v4 (uint32v4_t value); uint64v2_t Math_BitReverse_uint64v2 (uint64v2_t value); Signed integer types sint8_t Math_BitReverse_sint8 (sint8_t value); sint16_t Math_BitReverse_sint16 (sint16_t value); sint32_t Math_BitReverse_sint32 (sint32_t value); sint64_t Math_BitReverse_sint64 (sint64_t value); sint8v16_t Math_BitReverse_sint8v16 (sint8v16_t value); sint16v8_t Math_BitReverse_sint16v8 (sint16v8_t value); sint32v4_t Math_BitReverse_sint32v4 (sint32v4_t value); sint64v2_t Math_BitReverse_sint64v2 (sint64v2_t value);
C++ Unsigned integer types uint8_t Math::BitReverse (uint8_t value); uint16_t Math::BitReverse (uint16_t value); uint32_t Math::BitReverse (uint32_t value); uint64_t Math::BitReverse (uint64_t value); uint8v16_t Math::BitReverse (uint8v16_t value); uint16v8_t Math::BitReverse (uint16v8_t value); uint32v4_t Math::BitReverse (uint32v4_t value); uint64v2_t Math::BitReverse (uint64v2_t value); Signed integer types sint8_t Math::BitReverse (sint8_t value); sint16_t Math::BitReverse (sint16_t value); sint32_t Math::BitReverse (sint32_t value); sint64_t Math::BitReverse (sint64_t value); sint8v16_t Math::BitReverse (sint8v16_t value); sint16v8_t Math::BitReverse (sint16v8_t value); sint32v4_t Math::BitReverse (sint32v4_t value); sint64v2_t Math::BitReverse (sint64v2_t value);
Description: Reverse the binary digits order of the specified variable.
Parameters:
- value - source value for bit-reversal permutation
Return value: Source value with changed binary digits order.
Bit scan
Bit scanning functions search the value for the least/most significant set bit and return its index. If the value is 0, then -1 is returned.
Bit scan forward
C Unsigned integer types uint8_t Math_ScanForward_uint8 (uint8_t value); uint16_t Math_ScanForward_uint16 (uint16_t value); uint32_t Math_ScanForward_uint32 (uint32_t value); uint64_t Math_ScanForward_uint64 (uint64_t value); Signed integer types sint8_t Math_ScanForward_sint8 (sint8_t value); sint16_t Math_ScanForward_sint16 (sint16_t value); sint32_t Math_ScanForward_sint32 (sint32_t value); sint64_t Math_ScanForward_sint64 (sint64_t value);
C++ Unsigned integer types uint8_t Math::ScanForward (uint8_t value); uint16_t Math::ScanForward (uint16_t value); uint32_t Math::ScanForward (uint32_t value); uint64_t Math::ScanForward (uint64_t value); Signed integer types sint8_t Math::ScanForward (sint8_t value); sint16_t Math::ScanForward (sint16_t value); sint32_t Math::ScanForward (sint32_t value); sint64_t Math::ScanForward (sint64_t value);
Description: Search the value for the least significant set bit (1 bit). If a least significant 1 bit is found, then its index is returned. The bit index is an unsigned offset from bit 0. If the content of the value is 0, then -1 is returned.
Parameters:
- value - source value for bit scanning
Return value:
- Index of the least significant set bit.
- -1 if the value has no set bits.
Bit scan backward
C Unsigned integer types uint8_t Math_ScanBackward_uint8 (uint8_t value); uint16_t Math_ScanBackward_uint16 (uint16_t value); uint32_t Math_ScanBackward_uint32 (uint32_t value); uint64_t Math_ScanBackward_uint64 (uint64_t value); Signed integer types sint8_t Math_ScanBackward_sint8 (sint8_t value); sint16_t Math_ScanBackward_sint16 (sint16_t value); sint32_t Math_ScanBackward_sint32 (sint32_t value); sint64_t Math_ScanBackward_sint64 (sint64_t value);
C++ Unsigned integer types uint8_t Math::ScanBackward (uint8_t value); uint16_t Math::ScanBackward (uint16_t value); uint32_t Math::ScanBackward (uint32_t value); uint64_t Math::ScanBackward (uint64_t value); Signed integer types sint8_t Math::ScanBackward (sint8_t value); sint16_t Math::ScanBackward (sint16_t value); sint32_t Math::ScanBackward (sint32_t value); sint64_t Math::ScanBackward (sint64_t value);
Description: Search the value for the most significant set bit (1 bit). If a most significant 1 bit is found, then its index is returned. The bit index is an unsigned offset from bit 0. If the content of the value is 0, then -1 is returned.
Parameters:
- value - source value for bit scanning
Return value:
- Index of the most significant set bit.
- -1 if the value has no set bits.
Circular rotation
The rotate left/right functions shift all the bits toward more/less significant bit positions, using circular rotation schema. This means that the most-significant bit, is rotated to the least-significant bit location and vise versa.
Circular rotation to the left
C Unsigned integer types uint8_t Math_RotateLeft_uint8 (uint8_t value, uint8_t shift); uint16_t Math_RotateLeft_uint16 (uint16_t value, uint8_t shift); uint32_t Math_RotateLeft_uint32 (uint32_t value, uint8_t shift); uint64_t Math_RotateLeft_uint64 (uint64_t value, uint8_t shift); Signed integer types sint8_t Math_RotateLeft_sint8 (sint8_t value, uint8_t shift); sint16_t Math_RotateLeft_sint16 (sint16_t value, uint8_t shift); sint32_t Math_RotateLeft_sint32 (sint32_t value, uint8_t shift); sint64_t Math_RotateLeft_sint64 (sint64_t value, uint8_t shift);
C++ Unsigned integer types uint8_t Math::RotateLeft (uint8_t value, uint8_t shift); uint16_t Math::RotateLeft (uint16_t value, uint8_t shift); uint32_t Math::RotateLeft (uint32_t value, uint8_t shift); uint64_t Math::RotateLeft (uint64_t value, uint8_t shift); Signed integer types sint8_t Math::RotateLeft (sint8_t value, uint8_t shift); sint16_t Math::RotateLeft (sint16_t value, uint8_t shift); sint32_t Math::RotateLeft (sint32_t value, uint8_t shift); sint64_t Math::RotateLeft (sint64_t value, uint8_t shift);
Description: Shift all the bits toward more significant bit positions, except for the most significant bits, which is rotated to the least significant bits location.
Parameters:
- value - source value
- shift - count of bits for circular rotation
Return value: The value shifted to specified bits count.
Circular rotation to the right
C Unsigned integer types uint8_t Math_RotateRight_uint8 (uint8_t value, uint8_t shift); uint16_t Math_RotateRight_uint16 (uint16_t value, uint8_t shift); uint32_t Math_RotateRight_uint32 (uint32_t value, uint8_t shift); uint64_t Math_RotateRight_uint64 (uint64_t value, uint8_t shift); Signed integer types sint8_t Math_RotateRight_sint8 (sint8_t value, uint8_t shift); sint16_t Math_RotateRight_sint16 (sint16_t value, uint8_t shift); sint32_t Math_RotateRight_sint32 (sint32_t value, uint8_t shift); sint64_t Math_RotateRight_sint64 (sint64_t value, uint8_t shift);
C++ Unsigned integer types uint8_t Math::RotateRight (uint8_t value, uint8_t shift); uint16_t Math::RotateRight (uint16_t value, uint8_t shift); uint32_t Math::RotateRight (uint32_t value, uint8_t shift); uint64_t Math::RotateRight (uint64_t value, uint8_t shift); Signed integer types sint8_t Math::RotateRight (sint8_t value, uint8_t shift); sint16_t Math::RotateRight (sint16_t value, uint8_t shift); sint32_t Math::RotateRight (sint32_t value, uint8_t shift); sint64_t Math::RotateRight (sint64_t value, uint8_t shift);
Description: Shift all the bits toward less significant bit positions, except for the least significant bits, which is rotated to the most significant bits location.
Parameters:
- value - source value
- shift - count of bits for circular rotation
Return value: The value shifted to specified bits count.
Population count
C Unsigned integer types uint8_t Math_PopCount_uint8 (uint8_t value); uint16_t Math_PopCount_uint16 (uint16_t value); uint32_t Math_PopCount_uint32 (uint32_t value); uint64_t Math_PopCount_uint64 (uint64_t value); uint8v16_t Math_PopCount_uint8v16 (uint8v16_t value); uint16v8_t Math_PopCount_uint16v8 (uint16v8_t value); uint32v4_t Math_PopCount_uint32v4 (uint32v4_t value); uint64v2_t Math_PopCount_uint64v2 (uint64v2_t value); Signed integer types sint8_t Math_PopCount_sint8 (sint8_t value); sint16_t Math_PopCount_sint16 (sint16_t value); sint32_t Math_PopCount_sint32 (sint32_t value); sint64_t Math_PopCount_sint64 (sint64_t value); sint8v16_t Math_PopCount_sint8v16 (sint8v16_t value); sint16v8_t Math_PopCount_sint16v8 (sint16v8_t value); sint32v4_t Math_PopCount_sint32v4 (sint32v4_t value); sint64v2_t Math_PopCount_sint64v2 (sint64v2_t value);
C++ Unsigned integer types uint8_t Math::PopCount (uint8_t value); uint16_t Math::PopCount (uint16_t value); uint32_t Math::PopCount (uint32_t value); uint64_t Math::PopCount (uint64_t value); uint8v16_t Math::PopCount (uint8v16_t value); uint16v8_t Math::PopCount (uint16v8_t value); uint32v4_t Math::PopCount (uint32v4_t value); uint64v2_t Math::PopCount (uint64v2_t value); Signed integer types sint8_t Math::PopCount (sint8_t value); sint16_t Math::PopCount (sint16_t value); sint32_t Math::PopCount (sint32_t value); sint64_t Math::PopCount (sint64_t value); sint8v16_t Math::PopCount (sint8v16_t value); sint16v8_t Math::PopCount (sint16v8_t value); sint32v4_t Math::PopCount (sint32v4_t value); sint64v2_t Math::PopCount (sint64v2_t value);
Description: Calculate a number of bits set to 1 in the value.
Parameters:
- value - source value for bits population count
Return value: The count of bits set to 1.
Arithmetic operations
This section covers most popular arithmetic operations, improved by speed. They provide fast replacement for standard math functions from the GNU C language library.
Absolute value
C Signed integer types uint8_t Math_Abs_sint8 (sint8_t value); uint16_t Math_Abs_sint16 (sint16_t value); uint32_t Math_Abs_sint32 (sint32_t value); uint64_t Math_Abs_sint64 (sint64_t value); uint8v16_t Math_Abs_sint8v16 (sint8v16_t value); uint16v8_t Math_Abs_sint16v8 (sint16v8_t value); uint32v4_t Math_Abs_sint32v4 (sint32v4_t value); uint64v2_t Math_Abs_sint64v2 (sint64v2_t value); Floating-point types flt32_t Math_Abs_flt32 (flt32_t value); flt64_t Math_Abs_flt64 (flt64_t value); flt32v4_t Math_Abs_flt32v4 (flt32v4_t value); flt64v2_t Math_Abs_flt64v2 (flt64v2_t value);
C++ Signed integer types uint8_t Math::Abs (sint8_t value); uint16_t Math::Abs (sint16_t value); uint32_t Math::Abs (sint32_t value); uint64_t Math::Abs (sint64_t value); uint8v16_t Math::Abs (sint8v16_t value); uint16v8_t Math::Abs (sint16v8_t value); uint32v4_t Math::Abs (sint32v4_t value); uint64v2_t Math::Abs (sint64v2_t value); Floating-point types flt32_t Math::Abs (flt32_t value); flt64_t Math::Abs (flt64_t value); flt32v4_t Math::Abs (flt32v4_t value); flt64v2_t Math::Abs (flt64v2_t value);
Description: Compute absolute value of specified variable.
Parameters:
- value - value to process
Return value: Absolute value of variable.
Negative absolute value
C Signed integer types sint8_t Math_NegAbs_sint8 (sint8_t value); sint16_t Math_NegAbs_sint16 (sint16_t value); sint32_t Math_NegAbs_sint32 (sint32_t value); sint64_t Math_NegAbs_sint64 (sint64_t value); sint8v16_t Math_NegAbs_sint8v16 (sint8v16_t value); sint16v8_t Math_NegAbs_sint16v8 (sint16v8_t value); sint32v4_t Math_NegAbs_sint32v4 (sint32v4_t value); sint64v2_t Math_NegAbs_sint64v2 (sint64v2_t value); Floating-point types flt32_t Math_NegAbs_flt32 (flt32_t value); flt64_t Math_NegAbs_flt64 (flt64_t value); flt32v4_t Math_NegAbs_flt32v4 (flt32v4_t value); flt64v2_t Math_NegAbs_flt64v2 (flt64v2_t value);
C++ Signed integer types sint8_t Math::NegAbs (sint8_t value); sint16_t Math::NegAbs (sint16_t value); sint32_t Math::NegAbs (sint32_t value); sint64_t Math::NegAbs (sint64_t value); sint8v16_t Math::NegAbs (sint8v16_t value); sint16v8_t Math::NegAbs (sint16v8_t value); sint32v4_t Math::NegAbs (sint32v4_t value); sint64v2_t Math::NegAbs (sint64v2_t value); Floating-point types flt32_t Math::NegAbs (flt32_t value); flt64_t Math::NegAbs (flt64_t value); flt32v4_t Math::NegAbs (flt32v4_t value); flt64v2_t Math::NegAbs (flt64v2_t value);
Description: Compute negative absolute value of specified variable.
Parameters:
- value - value to process
Return value: Negative absolute value of variable.
Number sign
C Signed integer types sint8_t Math_Sign_sint8 (sint8_t value); sint16_t Math_Sign_sint16 (sint16_t value); sint32_t Math_Sign_sint32 (sint32_t value); sint64_t Math_Sign_sint64 (sint64_t value); sint8v16_t Math_Sign_sint8v16 (sint8v16_t value); sint16v8_t Math_Sign_sint16v8 (sint16v8_t value); sint32v4_t Math_Sign_sint32v4 (sint32v4_t value); sint64v2_t Math_Sign_sint64v2 (sint64v2_t value); Floating-point types flt32_t Math_Sign_flt32 (flt32_t value); flt64_t Math_Sign_flt64 (flt64_t value); flt32v4_t Math_Sign_flt32v4 (flt32v4_t value); flt64v2_t Math_Sign_flt64v2 (flt64v2_t value);
C++ Signed integer types sint8_t Math::Sign (sint8_t value); sint16_t Math::Sign (sint16_t value); sint32_t Math::Sign (sint32_t value); sint64_t Math::Sign (sint64_t value); sint8v16_t Math::Sign (sint8v16_t value); sint16v8_t Math::Sign (sint16v8_t value); sint32v4_t Math::Sign (sint32v4_t value); sint64v2_t Math::Sign (sint64v2_t value); Floating-point types flt32_t Math::Sign (flt32_t value); flt64_t Math::Sign (flt64_t value); flt32v4_t Math::Sign (flt32v4_t value); flt64v2_t Math::Sign (flt64v2_t value);
Description: Return sign of source number.
Parameters:
- value - number value to process
Return value:
- 0 if value is zero
- +1 if value is positive
- -1 if value is negative
- NaN if value is NaN
Square root
C Unsigned integer types uint8_t Math_Sqrt_uint8 (uint8_t value); uint16_t Math_Sqrt_uint16 (uint16_t value); uint32_t Math_Sqrt_uint32 (uint32_t value); uint64_t Math_Sqrt_uint64 (uint64_t value); Floating-point types flt32_t Math_Sqrt_flt32 (flt32_t value); flt64_t Math_Sqrt_flt64 (flt64_t value); flt32v4_t Math_Sqrt_flt32v4 (flt32v4_t value); flt64v2_t Math_Sqrt_flt64v2 (flt64v2_t value);
C++ Unsigned integer types uint8_t Math::Sqrt (uint8_t value); uint16_t Math::Sqrt (uint16_t value); uint32_t Math::Sqrt (uint32_t value); uint64_t Math::Sqrt (uint64_t value); Floating-point types flt32_t Math::Sqrt (flt32_t value); flt64_t Math::Sqrt (flt64_t value); flt32v4_t Math::Sqrt (flt32v4_t value); flt64v2_t Math::Sqrt (flt64v2_t value);
Description: Compute square root of specified variable.
Parameters:
- value - value to process
Return value:
- Square root of variable.
- NaN (not a number) if variable is negative or NAN.
Square value
C Unsigned integer types uint8_t Math_Sqr_uint8 (uint8_t value); uint16_t Math_Sqr_uint16 (uint16_t value); uint32_t Math_Sqr_uint32 (uint32_t value); uint64_t Math_Sqr_uint64 (uint64_t value); Signed integer types sint8_t Math_Sqr_sint8 (sint8_t value); sint16_t Math_Sqr_sint16 (sint16_t value); sint32_t Math_Sqr_sint32 (sint32_t value); sint64_t Math_Sqr_sint64 (sint64_t value); Floating-point types flt32_t Math_Sqr_flt32 (flt32_t value); flt64_t Math_Sqr_flt64 (flt64_t value); flt32v4_t Math_Sqr_flt32v4 (flt32v4_t value); flt64v2_t Math_Sqr_flt64v2 (flt64v2_t value);
C++ Unsigned integer types uint8_t Math::Sqr (uint8_t value); uint16_t Math::Sqr (uint16_t value); uint32_t Math::Sqr (uint32_t value); uint64_t Math::Sqr (uint64_t value); Signed integer types sint8_t Math::Sqr (sint8_t value); sint16_t Math::Sqr (sint16_t value); sint32_t Math::Sqr (sint32_t value); sint64_t Math::Sqr (sint64_t value); Floating-point types flt32_t Math::Sqr (flt32_t value); flt64_t Math::Sqr (flt64_t value); flt32v4_t Math::Sqr (flt32v4_t value); flt64v2_t Math::Sqr (flt64v2_t value);
Description: Compute square value of specified variable.
Parameters:
- value - value to process
Return value:
- Square value which is equal to value2.
- NaN (not a number) if variable is NAN.
Cube value
C Unsigned integer types uint8_t Math_Cube_uint8 (uint8_t value); uint16_t Math_Cube_uint16 (uint16_t value); uint32_t Math_Cube_uint32 (uint32_t value); uint64_t Math_Cube_uint64 (uint64_t value); Signed integer types sint8_t Math_Cube_sint8 (sint8_t value); sint16_t Math_Cube_sint16 (sint16_t value); sint32_t Math_Cube_sint32 (sint32_t value); sint64_t Math_Cube_sint64 (sint64_t value); Floating-point types flt32_t Math_Cube_flt32 (flt32_t value); flt64_t Math_Cube_flt64 (flt64_t value); flt32v4_t Math_Cube_flt32v4 (flt32v4_t value); flt64v2_t Math_Cube_flt64v2 (flt64v2_t value);
C++ Unsigned integer types uint8_t Math::Cube (uint8_t value); uint16_t Math::Cube (uint16_t value); uint32_t Math::Cube (uint32_t value); uint64_t Math::Cube (uint64_t value); Signed integer types sint8_t Math::Cube (sint8_t value); sint16_t Math::Cube (sint16_t value); sint32_t Math::Cube (sint32_t value); sint64_t Math::Cube (sint64_t value); Floating-point types flt32_t Math::Cube (flt32_t value); flt64_t Math::Cube (flt64_t value); flt32v4_t Math::Cube (flt32v4_t value); flt64v2_t Math::Cube (flt64v2_t value);
Description: Compute cube value of specified variable.
Parameters:
- value - value to process
Return value:
- Cube value which is equal to value3.
- NaN (not a number) if variable is NAN.
Inverse value
Cflt32_t Math_InverseValue_flt32 (flt32_t value); flt64_t Math_InverseValue_flt64 (flt64_t value); flt32v4_t Math_InverseValue_flt32v4 (flt32v4_t value); flt64v2_t Math_InverseValue_flt64v2 (flt64v2_t value);
C++flt32_t Math::InverseValue (flt32_t value); flt64_t Math::InverseValue (flt64_t value); flt32v4_t Math::InverseValue (flt32v4_t value); flt64v2_t Math::InverseValue (flt64v2_t value);
Description: Compute inverse value.
Parameters:
- value - value to process
Return value: Inverse value which is equal to 1.0 / value.
Inverse square value
Cflt32_t Math_InverseSquare_flt32 (flt32_t value); flt64_t Math_InverseSquare_flt64 (flt64_t value); flt32v4_t Math_InverseSquare_flt32v4 (flt32v4_t value); flt64v2_t Math_InverseSquare_flt64v2 (flt64v2_t value);
C++flt32_t Math::InverseSquare (flt32_t value); flt64_t Math::InverseSquare (flt64_t value); flt32v4_t Math::InverseSquare (flt32v4_t value); flt64v2_t Math::InverseSquare (flt64v2_t value);
Description: Compute inverse square value.
Parameters:
- value - value to process
Return value: Inverse square value which is equal to 1.0 / value2.
Inverse cube value
Cflt32_t Math_InverseCube_flt32 (flt32_t value); flt64_t Math_InverseCube_flt64 (flt64_t value); flt32v4_t Math_InverseCube_flt32v4 (flt32v4_t value); flt64v2_t Math_InverseCube_flt64v2 (flt64v2_t value);
C++flt32_t Math::InverseCube (flt32_t value); flt64_t Math::InverseCube (flt64_t value); flt32v4_t Math::InverseCube (flt32v4_t value); flt64v2_t Math::InverseCube (flt64v2_t value);
Description: Compute inverse cube value.
Parameters:
- value - value to process
Return value: Inverse cube value which is equal to 1.0 / value3.
Three-state comparison
C Unsigned integer types sint8_t Math_Compare_uint8 (uint8_t value1, uint8_t value2); sint16_t Math_Compare_uint16 (uint16_t value1, uint16_t value2); sint32_t Math_Compare_uint32 (uint32_t value1, uint32_t value2); sint64_t Math_Compare_uint64 (uint64_t value1, uint64_t value2); sint8v16_t Math_Compare_uint8v16 (uint8v16_t value1, uint8v16_t value2); sint16v8_t Math_Compare_uint16v8 (uint16v8_t value1, uint16v8_t value2); sint32v4_t Math_Compare_uint32v4 (uint32v4_t value1, uint32v4_t value2); sint64v2_t Math_Compare_uint64v2 (uint64v2_t value1, uint64v2_t value2); Signed integer types sint8_t Math_Compare_sint8 (sint8_t value1, sint8_t value2); sint16_t Math_Compare_sint16 (sint16_t value1, sint16_t value2); sint32_t Math_Compare_sint32 (sint32_t value1, sint32_t value2); sint64_t Math_Compare_sint64 (sint64_t value1, sint64_t value2); sint8v16_t Math_Compare_sint8v16 (sint8v16_t value1, sint8v16_t value2); sint16v8_t Math_Compare_sint16v8 (sint16v8_t value1, sint16v8_t value2); sint32v4_t Math_Compare_sint32v4 (sint32v4_t value1, sint32v4_t value2); sint64v2_t Math_Compare_sint64v2 (sint64v2_t value1, sint64v2_t value2); Floating-point types flt32_t Math_Compare_flt32 (flt32_t value1, flt32_t value2); flt64_t Math_Compare_flt64 (flt64_t value1, flt64_t value2); flt32v4_t Math_Compare_flt32v4 (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math_Compare_flt64v2 (flt64v2_t value1, flt64v2_t value2);
C++ Unsigned integer types sint8_t Math::Compare (uint8_t value1, uint8_t value2); sint16_t Math::Compare (uint16_t value1, uint16_t value2); sint32_t Math::Compare (uint32_t value1, uint32_t value2); sint64_t Math::Compare (uint64_t value1, uint64_t value2); sint8v16_t Math::Compare (uint8v16_t value1, uint8v16_t value2); sint16v8_t Math::Compare (uint16v8_t value1, uint16v8_t value2); sint32v4_t Math::Compare (uint32v4_t value1, uint32v4_t value2); sint64v2_t Math::Compare (uint64v2_t value1, uint64v2_t value2); Signed integer types sint8_t Math::Compare (sint8_t value1, sint8_t value2); sint16_t Math::Compare (sint16_t value1, sint16_t value2); sint32_t Math::Compare (sint32_t value1, sint32_t value2); sint64_t Math::Compare (sint64_t value1, sint64_t value2); sint8v16_t Math::Compare (sint8v16_t value1, sint8v16_t value2); sint16v8_t Math::Compare (sint16v8_t value1, sint16v8_t value2); sint32v4_t Math::Compare (sint32v4_t value1, sint32v4_t value2); sint64v2_t Math::Compare (sint64v2_t value1, sint64v2_t value2); Floating-point types flt32_t Math::Compare (flt32_t value1, flt32_t value2); flt64_t Math::Compare (flt64_t value1, flt64_t value2); flt32v4_t Math::Compare (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math::Compare (flt64v2_t value1, flt64v2_t value2);
Description: Compare two numbers and return their relation as signed values: -1, 0 and +1. Floating-point variant also return NaN if at least one value is NaN.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- -1 if first value is less than second value
- 0 if both values are equal
- +1 if first value is great than second value
- NaN if any of floating-point numbers has NaN value
Minimum and maximum absolute value
These functions compare two numbers and return the number with min/max absolute value. Floating-point variants always return NaN result if any number has NaN value.
Minimum absolute value
C Signed integer types uint8_t Math_MinAbs_sint8 (sint8_t value1, sint8_t value2); uint16_t Math_MinAbs_sint16 (sint16_t value1, sint16_t value2); uint32_t Math_MinAbs_sint32 (sint32_t value1, sint32_t value2); uint64_t Math_MinAbs_sint64 (sint64_t value1, sint64_t value2); uint8v16_t Math_MinAbs_sint8v16 (sint8v16_t value1, sint8v16_t value2); uint16v8_t Math_MinAbs_sint16v8 (sint16v8_t value1, sint16v8_t value2); uint32v4_t Math_MinAbs_sint32v4 (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math_MinAbs_flt32 (flt32_t value1, flt32_t value2); flt64_t Math_MinAbs_flt64 (flt64_t value1, flt64_t value2); flt32v4_t Math_MinAbs_flt32v4 (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math_MinAbs_flt64v2 (flt64v2_t value1, flt64v2_t value2);
C++ Signed integer types uint8_t Math::MinAbs (sint8_t value1, sint8_t value2); uint16_t Math::MinAbs (sint16_t value1, sint16_t value2); uint32_t Math::MinAbs (sint32_t value1, sint32_t value2); uint64_t Math::MinAbs (sint64_t value1, sint64_t value2); uint8v16_t Math::MinAbs (sint8v16_t value1, sint8v16_t value2); uint16v8_t Math::MinAbs (sint16v8_t value1, sint16v8_t value2); uint32v4_t Math::MinAbs (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math::MinAbs (flt32_t value1, flt32_t value2); flt64_t Math::MinAbs (flt64_t value1, flt64_t value2); flt32v4_t Math::MinAbs (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math::MinAbs (flt64v2_t value1, flt64v2_t value2);
Description: Find minimum absolute value between variable values.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- Minimum absolute value between first and second variable.
- NaN (not a number) if any of the variables has NaN value.
Maximum absolute value
C Signed integer types uint8_t Math_MaxAbs_sint8 (sint8_t value1, sint8_t value2); uint16_t Math_MaxAbs_sint16 (sint16_t value1, sint16_t value2); uint32_t Math_MaxAbs_sint32 (sint32_t value1, sint32_t value2); uint64_t Math_MaxAbs_sint64 (sint64_t value1, sint64_t value2); uint8v16_t Math_MaxAbs_sint8v16 (sint8v16_t value1, sint8v16_t value2); uint16v8_t Math_MaxAbs_sint16v8 (sint16v8_t value1, sint16v8_t value2); uint32v4_t Math_MaxAbs_sint32v4 (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math_MaxAbs_flt32 (flt32_t value1, flt32_t value2); flt64_t Math_MaxAbs_flt64 (flt64_t value1, flt64_t value2); flt32v4_t Math_MaxAbs_flt32v4 (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math_MaxAbs_flt64v2 (flt64v2_t value1, flt64v2_t value2);
C++ Signed integer types uint8_t Math::MaxAbs (sint8_t value1, sint8_t value2); uint16_t Math::MaxAbs (sint16_t value1, sint16_t value2); uint32_t Math::MaxAbs (sint32_t value1, sint32_t value2); uint64_t Math::MaxAbs (sint64_t value1, sint64_t value2); uint8v16_t Math::MaxAbs (sint8v16_t value1, sint8v16_t value2); uint16v8_t Math::MaxAbs (sint16v8_t value1, sint16v8_t value2); uint32v4_t Math::MaxAbs (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math::MaxAbs (flt32_t value1, flt32_t value2); flt64_t Math::MaxAbs (flt64_t value1, flt64_t value2); flt32v4_t Math::MaxAbs (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math::MaxAbs (flt64v2_t value1, flt64v2_t value2);
Description: Find maximum absolute value between variable values.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- Maximum absolute value between first and second variable.
- NaN (not a number) if any of the variables has NaN value.
Minimum and maximum value
These functions compare two numbers and return the number with min/max value. Floating-point variants always return NaN result if any number has NaN value.
Minimum value
C Unsigned integer types uint8_t Math_Min_uint8 (uint8_t value1, uint8_t value2); uint16_t Math_Min_uint16 (uint16_t value1, uint16_t value2); uint32_t Math_Min_uint32 (uint32_t value1, uint32_t value2); uint64_t Math_Min_uint64 (uint64_t value1, uint64_t value2); uint8v16_t Math_Min_uint8v16 (uint8v16_t value1, uint8v16_t value2); uint16v8_t Math_Min_uint16v8 (uint16v8_t value1, uint16v8_t value2); uint32v4_t Math_Min_uint32v4 (uint32v4_t value1, uint32v4_t value2); Signed integer types sint8_t Math_Min_sint8 (sint8_t value1, sint8_t value2); sint16_t Math_Min_sint16 (sint16_t value1, sint16_t value2); sint32_t Math_Min_sint32 (sint32_t value1, sint32_t value2); sint64_t Math_Min_sint64 (sint64_t value1, sint64_t value2); sint8v16_t Math_Min_sint8v16 (sint8v16_t value1, sint8v16_t value2); sint16v8_t Math_Min_sint16v8 (sint16v8_t value1, sint16v8_t value2); sint32v4_t Math_Min_sint32v4 (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math_Min_flt32 (flt32_t value1, flt32_t value2); flt64_t Math_Min_flt64 (flt64_t value1, flt64_t value2); flt32v4_t Math_Min_flt32v4 (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math_Min_flt64v2 (flt64v2_t value1, flt64v2_t value2);
C++ Unsigned integer types uint8_t Math::Min (uint8_t value1, uint8_t value2); uint16_t Math::Min (uint16_t value1, uint16_t value2); uint32_t Math::Min (uint32_t value1, uint32_t value2); uint64_t Math::Min (uint64_t value1, uint64_t value2); uint8v16_t Math::Min (uint8v16_t value1, uint8v16_t value2); uint16v8_t Math::Min (uint16v8_t value1, uint16v8_t value2); uint32v4_t Math::Min (uint32v4_t value1, uint32v4_t value2); Signed integer types sint8_t Math::Min (sint8_t value1, sint8_t value2); sint16_t Math::Min (sint16_t value1, sint16_t value2); sint32_t Math::Min (sint32_t value1, sint32_t value2); sint64_t Math::Min (sint64_t value1, sint64_t value2); sint8v16_t Math::Min (sint8v16_t value1, sint8v16_t value2); sint16v8_t Math::Min (sint16v8_t value1, sint16v8_t value2); sint32v4_t Math::Min (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math::Min (flt32_t value1, flt32_t value2); flt64_t Math::Min (flt64_t value1, flt64_t value2); flt32v4_t Math::Min (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math::Min (flt64v2_t value1, flt64v2_t value2);
Description: Find minimum value between variable values.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- Minimum value between first and second variable.
- NaN (not a number) if any of the variables has NaN value.
Maximum value
C Unsigned integer types uint8_t Math_Max_uint8 (uint8_t value1, uint8_t value2); uint16_t Math_Max_uint16 (uint16_t value1, uint16_t value2); uint32_t Math_Max_uint32 (uint32_t value1, uint32_t value2); uint64_t Math_Max_uint64 (uint64_t value1, uint64_t value2); uint8v16_t Math_Max_uint8v16 (uint8v16_t value1, uint8v16_t value2); uint16v8_t Math_Max_uint16v8 (uint16v8_t value1, uint16v8_t value2); uint32v4_t Math_Max_uint32v4 (uint32v4_t value1, uint32v4_t value2); Signed integer types sint8_t Math_Max_sint8 (sint8_t value1, sint8_t value2); sint16_t Math_Max_sint16 (sint16_t value1, sint16_t value2); sint32_t Math_Max_sint32 (sint32_t value1, sint32_t value2); sint64_t Math_Max_sint64 (sint64_t value1, sint64_t value2); sint8v16_t Math_Max_sint8v16 (sint8v16_t value1, sint8v16_t value2); sint16v8_t Math_Max_sint16v8 (sint16v8_t value1, sint16v8_t value2); sint32v4_t Math_Max_sint32v4 (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math_Max_flt32 (flt32_t value1, flt32_t value2); flt64_t Math_Max_flt64 (flt64_t value1, flt64_t value2); flt32v4_t Math_Max_flt32v4 (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math_Max_flt64v2 (flt64v2_t value1, flt64v2_t value2);
C++ Unsigned integer types uint8_t Math::Max (uint8_t value1, uint8_t value2); uint16_t Math::Max (uint16_t value1, uint16_t value2); uint32_t Math::Max (uint32_t value1, uint32_t value2); uint64_t Math::Max (uint64_t value1, uint64_t value2); uint8v16_t Math::Max (uint8v16_t value1, uint8v16_t value2); uint16v8_t Math::Max (uint16v8_t value1, uint16v8_t value2); uint32v4_t Math::Max (uint32v4_t value1, uint32v4_t value2); Signed integer types sint8_t Math::Max (sint8_t value1, sint8_t value2); sint16_t Math::Max (sint16_t value1, sint16_t value2); sint32_t Math::Max (sint32_t value1, sint32_t value2); sint64_t Math::Max (sint64_t value1, sint64_t value2); sint8v16_t Math::Max (sint8v16_t value1, sint8v16_t value2); sint16v8_t Math::Max (sint16v8_t value1, sint16v8_t value2); sint32v4_t Math::Max (sint32v4_t value1, sint32v4_t value2); Floating-point types flt32_t Math::Max (flt32_t value1, flt32_t value2); flt64_t Math::Max (flt64_t value1, flt64_t value2); flt32v4_t Math::Max (flt32v4_t value1, flt32v4_t value2); flt64v2_t Math::Max (flt64v2_t value1, flt64v2_t value2);
Description: Find maximum value between variable values.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- Maximum value between first and second variable.
- NaN (not a number) if any of the variables has NaN value.
Greatest common divisor
C Unsigned integer types uint8_t Math_GCD_uint8 (uint8_t value1, uint8_t value2); uint16_t Math_GCD_uint16 (uint16_t value1, uint16_t value2); uint32_t Math_GCD_uint32 (uint32_t value1, uint32_t value2); uint64_t Math_GCD_uint64 (uint64_t value1, uint64_t value2); Signed integer types uint8_t Math_GCD_sint8 (sint8_t value1, sint8_t value2); uint16_t Math_GCD_sint16 (sint16_t value1, sint16_t value2); uint32_t Math_GCD_sint32 (sint32_t value1, sint32_t value2); uint64_t Math_GCD_sint64 (sint64_t value1, sint64_t value2);
C++ Unsigned integer types uint8_t Math::GCD (uint8_t value1, uint8_t value2); uint16_t Math::GCD (uint16_t value1, uint16_t value2); uint32_t Math::GCD (uint32_t value1, uint32_t value2); uint64_t Math::GCD (uint64_t value1, uint64_t value2); Signed integer types uint8_t Math::GCD (sint8_t value1, sint8_t value2); uint16_t Math::GCD (sint16_t value1, sint16_t value2); uint32_t Math::GCD (sint32_t value1, sint32_t value2); uint64_t Math::GCD (sint64_t value1, sint64_t value2);
Description: Compute greatest common divisor (GCD) of two integers.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- The largest positive integer that divides the numbers without a remainder.
- 0 (zero) if both values are equal to zero.
Least common multiple
C Unsigned integer types uint8_t Math_LCM_uint8 (uint8_t value1, uint8_t value2); uint16_t Math_LCM_uint16 (uint16_t value1, uint16_t value2); uint32_t Math_LCM_uint32 (uint32_t value1, uint32_t value2); uint64_t Math_LCM_uint64 (uint64_t value1, uint64_t value2); Signed integer types uint8_t Math_LCM_sint8 (sint8_t value1, sint8_t value2); uint16_t Math_LCM_sint16 (sint16_t value1, sint16_t value2); uint32_t Math_LCM_sint32 (sint32_t value1, sint32_t value2); uint64_t Math_LCM_sint64 (sint64_t value1, sint64_t value2);
C++ Unsigned integer types uint8_t Math::LCM (uint8_t value1, uint8_t value2); uint16_t Math::LCM (uint16_t value1, uint16_t value2); uint32_t Math::LCM (uint32_t value1, uint32_t value2); uint64_t Math::LCM (uint64_t value1, uint64_t value2); Signed integer types uint8_t Math::LCM (sint8_t value1, sint8_t value2); uint16_t Math::LCM (sint16_t value1, sint16_t value2); uint32_t Math::LCM (sint32_t value1, sint32_t value2); uint64_t Math::LCM (sint64_t value1, sint64_t value2);
Description: Compute least common multiple (LCM) of two integers.
Parameters:
- value1 - first value
- value2 - second value
Return value:
- The smallest positive integer that is divisible by both numbers.
- 0 (zero) if both values are zero, or result is too big to fit in target data type. This means that result is incorrect.
Cancellation
C Unsigned integer types void Math_Cancel_uint8 (uint8_t *value1, uint8_t *value2); void Math_Cancel_uint16 (uint16_t *value1, uint16_t *value2); void Math_Cancel_uint32 (uint32_t *value1, uint32_t *value2); void Math_Cancel_uint64 (uint64_t *value1, uint64_t *value2); Signed integer types void Math_Cancel_sint8 (sint8_t *value1, sint8_t *value2); void Math_Cancel_sint16 (sint16_t *value1, sint16_t *value2); void Math_Cancel_sint32 (sint32_t *value1, sint32_t *value2); void Math_Cancel_sint64 (sint64_t *value1, sint64_t *value2);
C++ Unsigned integer types void Math::Cancel (uint8_t *value1, uint8_t *value2); void Math::Cancel (uint16_t *value1, uint16_t *value2); void Math::Cancel (uint32_t *value1, uint32_t *value2); void Math::Cancel (uint64_t *value1, uint64_t *value2); Signed integer types void Math::Cancel (sint8_t *value1, sint8_t *value2); void Math::Cancel (sint16_t *value1, sint16_t *value2); void Math::Cancel (sint32_t *value1, sint32_t *value2); void Math::Cancel (sint64_t *value1, sint64_t *value2);
Description: Cancel two values, dividing them to greatest common divisor.
Parameters:
- value1 - pointer to first value
- value2 - pointer to second value
Return value: None.
Observational error
Observational error (or measurement error) is the difference between a measured (approximate) value of quantity and its true (accurate) value.
Absolute error
Cflt32_t Math_AbsError_flt32 (flt32_t approximate, flt32_t accurate); flt64_t Math_AbsError_flt64 (flt64_t approximate, flt64_t accurate); flt32v4_t Math_AbsError_flt32v4 (flt32v4_t approximate, flt32v4_t accurate); flt64v2_t Math_AbsError_flt64v2 (flt64v2_t approximate, flt64v2_t accurate);
C++flt32_t Math::AbsError (flt32_t approximate, flt32_t accurate); flt64_t Math::AbsError (flt64_t approximate, flt64_t accurate); flt32v4_t Math::AbsError (flt32v4_t approximate, flt32v4_t accurate); flt64v2_t Math::AbsError (flt64v2_t approximate, flt64v2_t accurate);
Description: Compute absolute error between approximate and accurate values.
Parameters:
- approximate - approximate value
- accurate - accurate value
Return value:
- Absolute error, computed as Abs (approximate - accurate)
- NaN (not a number) if either of function parameters is NaN, or both parameters are equal to infinity value with the same sign.
Relative error
Cflt32_t Math_RelError_flt32 (flt32_t approximate, flt32_t accurate); flt64_t Math_RelError_flt64 (flt64_t approximate, flt64_t accurate); flt32v4_t Math_RelError_flt32v4 (flt32v4_t approximate, flt32v4_t accurate); flt64v2_t Math_RelError_flt64v2 (flt64v2_t approximate, flt64v2_t accurate);
C++flt32_t Math::RelError (flt32_t approximate, flt32_t accurate); flt64_t Math::RelError (flt64_t approximate, flt64_t accurate); flt32v4_t Math::RelError (flt32v4_t approximate, flt32v4_t accurate); flt64v2_t Math::RelError (flt64v2_t approximate, flt64v2_t accurate);
Description: Compute relative error between approximate and accurate values.
Parameters:
- approximate - approximate value
- accurate - accurate value
Return value:
- Relative error, computed as Abs ((approximate - accurate) / accurate).
- NaN (not a number) if either of function parameters is NaN, or both parameters are equal to infinity value with the same sign, or accurate value is equal to zero.
Scale functions
Scale functions multiply source value to specified base raised to power, and then return new value as function result.
Scale by power of 2
Cflt32_t Math_Scale2_flt32 (flt32_t value, sint16_t exp); flt64_t Math_Scale2_flt64 (flt64_t value, sint16_t exp);
C++flt32_t Math::Scale2 (flt32_t value, sint16_t exp); flt64_t Math::Scale2 (flt64_t value, sint16_t exp);
Description: Scale value by 2 raised to specified power, where power is an integer value.
Parameters:
- value - source value for scale
- exp - power value to compute
Return value: Source value multiplied to 2x.
Scale by power of 10
Cflt32_t Math_Scale10_flt32 (flt32_t value, sint16_t exp); flt64_t Math_Scale10_flt64 (flt64_t value, sint16_t exp);
C++flt32_t Math::Scale10 (flt32_t value, sint16_t exp); flt64_t Math::Scale10 (flt64_t value, sint16_t exp);
Description: Scale value by 10 raised to specified power, where power is an integer value.
Parameters:
- value - source value for scale
- exp - power value to compute
Return value: Source value multiplied to 10x.
Exponentiation functions
These are general exponentiation functions, returning specified base raised to provided power.
Exponentiation by base 2
Compute 2 raised to "exp" power.
Integer exponentiation by base 2
Cuint64_t Math_Exp2i_uint64 (uint8_t exp); flt32_t Math_Exp2i_flt32 (sint8_t exp); flt64_t Math_Exp2i_flt64 (sint16_t exp);
C++uint64_t Math::Exp2i (uint8_t exp); flt32_t Math::Exp2i (sint8_t exp); flt64_t Math::Exp2i (sint16_t exp);
Description: Compute 2 raised to specified power, where power is an integer value.
Parameters:
- exp - power value to compute
Return value:
- Value of 2x.
- 0 (zero) in case of integer value overflow.
- Inf (infinity) in case of floating-point value overflow.
Real exponentiation by base 2
Cflt32_t Math_Exp2_flt32 (flt32_t exp); flt64_t Math_Exp2_flt64 (flt64_t exp); flt32v4_t Math_Exp2_flt32v4 (flt32v4_t exp); flt64v2_t Math_Exp2_flt64v2 (flt64v2_t exp);
C++flt32_t Math::Exp2 (flt32_t exp); flt64_t Math::Exp2 (flt64_t exp); flt32v4_t Math::Exp2 (flt32v4_t exp); flt64v2_t Math::Exp2 (flt64v2_t exp);
Description: Calculate 2 raised to specified power, where power is a floating-point value.
Parameters:
- exp - power value to compute
Return value:
- Value of 2x.
- NaN (not a number) if value is NaN.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Cflt32_t Math_Exp2m1_flt32 (flt32_t exp); flt64_t Math_Exp2m1_flt64 (flt64_t exp); flt32v4_t Math_Exp2m1_flt32v4 (flt32v4_t exp); flt64v2_t Math_Exp2m1_flt64v2 (flt64v2_t exp);
C++flt32_t Math::Exp2m1 (flt32_t exp); flt64_t Math::Exp2m1 (flt64_t exp); flt32v4_t Math::Exp2m1 (flt32v4_t exp); flt64v2_t Math::Exp2m1 (flt64v2_t exp);
Description: Calculate 2 raised to specified power minus one, where power is a floating-point value.
Parameters:
- exp - power value to compute
Return value:
- Value of 2x - 1.
- NaN (not a number) if value is NaN.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Exponentiation by base 10
Compute 10 raised to "exp" power.
Integer exponentiation by base 10
Cuint64_t Math_Exp10i_uint64 (uint8_t exp); flt32_t Math_Exp10i_flt32 (sint8_t exp); flt64_t Math_Exp10i_flt64 (sint16_t exp);
C++uint64_t Math::Exp10i (uint8_t exp); flt32_t Math::Exp10i (sint8_t exp); flt64_t Math::Exp10i (sint16_t exp);
Description: Compute 10 raised to specified power, where power is an integer value.
Parameters:
- exp - power value to compute
Return value:
- Value of 10x.
- 0 (zero) in case of integer value overflow.
- Inf (infinity) in case of floating-point value overflow.
Real exponentiation by base 10
Cflt32_t Math_Exp10_flt32 (flt32_t exp); flt64_t Math_Exp10_flt64 (flt64_t exp); flt32v4_t Math_Exp10_flt32v4 (flt32v4_t exp); flt64v2_t Math_Exp10_flt64v2 (flt64v2_t exp);
C++flt32_t Math::Exp10 (flt32_t exp); flt64_t Math::Exp10 (flt64_t exp); flt32v4_t Math::Exp10 (flt32v4_t exp); flt64v2_t Math::Exp10 (flt64v2_t exp);
Description: Calculate 10 raised to specified power, where power is a floating-point value.
Parameters:
- exp - power value to compute
Return value:
- Value of 10x.
- NaN (not a number) if value is NaN.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Cflt32_t Math_Exp10m1_flt32 (flt32_t exp); flt64_t Math_Exp10m1_flt64 (flt64_t exp); flt32v4_t Math_Exp10m1_flt32v4 (flt32v4_t exp); flt64v2_t Math_Exp10m1_flt64v2 (flt64v2_t exp);
C++flt32_t Math::Exp10m1 (flt32_t exp); flt64_t Math::Exp10m1 (flt64_t exp); flt32v4_t Math::Exp10m1 (flt32v4_t exp); flt64v2_t Math::Exp10m1 (flt64v2_t exp);
Description: Calculate 10 raised to specified power minus one, where power is a floating-point value.
Parameters:
- exp - power value to compute
Return value:
- Value of 10x - 1.
- NaN (not a number) if value is NaN.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Exponentiation by base E (natural logarithm)
Compute e (base of natural logarithm) raised to "exp" power.
Cflt32_t Math_Exp_flt32 (flt32_t exp); flt64_t Math_Exp_flt64 (flt64_t exp); flt32v4_t Math_Exp_flt32v4 (flt32v4_t exp); flt64v2_t Math_Exp_flt64v2 (flt64v2_t exp);
C++flt32_t Math::Exp (flt32_t exp); flt64_t Math::Exp (flt64_t exp); flt32v4_t Math::Exp (flt32v4_t exp); flt64v2_t Math::Exp (flt64v2_t exp);
Description: Calculate e (base of natural logarithm) raised to specified power, where power is a floating-point value.
Parameters:
- exp - power value to compute
Return value:
- Value of Ex.
- NaN (not a number) if value is NaN.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Cflt32_t Math_Expm1_flt32 (flt32_t exp); flt64_t Math_Expm1_flt64 (flt64_t exp); flt32v4_t Math_Expm1_flt32v4 (flt32v4_t exp); flt64v2_t Math_Expm1_flt64v2 (flt64v2_t exp);
C++flt32_t Math::Expm1 (flt32_t exp); flt64_t Math::Expm1 (flt64_t exp); flt32v4_t Math::Expm1 (flt32v4_t exp); flt64v2_t Math::Expm1 (flt64v2_t exp);
Description: Calculate e (base of natural logarithm) raised to specified power minus one, where power is a floating-point value.
Parameters:
- exp - power value to compute
Return value:
- Value of Ex - 1.
- NaN (not a number) if value is NaN.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Exponentiation by custom base
Compute "base" raised to "exp" power.
Integer exponentiation by custom base
C Unsigned integer types uint8_t Math_ExpBi_uint8 (uint8_t base, uint8_t exp); uint16_t Math_ExpBi_uint16 (uint16_t base, uint8_t exp); uint32_t Math_ExpBi_uint32 (uint32_t base, uint8_t exp); uint64_t Math_ExpBi_uint64 (uint64_t base, uint8_t exp); Signed integer types sint8_t Math_ExpBi_sint8 (sint8_t base, uint8_t exp); sint16_t Math_ExpBi_sint16 (sint16_t base, uint8_t exp); sint32_t Math_ExpBi_sint32 (sint32_t base, uint8_t exp); sint64_t Math_ExpBi_sint64 (sint64_t base, uint8_t exp);
C++ Unsigned integer types uint8_t Math::ExpBi (uint8_t base, uint8_t exp); uint16_t Math::ExpBi (uint16_t base, uint8_t exp); uint32_t Math::ExpBi (uint32_t base, uint8_t exp); uint64_t Math::ExpBi (uint64_t base, uint8_t exp); Signed integer types sint8_t Math::ExpBi (sint8_t base, uint8_t exp); sint16_t Math::ExpBi (sint16_t base, uint8_t exp); sint32_t Math::ExpBi (sint32_t base, uint8_t exp); sint64_t Math::ExpBi (sint64_t base, uint8_t exp);
Description: Compute specified base raised to integer power.
Parameters:
- base - base for raise
- exp - power value to compute
Return value:
- Value of base raised to "exp" power.
- 0 (zero) in case of integer value overflow, or both integer arguments (base and power) are equal to zero.
Real exponentiation by custom base
Cflt32_t Math_ExpB_flt32 (flt32_t base, flt32_t exp); flt64_t Math_ExpB_flt64 (flt64_t base, flt64_t exp); flt32v4_t Math_ExpB_flt32v4 (flt32v4_t base, flt32v4_t exp); flt64v2_t Math_ExpB_flt64v2 (flt64v2_t base, flt64v2_t exp);
C++flt32_t Math::ExpB (flt32_t base, flt32_t exp); flt64_t Math::ExpB (flt64_t base, flt64_t exp); flt32v4_t Math::ExpB (flt32v4_t base, flt32v4_t exp); flt64v2_t Math::ExpB (flt64v2_t base, flt64v2_t exp);
Description: Calculate "base" raised to specified power, where power is a floating-point value.
Parameters:
- base - base value
- exp - power value to compute
Return value:
- Value of Bx.
- NaN (not a number) if value is NaN, or base is less than zero or NaN, or both arguments (base and power) are equal to zero.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Cflt32_t Math_ExpBm1_flt32 (flt32_t base, flt32_t exp); flt64_t Math_ExpBm1_flt64 (flt64_t base, flt64_t exp); flt32v4_t Math_ExpBm1_flt32v4 (flt32v4_t base, flt32v4_t exp); flt64v2_t Math_ExpBm1_flt64v2 (flt64v2_t base, flt64v2_t exp);
C++flt32_t Math::ExpBm1 (flt32_t base, flt32_t exp); flt64_t Math::ExpBm1 (flt64_t base, flt64_t exp); flt32v4_t Math::ExpBm1 (flt32v4_t base, flt32v4_t exp); flt64v2_t Math::ExpBm1 (flt64v2_t base, flt64v2_t exp);
Description: Calculate "base" raised to specified power minus one, where power is a floating-point value.
Parameters:
- base - base value
- exp - power value to compute
Return value:
- Value of Bx - 1.
- NaN (not a number) if value is NaN, or base is less than zero or NaN, or both arguments (base and power) are equal to zero.
- +Inf (plus infinity) if result is too big and cannot be represented in floating-point format.
- Subnormal value in case of underflow.
- 0 (zero) if exponent value can not be represented as subnormal value.
Logarithmic functions
Logarithmic functions return exponent to which the base, must be raised to produce passed value.
Logarithm to base 2
Compute logarithm value to base 2.
Integer logarithm to base 2
Cuint8_t Math_Log2i_uint8 (uint8_t value); uint8_t Math_Log2i_uint16 (uint16_t value); uint8_t Math_Log2i_uint32 (uint32_t value); uint8_t Math_Log2i_uint64 (uint64_t value);
C++uint8_t Math::Log2i (uint8_t value); uint8_t Math::Log2i (uint16_t value); uint8_t Math::Log2i (uint32_t value); uint8_t Math::Log2i (uint64_t value);
Description: Compute integer logarithm to base 2.
Parameters:
- value - value to find its logarithm
Return value:
- Integer logarithm to base 2 rounded to zero.
- -1 if value is equal to 0.
Real logarithm to base 2
Cflt32_t Math_Log2_flt32 (flt32_t value); flt64_t Math_Log2_flt64 (flt64_t value); flt32v4_t Math_Log2_flt32v4 (flt32v4_t value); flt64v2_t Math_Log2_flt64v2 (flt64v2_t value);
C++flt32_t Math::Log2 (flt32_t value); flt64_t Math::Log2 (flt64_t value); flt32v4_t Math::Log2 (flt32v4_t value); flt64v2_t Math::Log2 (flt64v2_t value);
Description: Compute logarithm to base 2 of specified value.
Parameters:
- value - value to find its logarithm
Return value:
- Logarithm value to base 2.
- NaN (not a number) if value is less than or equal to 0.
Cflt32_t Math_Log2p1_flt32 (flt32_t value); flt64_t Math_Log2p1_flt64 (flt64_t value); flt32v4_t Math_Log2p1_flt32v4 (flt32v4_t value); flt64v2_t Math_Log2p1_flt64v2 (flt64v2_t value);
C++flt32_t Math::Log2p1 (flt32_t value); flt64_t Math::Log2p1 (flt64_t value); flt32v4_t Math::Log2p1 (flt32v4_t value); flt64v2_t Math::Log2p1 (flt64v2_t value);
Description: Compute logarithm to base 2 of specified value plus 1.
Parameters:
- value - value to find its logarithm
Return value:
- Logarithm value to base 2.
- NaN (not a number) if value is less than or equal to -1.
Logarithm to base 10
Compute logarithm value to base 10.
Integer logarithm to base 10
Cuint8_t Math_Log10i_uint8 (uint8_t value); uint8_t Math_Log10i_uint16 (uint16_t value); uint8_t Math_Log10i_uint32 (uint32_t value); uint8_t Math_Log10i_uint64 (uint64_t value);
C++uint8_t Math::Log10i (uint8_t value); uint8_t Math::Log10i (uint16_t value); uint8_t Math::Log10i (uint32_t value); uint8_t Math::Log10i (uint64_t value);
Description: Compute integer logarithm to base 10.
Parameters:
- value - value to find its logarithm
Return value:
- Integer logarithm to base 10 rounded to zero.
- -1 if value is equal to 0.
Real logarithm to base 10
Cflt32_t Math_Log10_flt32 (flt32_t value); flt64_t Math_Log10_flt64 (flt64_t value); flt32v4_t Math_Log10_flt32v4 (flt32v4_t value); flt64v2_t Math_Log10_flt64v2 (flt64v2_t value);
C++flt32_t Math::Log10 (flt32_t value); flt64_t Math::Log10 (flt64_t value); flt32v4_t Math::Log10 (flt32v4_t value); flt64v2_t Math::Log10 (flt64v2_t value);
Description: Compute logarithm to base 10 of specified value.
Parameters:
- value - value to find its logarithm
Return value:
- Logarithm value to base 10.
- NaN (not a number) if value is less than or equal to 0.
Cflt32_t Math_Log10p1_flt32 (flt32_t value); flt64_t Math_Log10p1_flt64 (flt64_t value); flt32v4_t Math_Log10p1_flt32v4 (flt32v4_t value); flt64v2_t Math_Log10p1_flt64v2 (flt64v2_t value);
C++flt32_t Math::Log10p1 (flt32_t value); flt64_t Math::Log10p1 (flt64_t value); flt32v4_t Math::Log10p1 (flt32v4_t value); flt64v2_t Math::Log10p1 (flt64v2_t value);
Description: Compute logarithm to base 10 of specified value plus 1.
Parameters:
- value - value to find its logarithm
Return value:
- Logarithm value to base 10.
- NaN (not a number) if value is less than or equal to -1.
Logarithm to base E (natural logarithm)
Compute natural logarithm value.
Cflt32_t Math_Log_flt32 (flt32_t value); flt64_t Math_Log_flt64 (flt64_t value); flt32v4_t Math_Log_flt32v4 (flt32v4_t value); flt64v2_t Math_Log_flt64v2 (flt64v2_t value);
C++flt32_t Math::Log (flt32_t value); flt64_t Math::Log (flt64_t value); flt32v4_t Math::Log (flt32v4_t value); flt64v2_t Math::Log (flt64v2_t value);
Description: Compute natural logarithm of specified value.
Parameters:
- value - value to find its logarithm
Return value:
- Natural logarithm value.
- NaN (not a number) if value is less than or equal to 0.
Cflt32_t Math_Logp1_flt32 (flt32_t value); flt64_t Math_Logp1_flt64 (flt64_t value); flt32v4_t Math_Logp1_flt32v4 (flt32v4_t value); flt64v2_t Math_Logp1_flt64v2 (flt64v2_t value);
C++flt32_t Math::Logp1 (flt32_t value); flt64_t Math::Logp1 (flt64_t value); flt32v4_t Math::Logp1 (flt32v4_t value); flt64v2_t Math::Logp1 (flt64v2_t value);
Description: Compute natural logarithm of specified value plus 1.
Parameters:
- value - value to find its logarithm
Return value:
- Natural logarithm value.
- NaN (not a number) if value is less than or equal to -1.
Trigonometric functions
This block of functions provides most popular trigonometric functions are used in typical programs. They use vector extension of newest CPUs and can significantly improve performance of such kind of calculations.
Hypotenuse
Compute 2 dimensional and 3 dimensional hypotenuse by known cathetus.
2 dimensional hypotenuse
Cflt32_t Math_Hypot2D_flt32 (flt32_t cath1, flt32_t cath2); flt64_t Math_Hypot2D_flt64 (flt64_t cath1, flt64_t cath2); flt32v4_t Math_Hypot2D_flt32v4 (flt32v4_t cath1, flt32v4_t cath2); flt64v2_t Math_Hypot2D_flt64v2 (flt64v2_t cath1, flt64v2_t cath2);
C++flt32_t Math::Hypot2D (flt32_t cath1, flt32_t cath2); flt64_t Math::Hypot2D (flt64_t cath1, flt64_t cath2); flt32v4_t Math::Hypot2D (flt32v4_t cath1, flt32v4_t cath2); flt64v2_t Math::Hypot2D (flt64v2_t cath1, flt64v2_t cath2);
Description: Calculate length of 2 dimensional hypotenuse by cathetus values.
Parameters:
- cath1 - first cathetus
- cath2 - second cathetus
Return value:
- Length of hypotenuse.
- Inf (infinity) if hypotenuse is too big and cannot be represented in selected floating-point type.
- Subnormal value in case of underflow.
- 0 (zero) if hypotenuse value can not be represented as subnormal value, or it is equal to zero.
3 dimensional hypotenuse
Cflt32_t Math_Hypot3D_flt32 (flt32_t cath1, flt32_t cath2, flt32_t cath3); flt64_t Math_Hypot3D_flt64 (flt64_t cath1, flt64_t cath2, flt64_t cath3); flt32v4_t Math_Hypot3D_flt32v4 (flt32v4_t cath1, flt32v4_t cath2, flt32v4_t cath3); flt64v2_t Math_Hypot3D_flt64v2 (flt64v2_t cath1, flt64v2_t cath2, flt64v2_t cath3);
C++flt32_t Math::Hypot3D (flt32_t cath1, flt32_t cath2, flt32_t cath3); flt64_t Math::Hypot3D (flt64_t cath1, flt64_t cath2, flt64_t cath3); flt32v4_t Math::Hypot3D (flt32v4_t cath1, flt32v4_t cath2, flt32v4_t cath3); flt64v2_t Math::Hypot3D (flt64v2_t cath1, flt64v2_t cath2, flt64v2_t cath3);
Description: Calculate length of 3 dimensional hypotenuse by cathetus values.
Parameters:
- cath1 - first cathetus
- cath2 - second cathetus
- cath3 - third cathetus
Return value:
- Length of hypotenuse.
- Inf (infinity) if hypotenuse is too big and cannot be represented in selected floating-point type.
- Subnormal value in case of underflow.
- 0 (zero) if hypotenuse value can not be represented as subnormal value, or it is equal to zero.
Cathetus
Cflt32_t Math_Cath_flt32 (flt32_t hypot, flt32_t cath); flt64_t Math_Cath_flt64 (flt64_t hypot, flt64_t cath); flt32v4_t Math_Cath_flt32v4 (flt32v4_t hypot, flt32v4_t cath); flt64v2_t Math_Cath_flt64v2 (flt64v2_t hypot, flt64v2_t cath);
C++flt32_t Math::Cath (flt32_t hypot, flt32_t cath); flt64_t Math::Cath (flt64_t hypot, flt64_t cath); flt32v4_t Math::Cath (flt32v4_t hypot, flt32v4_t cath); flt64v2_t Math::Cath (flt64v2_t hypot, flt64v2_t cath);
Description: Calculate length of cathetus of a right-angle triangle.
Parameters:
- hypot - hypotenuse
- cath - known cathetus
Return value:
- Length of cathetus.
- NaN (not a number) if hypotenuse is less than known cathetus.
- Subnormal value in case of underflow.
- 0 (zero) if cathetus value can not be represented as subnormal value, or it is equal to zero.
Trigonometric sine
Cflt32_t Math_Sin_flt32 (flt32_t value); flt64_t Math_Sin_flt64 (flt64_t value); flt32v4_t Math_Sin_flt32v4 (flt32v4_t value); flt64v2_t Math_Sin_flt64v2 (flt64v2_t value);
C++flt32_t Math::Sin (flt32_t value); flt64_t Math::Sin (flt64_t value); flt32v4_t Math::Sin (flt32v4_t value); flt64v2_t Math::Sin (flt64v2_t value);
Description: Compute trigonometric sine value for specified angle, given in radians.
Parameters:
- value - floating-point value representing an angle expressed in radians
Return value:
- Trigonometric sine value.
- NaN (not a number) if angle value is out of range (-263,+263) or NaN.
Trigonometric cosine
Cflt32_t Math_Cos_flt32 (flt32_t value); flt64_t Math_Cos_flt64 (flt64_t value); flt32v4_t Math_Cos_flt32v4 (flt32v4_t value); flt64v2_t Math_Cos_flt64v2 (flt64v2_t value);
C++flt32_t Math::Cos (flt32_t value); flt64_t Math::Cos (flt64_t value); flt32v4_t Math::Cos (flt32v4_t value); flt64v2_t Math::Cos (flt64v2_t value);
Description: Compute trigonometric cosine value for specified angle, given in radians.
Parameters:
- value - floating-point value representing an angle expressed in radians
Return value:
- Trigonometric cosine value.
- NaN (not a number) if angle value is out of range (-263,+263) or NaN.
Trigonometric sine and cosine
Cvoid Math_SinCos_flt32 (flt32_t *sin, flt32_t *cos, flt32_t value); void Math_SinCos_flt64 (flt64_t *sin, flt64_t *cos, flt64_t value); void Math_SinCos_flt32v4 (flt32v4_t *sin, flt32v4_t *cos, flt32v4_t value); void Math_SinCos_flt64v2 (flt64v2_t *sin, flt64v2_t *cos, flt64v2_t value);
C++void Math::SinCos (flt32_t *sin, flt32_t *cos, flt32_t value); void Math::SinCos (flt64_t *sin, flt64_t *cos, flt64_t value); void Math::SinCos (flt32v4_t *sin, flt32v4_t *cos, flt32v4_t value); void Math::SinCos (flt64v2_t *sin, flt64v2_t *cos, flt64v2_t value);
Description: Compute trigonometric sine and trigonometric cosine values for specified angle, given in radians.
Parameters:
- sin - pointer to floating-point variable where to put sine value
- cos - pointer to floating-point variable where to put cosine value
- value - floating-point value representing an angle expressed in radians
Return value:
- Trigonometric sine and cosine values are placed into appropriate variables.
- NaN (not a number) if angle value is out of range (-263,+263) or NaN.
Trigonometric tangent
Cflt32_t Math_Tan_flt32 (flt32_t value); flt64_t Math_Tan_flt64 (flt64_t value); flt32v4_t Math_Tan_flt32v4 (flt32v4_t value); flt64v2_t Math_Tan_flt64v2 (flt64v2_t value);
C++flt32_t Math::Tan (flt32_t value); flt64_t Math::Tan (flt64_t value); flt32v4_t Math::Tan (flt32v4_t value); flt64v2_t Math::Tan (flt64v2_t value);
Description: Compute trigonometric tangent value for specified angle, given in radians.
Parameters:
- value - floating-point value representing an angle expressed in radians
Return value:
- Trigonometric tangent value.
- NaN (not a number) if angle value is out of range (-263,+263) or NaN.
Inverse trigonometric functions
Inverse trigonometric functions are the inverses of the sine, cosine, and tangent functions. They are used to obtain an angle from any of the angle's trigonometric ratios. Inverse trigonometric functions are widely used in engineering, navigation, physics, and geometry.
Inverse trigonometric sine
Cflt32_t Math_ArcSin_flt32 (flt32_t value); flt64_t Math_ArcSin_flt64 (flt64_t value); flt32v4_t Math_ArcSin_flt32v4 (flt32v4_t value); flt64v2_t Math_ArcSin_flt64v2 (flt64v2_t value);
C++flt32_t Math::ArcSin (flt32_t value); flt64_t Math::ArcSin (flt64_t value); flt32v4_t Math::ArcSin (flt32v4_t value); flt64v2_t Math::ArcSin (flt64v2_t value);
Description: Compute inverse trigonometric sine value.
Parameters:
- value - trigonometric sine value in range [-1.0,+1.0]
Return value:
- Value of the inverse trigonometric sine in range [-Pi/2,+Pi/2].
- NaN (not a number) if value is out of the range or NaN.
Inverse trigonometric cosine
Cflt32_t Math_ArcCos_flt32 (flt32_t value); flt64_t Math_ArcCos_flt64 (flt64_t value); flt32v4_t Math_ArcCos_flt32v4 (flt32v4_t value); flt64v2_t Math_ArcCos_flt64v2 (flt64v2_t value);
C++flt32_t Math::ArcCos (flt32_t value); flt64_t Math::ArcCos (flt64_t value); flt32v4_t Math::ArcCos (flt32v4_t value); flt64v2_t Math::ArcCos (flt64v2_t value);
Description: Compute inverse trigonometric cosine value.
Parameters:
- value - trigonometric cosine value in range [-1.0,+1.0]
Return value:
- Value of the inverse trigonometric cosine in range [0,Pi].
- NaN (not a number) if value is out of the range or NaN.
Inverse trigonometric tangent
Cflt32_t Math_ArcTan_flt32 (flt32_t value); flt64_t Math_ArcTan_flt64 (flt64_t value); flt32v4_t Math_ArcTan_flt32v4 (flt32v4_t value); flt64v2_t Math_ArcTan_flt64v2 (flt64v2_t value);
C++flt32_t Math::ArcTan (flt32_t value); flt64_t Math::ArcTan (flt64_t value); flt32v4_t Math::ArcTan (flt32v4_t value); flt64v2_t Math::ArcTan (flt64v2_t value);
Description: Compute inverse trigonometric tangent value.
Parameters:
- value - trigonometric tangent value
Return value:
- Value of the inverse trigonometric tangent in range [-Pi/2,+Pi/2].
- NaN (not a number) if value is NaN.
Cflt32_t Math_ArcTan2_flt32 (flt32_t sin, flt32_t cos); flt64_t Math_ArcTan2_flt64 (flt64_t sin, flt64_t cos); flt32v4_t Math_ArcTan2_flt32v4 (flt32v4_t sin, flt32v4_t cos); flt64v2_t Math_ArcTan2_flt64v2 (flt64v2_t sin, flt64v2_t cos);
C++flt32_t Math::ArcTan2 (flt32_t sin, flt32_t cos); flt64_t Math::ArcTan2 (flt64_t sin, flt64_t cos); flt32v4_t Math::ArcTan2 (flt32v4_t sin, flt32v4_t cos); flt64v2_t Math::ArcTan2 (flt64v2_t sin, flt64v2_t cos);
Description: Compute inverse trigonometric tangent value, using sine and cosine values.
Parameters:
- sin - trigonometric sine value
- cos - trigonometric cosine value
Return value:
- Value of the inverse trigonometric tangent in range [-Pi,+Pi].
- NaN (not a number) if sine or cosine value is NaN.
Hyperbolic functions
Hyperbolic functions are analogs of the ordinary trigonometric, or circular, functions. The basic hyperbolic functions are the hyperbolic sine "sinh", and the hyperbolic cosine "cosh", from which is derived the hyperbolic tangent "tanh". The hyperbolic functions take a real argument called a hyperbolic angle. The size of a hyperbolic angle is the area of its hyperbolic sector. The hyperbolic functions may be defined in terms of the legs of a right triangle covering this sector.
Hyperbolic functions occur in the solutions of some important linear differential equations, for example the equation defining a catenary, of some cubic equations, and of Laplace's equation in Cartesian coordinates. The latter is important in many areas of physics, including electromagnetic theory, heat transfer, fluid dynamics, and special relativity.
Hyperbolic sine
Cflt32_t Math_SinH_flt32 (flt32_t value); flt64_t Math_SinH_flt64 (flt64_t value); flt32v4_t Math_SinH_flt32v4 (flt32v4_t value); flt64v2_t Math_SinH_flt64v2 (flt64v2_t value);
C++flt32_t Math::SinH (flt32_t value); flt64_t Math::SinH (flt64_t value); flt32v4_t Math::SinH (flt32v4_t value); flt64v2_t Math::SinH (flt64v2_t value);
Description: Compute hyperbolic sine value for specified angle.
Parameters:
- value - floating-point value representing a hyperbolic angle
Return value:
- Hyperbolic sine value.
- +Inf if value is +Inf.
- -Inf if value is -Inf.
Hyperbolic cosine
Cflt32_t Math_CosH_flt32 (flt32_t value); flt64_t Math_CosH_flt64 (flt64_t value); flt32v4_t Math_CosH_flt32v4 (flt32v4_t value); flt64v2_t Math_CosH_flt64v2 (flt64v2_t value);
C++flt32_t Math::CosH (flt32_t value); flt64_t Math::CosH (flt64_t value); flt32v4_t Math::CosH (flt32v4_t value); flt64v2_t Math::CosH (flt64v2_t value);
Description: Compute hyperbolic cosine value for specified angle.
Parameters:
- value - floating-point value representing a hyperbolic angle
Return value:
- Hyperbolic cosine value.
- Inf if value is Inf.
Hyperbolic tangent
Cflt32_t Math_TanH_flt32 (flt32_t value); flt64_t Math_TanH_flt64 (flt64_t value); flt32v4_t Math_TanH_flt32v4 (flt32v4_t value); flt64v2_t Math_TanH_flt64v2 (flt64v2_t value);
C++flt32_t Math::TanH (flt32_t value); flt64_t Math::TanH (flt64_t value); flt32v4_t Math::TanH (flt32v4_t value); flt64v2_t Math::TanH (flt64v2_t value);
Description: Compute hyperbolic tangent value for specified angle.
Parameters:
- value - floating-point value representing a hyperbolic angle
Return value:
- Hyperbolic tangent value.
- +1 if value is +Inf.
- -1 if value is -Inf.
Inverse hyperbolic functions
Inverse hyperbolic functions provide a hyperbolic angle corresponding to a given value of a hyperbolic function. The size of the hyperbolic angle is equal to the area of the corresponding hyperbolic sector of the hyperbola x * y = 1, or twice the area of the corresponding sector of the unit hyperbola x2 − y2 = 1, just as a circular angle is twice the area of the circular sector of the unit circle.
Inverse hyperbolic sine
Cflt32_t Math_ArcSinH_flt32 (flt32_t value); flt64_t Math_ArcSinH_flt64 (flt64_t value); flt32v4_t Math_ArcSinH_flt32v4 (flt32v4_t value); flt64v2_t Math_ArcSinH_flt64v2 (flt64v2_t value);
C++flt32_t Math::ArcSinH (flt32_t value); flt64_t Math::ArcSinH (flt64_t value); flt32v4_t Math::ArcSinH (flt32v4_t value); flt64v2_t Math::ArcSinH (flt64v2_t value);
Description: Compute inverse hyperbolic sine of specified value.
Parameters:
- value - hyperbolic sine value
Return value:
- Value of inverse hyperbolic sine.
- NaN (not a number) if value is NaN.
Inverse hyperbolic cosine
Cflt32_t Math_ArcCosH_flt32 (flt32_t value); flt64_t Math_ArcCosH_flt64 (flt64_t value); flt32v4_t Math_ArcCosH_flt32v4 (flt32v4_t value); flt64v2_t Math_ArcCosH_flt64v2 (flt64v2_t value);
C++flt32_t Math::ArcCosH (flt32_t value); flt64_t Math::ArcCosH (flt64_t value); flt32v4_t Math::ArcCosH (flt32v4_t value); flt64v2_t Math::ArcCosH (flt64v2_t value);
Description: Compute inverse hyperbolic cosine of specified value.
Parameters:
- value - hyperbolic cosine value
Return value:
- Value of inverse hyperbolic cosine.
- NaN (not a number) if value is less than 1.0 or NaN.
Inverse hyperbolic tangent
Cflt32_t Math_ArcTanH_flt32 (flt32_t value); flt64_t Math_ArcTanH_flt64 (flt64_t value); flt32v4_t Math_ArcTanH_flt32v4 (flt32v4_t value); flt64v2_t Math_ArcTanH_flt64v2 (flt64v2_t value);
C++flt32_t Math::ArcTanH (flt32_t value); flt64_t Math::ArcTanH (flt64_t value); flt32v4_t Math::ArcTanH (flt32v4_t value); flt64v2_t Math::ArcTanH (flt64v2_t value);
Description: Compute inverse hyperbolic tangent of specified value.
Parameters:
- value - hyperbolic tangent value in range [-1,+1]
Return value:
- Value of inverse hyperbolic tangent.
- NaN (not a number) if value is out of the range or NaN.
Rounding
These functions round their argument to nearest integer value in floating point format according to required rounding mode.
Round down (floor)
Cflt32_t Math_RoundDown_flt32 (flt32_t value); flt64_t Math_RoundDown_flt64 (flt64_t value); flt32v4_t Math_RoundDown_flt32v4 (flt32v4_t value); flt64v2_t Math_RoundDown_flt64v2 (flt64v2_t value);
C++flt32_t Math::RoundDown (flt32_t value); flt64_t Math::RoundDown (flt64_t value); flt32v4_t Math::RoundDown (flt32v4_t value); flt64v2_t Math::RoundDown (flt64v2_t value);
Description: Round specified argument to an integer value in floating-point format, using round down (floor) mode.
Parameters:
- value - value to round
Return value:
- Value rounded down to minus infinity.
- NaN (not a number) if value is NaN.
Round up (ceil)
Cflt32_t Math_RoundUp_flt32 (flt32_t value); flt64_t Math_RoundUp_flt64 (flt64_t value); flt32v4_t Math_RoundUp_flt32v4 (flt32v4_t value); flt64v2_t Math_RoundUp_flt64v2 (flt64v2_t value);
C++flt32_t Math::RoundUp (flt32_t value); flt64_t Math::RoundUp (flt64_t value); flt32v4_t Math::RoundUp (flt32v4_t value); flt64v2_t Math::RoundUp (flt64v2_t value);
Description: Round specified argument to an integer value in floating-point format, using round up (ceil) mode.
Parameters:
- value - value to round
Return value:
- Value rounded up to plus infinity.
- NaN (not a number) if value is NaN.
Round to nearest even integer
Cflt32_t Math_RoundInt_flt32 (flt32_t value); flt64_t Math_RoundInt_flt64 (flt64_t value); flt32v4_t Math_RoundInt_flt32v4 (flt32v4_t value); flt64v2_t Math_RoundInt_flt64v2 (flt64v2_t value);
C++flt32_t Math::RoundInt (flt32_t value); flt64_t Math::RoundInt (flt64_t value); flt32v4_t Math::RoundInt (flt32v4_t value); flt64v2_t Math::RoundInt (flt64v2_t value);
Description: Round specified argument to an integer value in floating-point format, using round to nearest even integer mode.
Parameters:
- value - value to round
Return value:
- Value rounded to nearest even integer.
- NaN (not a number) if value is NaN.
Round to nearest integer, away from zero
Cflt32_t Math_Round_flt32 (flt32_t value); flt64_t Math_Round_flt64 (flt64_t value); flt32v4_t Math_Round_flt32v4 (flt32v4_t value); flt64v2_t Math_Round_flt64v2 (flt64v2_t value);
C++flt32_t Math::Round (flt32_t value); flt64_t Math::Round (flt64_t value); flt32v4_t Math::Round (flt32v4_t value); flt64v2_t Math::Round (flt64v2_t value);
Description: Round specified argument to an integer value in floating-point format, using round to nearest integer, away from zero mode.
Parameters:
- value - value to round
Return value:
- Value rounded to nearest integer, away from zero.
- NaN (not a number) if value is NaN.
Round to nearest integer, toward zero (truncation)
Cflt32_t Math_Truncate_flt32 (flt32_t value); flt64_t Math_Truncate_flt64 (flt64_t value); flt32v4_t Math_Truncate_flt32v4 (flt32v4_t value); flt64v2_t Math_Truncate_flt64v2 (flt64v2_t value);
C++flt32_t Math::Truncate (flt32_t value); flt64_t Math::Truncate (flt64_t value); flt32v4_t Math::Truncate (flt32v4_t value); flt64v2_t Math::Truncate (flt64v2_t value);
Description: Round specified argument to an integer value in floating-point format, using round to nearest integer, toward zero (truncation) mode.
Parameters:
- value - value to round
Return value:
- Value truncated to zero.
- NaN (not a number) if value is NaN.
Fractional part
Cflt32_t Math_Frac_flt32 (flt32_t value); flt64_t Math_Frac_flt64 (flt64_t value); flt32v4_t Math_Frac_flt32v4 (flt32v4_t value); flt64v2_t Math_Frac_flt64v2 (flt64v2_t value);
C++flt32_t Math::Frac (flt32_t value); flt64_t Math::Frac (flt64_t value); flt32v4_t Math::Frac (flt32v4_t value); flt64v2_t Math::Frac (flt64v2_t value);
Description: Return fractional part of floating-point value, preserving sign of original number.
Parameters:
- value - value to round
Return value:
- Fractional part of floating-point value with correct sign.
- NaN (not a number) if value is NaN.
Checks
These functions check floating-point variables for special values, and return result as bool variable, which shows check status.
Check for normal value
Cbool Math_IsNormal_flt32 (flt32_t value); bool Math_IsNormal_flt64 (flt64_t value);
C++bool Math::IsNormal (flt32_t value); bool Math::IsNormal (flt64_t value);
Description: Check if variable is normal floating-point value.
Parameters:
- value - value to check
Return value:
- TRUE (1) if variable is normal floating-point value.
- FALSE (0) if variable is not normal floating-point value.
Check for subnormal value
Cbool Math_IsSubnormal_flt32 (flt32_t value); bool Math_IsSubnormal_flt64 (flt64_t value);
C++bool Math::IsSubnormal (flt32_t value); bool Math::IsSubnormal (flt64_t value);
Description: Check if variable is subnormal floating-point value.
Parameters:
- value - value to check
Return value:
- TRUE (1) if variable is subnormal floating-point value.
- FALSE (0) if variable is not subnormal floating-point value.
Check for finite value
Cbool Math_IsFinite_flt32 (flt32_t value); bool Math_IsFinite_flt64 (flt64_t value);
C++bool Math::IsFinite (flt32_t value); bool Math::IsFinite (flt64_t value);
Description: Check if variable is finite floating-point value.
Parameters:
- value - value to check
Return value:
- TRUE (1) if variable is finite floating-point value.
- FALSE (0) if variable is not finite floating-point value.
Check for infinite value
Cbool Math_IsInfinite_flt32 (flt32_t value); bool Math_IsInfinite_flt64 (flt64_t value);
C++bool Math::IsInfinite (flt32_t value); bool Math::IsInfinite (flt64_t value);
Description: Check if variable is infinite floating-point value.
Parameters:
- value - value to check
Return value:
- TRUE (1) if variable is infinite floating-point value.
- FALSE (0) if variable is not infinite floating-point value.
Check for NaN value
Cbool Math_IsNaN_flt32 (flt32_t value); bool Math_IsNaN_flt64 (flt64_t value);
C++bool Math::IsNaN (flt32_t value); bool Math::IsNaN (flt64_t value);
Description: Check if variable is NaN value.
Parameters:
- value - value to check
Return value:
- TRUE (1) if variable is NaN value.
- FALSE (0) if variable is not NaN value.