diplib/saturated_arithmetic.h file

Defines templated functions for saturated arithmetic. See Pixel data types.

Contents

Functions

template<typename T, <SFINAE> = 0>
auto dip::saturated_add(T lhs, T rhs) -> T constexpr
Adds two values using saturated arithmetic.
template<typename T, <SFINAE> = 0>
auto dip::saturated_div(T lhs, T rhs) -> T constexpr
Divides two values using saturated arithmetic.
template<typename T, <SFINAE> = 0>
auto dip::saturated_inv(T v) -> T constexpr
Inverts a value using saturated arithmetic. This is the same as negation, but not for unsigned values, where the result is the input subtracted from the maximum value for the data type.
template<typename T, <SFINAE> = 0>
auto dip::saturated_mul(T lhs, T rhs) -> T constexpr
Multiplies two values using saturated arithmetic.
template<typename T>
auto dip::saturated_safediv(T lhs, T rhs) -> T constexpr
Divides two values using saturated arithmetic. Tests for division by zero, return 0 rather than infinity or NaN (or an exception).
template<typename T, <SFINAE> = 0>
auto dip::saturated_sub(T lhs, T rhs) -> T constexpr
Subtracts two values using saturated arithmetic.