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_sub(T lhs, T rhs) -> T constexpr
Subtracts two values using saturated arithmetic.
template<typename T, <SFINAE> = 0>
auto dip::saturated_mul(T lhs, T rhs) -> T constexpr
Multiplies 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>
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_inv(T v) -> T constexpr
Inverts a value using saturated arithmetic. This is the same as negation, but not for unsigned values.