Include dependency graph for muldiv.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes | |
struct | MuldivLimits< num, den, ValType > |
Obtain limits for a muldiv template calculation. More... | |
Functions | |
template<typename ValType > | |
ValType | muldivMaxValue (ValType timevar, ValType num, ValType den) |
Get the maximum value which can be passed to muldiv() without overflowing. More... | |
template<typename ValType , typename NumDenType > | |
ValType | muldiv (const ValType &value, const NumDenType &num, const NumDenType &den) |
Perform muldiv using unsigned integer types. More... | |
uint32_t | muldiv32 (uint32_t value, uint32_t num, uint32_t den) |
Perform muldiv using 32-bit values. More... | |
uint64_t | muldiv64 (const uint64_t &value, const uint64_t &num, const uint64_t &den) |
Perform muldiv using 64-bit values. More... | |
template<uint64_t num, uint64_t den, typename ValType > | |
ValType | muldiv (const ValType &value) |
Templated muldiv version so numerator and denominator are pre-calculated. More... | |
Function Documentation
◆ muldiv() [1/2]
template<uint64_t num, uint64_t den, typename ValType >
ValType muldiv | ( | const ValType & | value | ) |
Templated muldiv version so numerator and denominator are pre-calculated.
- Template Parameters
-
num den ValType
- Parameters
-
value
- Return values
-
ValType Returns numeric_limits<ValType>::max() on overflow (same as ValType(-1))
◆ muldiv() [2/2]
template<typename ValType , typename NumDenType >
ValType muldiv | ( | const ValType & | value, |
const NumDenType & | num, | ||
const NumDenType & | den | ||
) |
Perform muldiv using unsigned integer types.
- Template Parameters
-
ValType NumDenType
- Parameters
-
value num den
- Return values
-
ToType Returns numeric_limits<ToType>::max() on overflow (same as ValType(-1))
◆ muldiv32()
uint32_t muldiv32 | ( | uint32_t | value, |
uint32_t | num, | ||
uint32_t | den | ||
) |
Perform muldiv using 32-bit values.
- Parameters
-
value num den
- Return values
-
uint32_t
- Note
- Calculation will still use uint64_t internally if necessary to prevent overflow
◆ muldiv64()
uint64_t muldiv64 | ( | const uint64_t & | value, |
const uint64_t & | num, | ||
const uint64_t & | den | ||
) |
Perform muldiv using 64-bit values.
- Parameters
-
value num den
- Return values
-
uint32_t
- Note
- If calculation overflows there is always floating point, but will probably require double precision
◆ muldivMaxValue()
template<typename ValType >
ValType muldivMaxValue | ( | ValType | timevar, |
ValType | num, | ||
ValType | den | ||
) |
Get the maximum value which can be passed to muldiv() without overflowing.
- Template Parameters
-
ValType
- Parameters
-
timevar Result depends on size of variable used num den
- Return values
-
ValType Values greater than this will cause muldiv to return ValType(-1), i.e. range maximum