VLink  2.0.0
A high-performance communication middleware
vlink::Quantize Namespace Reference

Stateless linear quantisation helpers. More...

Functions

template<typename QuantT , typename MinT , typename MaxT , typename ValueT >
QuantT encode (MinT quant_min, MaxT quant_max, ValueT value) noexcept
 Quantizes a value from a real range into an integral type. More...
 
template<typename ReturnT , typename MinT , typename MaxT , typename ValueT >
ReturnT decode (MinT quant_min, MaxT quant_max, ValueT value) noexcept
 Dequantizes an integral value into a real range. More...
 
template<typename QuantT , typename ExtentT , typename ValueT >
QuantT encode (ExtentT extent, ValueT value) noexcept
 Quantizes a value from [-extent,+extent] into a signed integral type. More...
 
template<typename ReturnT , typename ExtentT , typename ValueT >
ReturnT decode (ExtentT extent, ValueT value) noexcept
 Dequantizes a signed integral value from [-extent,+extent]. More...
 

Detailed Description

Stateless linear quantisation helpers.

Function Documentation

◆ decode() [1/2]

template<typename ReturnT , typename ExtentT , typename ValueT >
ReturnT vlink::Quantize::decode ( ExtentT  extent,
ValueT  value 
)
inlinenoexcept

Dequantizes a signed integral value from [-extent,+extent].

Equivalent to decode<ReturnT>(-extent, extent, value), but avoids the generic min/max mapping setup for symmetric extent ranges.

Parameters
extentPositive symmetric extent.
valueQuantized value.
Returns
Dequantized value, or 0 for invalid extent.

◆ decode() [2/2]

template<typename ReturnT , typename MinT , typename MaxT , typename ValueT >
ReturnT vlink::Quantize::decode ( MinT  quant_min,
MaxT  quant_max,
ValueT  value 
)
inlinenoexcept

Dequantizes an integral value into a real range.

Parameters
quant_minMinimum value of the real range.
quant_maxMaximum value of the real range.
valueQuantized value.
Returns
Dequantized value.

◆ encode() [1/2]

template<typename QuantT , typename ExtentT , typename ValueT >
QuantT vlink::Quantize::encode ( ExtentT  extent,
ValueT  value 
)
inlinenoexcept

Quantizes a value from [-extent,+extent] into a signed integral type.

Equivalent to encode<QuantT>(-extent, extent, value), but avoids the generic min/max mapping setup for symmetric extent ranges.

Parameters
extentPositive symmetric extent.
valueValue to quantize.
Returns
Quantized value, or 0 for invalid extent / NaN input.

◆ encode() [2/2]

template<typename QuantT , typename MinT , typename MaxT , typename ValueT >
QuantT vlink::Quantize::encode ( MinT  quant_min,
MaxT  quant_max,
ValueT  value 
)
inlinenoexcept

Quantizes a value from a real range into an integral type.

Details.

Parameters
quant_minMinimum value of the real range.
quant_maxMaximum value of the real range.
valueValue to quantize.
Returns
Quantized value.