OpenCV: Softfloat support

| OpenCV 3.4.2 Open Source Computer Vision

Classes | Functions | Variables
Softfloat support
Core functionality » Utility and system functions and macros

## Classes
struct | cv::softdouble
struct | cv::softfloat

## Functions
| cv::softdouble::softdouble ()
| Default constructor. More...
| cv::softdouble::softdouble (const softdouble &c)
| Copy constructor. More...
| cv::softdouble::softdouble (const uint32_t)
| Construct from integer. More...
| cv::softdouble::softdouble (const uint64_t)
| cv::softdouble::softdouble (const int32_t)
| cv::softdouble::softdouble (const int64_t)
| cv::softdouble::softdouble (const double a)
| Construct from double. More...
| cv::softfloat::softfloat ()
| Default constructor. More...
| cv::softfloat::softfloat (const softfloat &c)
| Copy constructor. More...
| cv::softfloat::softfloat (const uint32_t)
| Construct from integer. More...
| cv::softfloat::softfloat (const uint64_t)
| cv::softfloat::softfloat (const int32_t)
| cv::softfloat::softfloat (const int64_t)
| cv::softfloat::softfloat (const float a)
| Construct from float. More...
softfloat | cv::abs (softfloat a)
| Absolute value. More...
softdouble | cv::abs (softdouble a)
softfloat | cv::cbrt (const softfloat &a)
| Cube root. More...
softdouble | cv::cos (const softdouble &a)
| Cosine. More...
static softfloat | cv::softfloat::eps ()
| Difference between 1 and next representable value. More...
static softdouble | cv::softdouble::eps ()
| Difference between 1 and next representable value. More...
softfloat | cv::exp (const softfloat &a)
| Exponent. More...
softdouble | cv::exp (const softdouble &a)
static const softfloat | cv::softfloat::fromRaw (const uint32_t a)
| Construct from raw. More...
static softdouble | cv::softdouble::fromRaw (const uint64_t a)
| Construct from raw. More...
int | cv::softfloat::getExp () const
| Get 0-based exponent. More...
int | cv::softdouble::getExp () const
| Get 0-based exponent. More...
softfloat | cv::softfloat::getFrac () const
| Get a fraction part. More...
softdouble | cv::softdouble::getFrac () const
| Get a fraction part. More...
bool | cv::softfloat::getSign () const
| Get sign bit. More...
bool | cv::softdouble::getSign () const
| Get sign bit. More...
static softfloat | cv::softfloat::inf ()
| Positive infinity constant. More...
static softdouble | cv::softdouble::inf ()
| Positive infinity constant. More...
bool | cv::softfloat::isInf () const
| Inf state indicator. More...
bool | cv::softdouble::isInf () const
| Inf state indicator. More...
bool | cv::softfloat::isNaN () const
| NaN state indicator. More...
bool | cv::softdouble::isNaN () const
| NaN state indicator. More...
bool | cv::softfloat::isSubnormal () const
| Subnormal number indicator. More...
bool | cv::softdouble::isSubnormal () const
| Subnormal number indicator. More...
softfloat | cv::log (const softfloat &a)
| Natural logarithm. More...
softdouble | cv::log (const softdouble &a)
static softfloat | cv::softfloat::max ()
| Biggest finite value. More...
static softdouble | cv::softdouble::max ()
| Biggest finite value. More...
softfloat | cv::max (const softfloat &a, const softfloat &b)
softdouble | cv::max (const softdouble &a, const softdouble &b)
static softfloat | cv::softfloat::min ()
| Smallest normalized value. More...
static softdouble | cv::softdouble::min ()
| Smallest normalized value. More...
softfloat | cv::min (const softfloat &a, const softfloat &b)
| Min and Max functions. More...
softdouble | cv::min (const softdouble &a, const softdouble &b)
softfloat | cv::mulAdd (const softfloat &a, const softfloat &b, const softfloat &c)
| Fused Multiplication and Addition. More...
softdouble | cv::mulAdd (const softdouble &a, const softdouble &b, const softdouble &c)
static softfloat | cv::softfloat::nan ()
| Default NaN constant. More...
static softdouble | cv::softdouble::nan ()
| Default NaN constant. More...
static softfloat | cv::softfloat::one ()
| One constant. More...
static softdouble | cv::softdouble::one ()
| One constant. More...
| cv::softdouble::operator double () const
| cv::softfloat::operator float () const
| cv::softfloat::operator softdouble () const
| Type casts. More...
| cv::softdouble::operator softfloat () const
| Type casts. More...
bool | cv::softfloat::operator!= (const softfloat &) const
bool | cv::softdouble::operator!= (const softdouble &) const
softfloat | cv::softfloat::operator% (const softfloat &) const
| Remainder operator. More...
softdouble | cv::softdouble::operator% (const softdouble &) const
| Remainder operator. More...
softfloat & | cv::softfloat::operator%= (const softfloat &a)
softdouble & | cv::softdouble::operator%= (const softdouble &a)
softfloat | cv::softfloat::operator* (const softfloat &) const
softdouble | cv::softdouble::operator* (const softdouble &) const
softfloat & | cv::softfloat::operator*= (const softfloat &a)
softdouble & | cv::softdouble::operator*= (const softdouble &a)
softfloat | cv::softfloat::operator+ (const softfloat &) const
| Basic arithmetics. More...
softdouble | cv::softdouble::operator+ (const softdouble &) const
| Basic arithmetics. More...
softfloat & | cv::softfloat::operator+= (const softfloat &a)
softdouble & | cv::softdouble::operator+= (const softdouble &a)
softfloat | cv::softfloat::operator- (const softfloat &) const
softfloat | cv::softfloat::operator- () const
softdouble | cv::softdouble::operator- (const softdouble &) const
softdouble | cv::softdouble::operator- () const
softfloat & | cv::softfloat::operator-= (const softfloat &a)
softdouble & | cv::softdouble::operator-= (const softdouble &a)
softfloat | cv::softfloat::operator/ (const softfloat &) const
softdouble | cv::softdouble::operator/ (const softdouble &) const
softfloat & | cv::softfloat::operator/= (const softfloat &a)
softdouble & | cv::softdouble::operator/= (const softdouble &a)
bool | cv::softfloat::operator< (const softfloat &) const
bool | cv::softdouble::operator< (const softdouble &) const
bool | cv::softfloat::operator<= (const softfloat &) const
bool | cv::softdouble::operator<= (const softdouble &) const
softfloat & | cv::softfloat::operator= (const softfloat &c)
| Assign constructor. More...
softdouble & | cv::softdouble::operator= (const softdouble &c)
| Assign constructor. More...
bool | cv::softfloat::operator== (const softfloat &) const
| Comparison operations. More...
bool | cv::softdouble::operator== (const softdouble &) const
| Comparison operations. More...
bool | cv::softfloat::operator> (const softfloat &) const
bool | cv::softdouble::operator> (const softdouble &) const
bool | cv::softfloat::operator>= (const softfloat &) const
bool | cv::softdouble::operator>= (const softdouble &) const
static softfloat | cv::softfloat::pi ()
| Correct pi approximation. More...
static softdouble | cv::softdouble::pi ()
| Correct pi approximation. More...
softfloat | cv::pow (const softfloat &a, const softfloat &b)
| Raising to the power. More...
softdouble | cv::pow (const softdouble &a, const softdouble &b)
template<typename _Tp >
static _Tp | cv::saturate_cast (softfloat a)
| Saturate casts. More...
template<typename _Tp >
static _Tp | cv::saturate_cast (softdouble a)
template<>
int64_t | cv::saturate_cast< int64_t > (softfloat a)
template<>
int64_t | cv::saturate_cast< int64_t > (softdouble a)
template<>
schar | cv::saturate_cast< schar > (softfloat a)
template<>
schar | cv::saturate_cast< schar > (softdouble a)
template<>
short | cv::saturate_cast< short > (softfloat a)
template<>
short | cv::saturate_cast< short > (softdouble a)
template<>
uchar | cv::saturate_cast< uchar > (softfloat a)
template<>
uchar | cv::saturate_cast< uchar > (softdouble a)
template<>
uint64_t | cv::saturate_cast< uint64_t > (softfloat a)
template<>
uint64_t | cv::saturate_cast< uint64_t > (softdouble a)
template<>
unsigned | cv::saturate_cast< unsigned > (softfloat a)
| Saturate cast to unsigned integer and unsigned long long integer We intentionally do not clip negative numbers, to make -1 become 0xffffffff etc. More...
template<>
unsigned | cv::saturate_cast< unsigned > (softdouble a)
template<>
ushort | cv::saturate_cast< ushort > (softfloat a)
template<>
ushort | cv::saturate_cast< ushort > (softdouble a)
softfloat | cv::softfloat::setExp (int e) const
| Construct a copy with new 0-based exponent. More...
softdouble | cv::softdouble::setExp (int e) const
| Construct a copy with new 0-based exponent. More...
softfloat | cv::softfloat::setFrac (const softfloat &s) const
| Construct a copy with provided significand. More...
softdouble | cv::softdouble::setFrac (const softdouble &s) const
| Construct a copy with provided significand. More...
softfloat | cv::softfloat::setSign (bool sign) const
| Construct a copy with new sign bit. More...
softdouble | cv::softdouble::setSign (bool sign) const
| Construct a copy with new sign bit. More...
softdouble | cv::sin (const softdouble &a)
| Sine. More...
softfloat | cv::sqrt (const softfloat &a)
| Square root. More...
softdouble | cv::sqrt (const softdouble &a)
static softfloat | cv::softfloat::zero ()
| Zero constant. More...
static softdouble | cv::softdouble::zero ()
| Zero constant. More...

## Variables
uint32_t | cv::softfloat::v
uint64_t | cv::softdouble::v

## Detailed Description

SoftFloat is a software implementation of floating-point calculations according to IEEE 754 standard. All calculations are done in integers, that's why they are machine-independent and bit-exact. This library can be useful in accuracy-critical parts like look-up tables generation, tests, etc. OpenCV contains a subset of SoftFloat partially rewritten to C++.

### Types

There are two basic types: softfloat and softdouble. These types are binary compatible with float and double types respectively and support conversions to/from them. Other types from original SoftFloat library like fp16 or fp128 were thrown away as well as quiet/signaling NaN support, on-the-fly rounding mode switch and exception flags (though exceptions can be implemented in the future).

### Operations

Both types support the following:

- Construction from signed and unsigned 32-bit and 64 integers, float/double or raw binary representation
- Conversions between each other, to float or double and to int using cvRound, cvTrunc, cvFloor, cvCeil or a bunch of saturate_cast functions
- Add, subtract, multiply, divide, remainder, square root, FMA with absolute precision
- Comparison operations
- Explicit sign, exponent and significand manipulation through get/set methods, number state indicators (isInf, isNan, isSubnormal)
- Type-specific constants like eps, minimum/maximum value, best pi approximation, etc.
- min(), max(), abs(), exp(), log() and pow() functions

## Function Documentation

## ◆ softdouble() [1/7]

cv::softdouble::softdouble | ( |  | ) |
| inline

Default constructor.

## ◆ softdouble() [2/7]

cv::softdouble::softdouble | ( | const softdouble & | c | ) |
| inline

Copy constructor.

## ◆ softdouble() [3/7]

cv::softdouble::softdouble | ( | const uint32_t |  | ) |
| explicit

Construct from integer.

## ◆ softdouble() [4/7]

cv::softdouble::softdouble | ( | const uint64_t |  | ) |
| explicit

## ◆ softdouble() [5/7]

cv::softdouble::softdouble | ( | const int32_t |  | ) |
| explicit

## ◆ softdouble() [6/7]

cv::softdouble::softdouble | ( | const int64_t |  | ) |
| explicit

## ◆ softdouble() [7/7]

cv::softdouble::softdouble | ( | const double | a | ) |
| inlineexplicit

Construct from double.

## ◆ softfloat() [1/7]

cv::softfloat::softfloat | ( |  | ) |
| inline

Default constructor.

## ◆ softfloat() [2/7]

cv::softfloat::softfloat | ( | const softfloat & | c | ) |
| inline

Copy constructor.

## ◆ softfloat() [3/7]

cv::softfloat::softfloat | ( | const uint32_t |  | ) |
| explicit

Construct from integer.

## ◆ softfloat() [4/7]

cv::softfloat::softfloat | ( | const uint64_t |  | ) |
| explicit

## ◆ softfloat() [5/7]

cv::softfloat::softfloat | ( | const int32_t |  | ) |
| explicit

## ◆ softfloat() [6/7]

cv::softfloat::softfloat | ( | const int64_t |  | ) |
| explicit

## ◆ softfloat() [7/7]

cv::softfloat::softfloat | ( | const float | a | ) |
| inlineexplicit

Construct from float.

## ◆ abs() [1/2]

softfloat cv::abs | ( | softfloat | a | ) |
| inline

Absolute value.

## ◆ abs() [2/2]

softdouble cv::abs | ( | softdouble | a | ) |
| inline

## ◆ cbrt()

softfloat cv::cbrt | ( | const softfloat & | a | ) |

Cube root.

Special cases:

- cbrt(NaN) is NaN
- cbrt(+/-Inf) is +/-Inf

## ◆ cos()

softdouble cv::cos | ( | const softdouble & | a | ) |

Cosine.

Special cases:

- cos(Inf) or cos(NaN) is NaN
- cos(x) == +/- 1 when cos(x) is close to +/- 1

Examples:
  contours2.cpp, image_alignment.cpp, kalman.cpp, and polar_transforms.cpp.

## ◆ eps() [1/2]

static softfloat cv::softfloat::eps | ( |  | ) |
| inlinestatic

Difference between 1 and next representable value.

## ◆ eps() [2/2]

static softdouble cv::softdouble::eps | ( |  | ) |
| inlinestatic

Difference between 1 and next representable value.

## ◆ exp() [1/2]

softfloat cv::exp | ( | const softfloat & | a | ) |

Exponent.

Special cases:

- exp(NaN) is NaN
- exp(-Inf) == 0
- exp(+Inf) == +Inf

Examples:
  polar_transforms.cpp.

## ◆ exp() [2/2]

softdouble cv::exp | ( | const softdouble & | a | ) |

## ◆ fromRaw() [1/2]

static const softfloat cv::softfloat::fromRaw | ( | const uint32_t | a | ) |
| inlinestatic

Construct from raw.

Builds new value from raw binary representation

## ◆ fromRaw() [2/2]

static softdouble cv::softdouble::fromRaw | ( | const uint64_t | a | ) |
| inlinestatic

Construct from raw.

Builds new value from raw binary representation

## ◆ getExp() [1/2]

int cv::softfloat::getExp | ( |  | ) | const
| inline

Get 0-based exponent.

## ◆ getExp() [2/2]

int cv::softdouble::getExp | ( |  | ) | const
| inline

Get 0-based exponent.

## ◆ getFrac() [1/2]

softfloat cv::softfloat::getFrac | ( |  | ) | const
| inline

Get a fraction part.

Returns a number 1 <= x < 2 with the same significand

## ◆ getFrac() [2/2]

softdouble cv::softdouble::getFrac | ( |  | ) | const
| inline

Get a fraction part.

Returns a number 1 <= x < 2 with the same significand

## ◆ getSign() [1/2]

bool cv::softfloat::getSign | ( |  | ) | const
| inline

Get sign bit.

## ◆ getSign() [2/2]

bool cv::softdouble::getSign | ( |  | ) | const
| inline

Get sign bit.

## ◆ inf() [1/2]

static softfloat cv::softfloat::inf | ( |  | ) |
| inlinestatic

Positive infinity constant.

## ◆ inf() [2/2]

static softdouble cv::softdouble::inf | ( |  | ) |
| inlinestatic

Positive infinity constant.

## ◆ isInf() [1/2]

bool cv::softfloat::isInf | ( |  | ) | const
| inline

Inf state indicator.

## ◆ isInf() [2/2]

bool cv::softdouble::isInf | ( |  | ) | const
| inline

Inf state indicator.

## ◆ isNaN() [1/2]

bool cv::softfloat::isNaN | ( |  | ) | const
| inline

NaN state indicator.

## ◆ isNaN() [2/2]

bool cv::softdouble::isNaN | ( |  | ) | const
| inline

NaN state indicator.

## ◆ isSubnormal() [1/2]

bool cv::softfloat::isSubnormal | ( |  | ) | const
| inline

Subnormal number indicator.

## ◆ isSubnormal() [2/2]

bool cv::softdouble::isSubnormal | ( |  | ) | const
| inline

Subnormal number indicator.

## ◆ log() [1/2]

softfloat cv::log | ( | const softfloat & | a | ) |

Natural logarithm.

Special cases:

- log(NaN), log(x < 0) are NaN
- log(0) == -Inf

Examples:
  polar_transforms.cpp.

## ◆ log() [2/2]

softdouble cv::log | ( | const softdouble & | a | ) |

## ◆ max() [1/4]

static softfloat cv::softfloat::max | ( |  | ) |
| inlinestatic

Biggest finite value.

## ◆ max() [2/4]

static softdouble cv::softdouble::max | ( |  | ) |
| inlinestatic

Biggest finite value.

## ◆ max() [3/4]

softfloat cv::max | ( | const softfloat & | a,
|  | const softfloat & | b
| ) |  |
| inline

Examples:
  fitellipse.cpp, grabcut.cpp, hog.cpp, train_HOG.cpp, and warpPerspective_demo.cpp.

## ◆ max() [4/4]

softdouble cv::max | ( | const softdouble & | a,
|  | const softdouble & | b
| ) |  |
| inline

## ◆ min() [1/4]

static softfloat cv::softfloat::min | ( |  | ) |
| inlinestatic

Smallest normalized value.

## ◆ min() [2/4]

static softdouble cv::softdouble::min | ( |  | ) |
| inlinestatic

Smallest normalized value.

## ◆ min() [3/4]

softfloat cv::min | ( | const softfloat & | a,
|  | const softfloat & | b
| ) |  |
| inline

Min and Max functions.

Examples:
  falsecolor.cpp, fitellipse.cpp, grabcut.cpp, and polar_transforms.cpp.

## ◆ min() [4/4]

softdouble cv::min | ( | const softdouble & | a,
|  | const softdouble & | b
| ) |  |
| inline

## ◆ mulAdd() [1/2]

softfloat cv::mulAdd | ( | const softfloat & | a,
|  | const softfloat & | b,
|  | const softfloat & | c
| ) |  |

Fused Multiplication and Addition.

Computes (a*b)+c with single rounding

## ◆ mulAdd() [2/2]

softdouble cv::mulAdd | ( | const softdouble & | a,
|  | const softdouble & | b,
|  | const softdouble & | c
| ) |  |

## ◆ nan() [1/2]

static softfloat cv::softfloat::nan | ( |  | ) |
| inlinestatic

Default NaN constant.

## ◆ nan() [2/2]

static softdouble cv::softdouble::nan | ( |  | ) |
| inlinestatic

Default NaN constant.

## ◆ one() [1/2]

static softfloat cv::softfloat::one | ( |  | ) |
| inlinestatic

One constant.

## ◆ one() [2/2]

static softdouble cv::softdouble::one | ( |  | ) |
| inlinestatic

One constant.

## ◆ operator double()

cv::softdouble::operator double | ( |  | ) | const
| inline

## ◆ operator float()

cv::softfloat::operator float | ( |  | ) | const
| inline

## ◆ operator softdouble()

cv::softfloat::operator softdouble | ( |  | ) | const

Type casts.

## ◆ operator softfloat()

cv::softdouble::operator softfloat | ( |  | ) | const

Type casts.

## ◆ operator!=() [1/2]

bool cv::softfloat::operator!= | ( | const softfloat & |  | ) | const

## ◆ operator!=() [2/2]

bool cv::softdouble::operator!= | ( | const softdouble & |  | ) | const

## ◆ operator%() [1/2]

softfloat cv::softfloat::operator% | ( | const softfloat & |  | ) | const

Remainder operator.

A quote from original SoftFloat manual:

> The IEEE Standard remainder operation computes the value a - n * b, where n is the integer closest to a / b. If a / b is exactly halfway between two integers, n is the even integer closest to a / b. The IEEE Standard’s remainder operation is always exact and so requires no rounding. Depending on the relative magnitudes of the operands, the remainder functions can take considerably longer to execute than the other SoftFloat functions. This is an inherent characteristic of the remainder operation itself and is not a flaw in the SoftFloat implementation.

## ◆ operator%() [2/2]

softdouble cv::softdouble::operator% | ( | const softdouble & |  | ) | const

Remainder operator.

A quote from original SoftFloat manual:

> The IEEE Standard remainder operation computes the value a - n * b, where n is the integer closest to a / b. If a / b is exactly halfway between two integers, n is the even integer closest to a / b. The IEEE Standard’s remainder operation is always exact and so requires no rounding. Depending on the relative magnitudes of the operands, the remainder functions can take considerably longer to execute than the other SoftFloat functions. This is an inherent characteristic of the remainder operation itself and is not a flaw in the SoftFloat implementation.

## ◆ operator%=() [1/2]

softfloat& cv::softfloat::operator%= | ( | const softfloat & | a | ) |
| inline

## ◆ operator%=() [2/2]

softdouble& cv::softdouble::operator%= | ( | const softdouble & | a | ) |
| inline

## ◆ operator*() [1/2]

softfloat cv::softfloat::operator* | ( | const softfloat & |  | ) | const

## ◆ operator*() [2/2]

softdouble cv::softdouble::operator* | ( | const softdouble & |  | ) | const

## ◆ operator*=() [1/2]

softfloat& cv::softfloat::operator*= | ( | const softfloat & | a | ) |
| inline

## ◆ operator*=() [2/2]

softdouble& cv::softdouble::operator*= | ( | const softdouble & | a | ) |
| inline

## ◆ operator+() [1/2]

softfloat cv::softfloat::operator+ | ( | const softfloat & |  | ) | const

Basic arithmetics.

## ◆ operator+() [2/2]

softdouble cv::softdouble::operator+ | ( | const softdouble & |  | ) | const

Basic arithmetics.

## ◆ operator+=() [1/2]

softfloat& cv::softfloat::operator+= | ( | const softfloat & | a | ) |
| inline

## ◆ operator+=() [2/2]

softdouble& cv::softdouble::operator+= | ( | const softdouble & | a | ) |
| inline

## ◆ operator-() [1/4]

softfloat cv::softfloat::operator- | ( | const softfloat & |  | ) | const

## ◆ operator-() [2/4]

softfloat cv::softfloat::operator- | ( |  | ) | const
| inline

## ◆ operator-() [3/4]

softdouble cv::softdouble::operator- | ( | const softdouble & |  | ) | const

## ◆ operator-() [4/4]

softdouble cv::softdouble::operator- | ( |  | ) | const
| inline

## ◆ operator-=() [1/2]

softfloat& cv::softfloat::operator-= | ( | const softfloat & | a | ) |
| inline

## ◆ operator-=() [2/2]

softdouble& cv::softdouble::operator-= | ( | const softdouble & | a | ) |
| inline

## ◆ operator/() [1/2]

softfloat cv::softfloat::operator/ | ( | const softfloat & |  | ) | const

## ◆ operator/() [2/2]

softdouble cv::softdouble::operator/ | ( | const softdouble & |  | ) | const

## ◆ operator/=() [1/2]

softfloat& cv::softfloat::operator/= | ( | const softfloat & | a | ) |
| inline

## ◆ operator/=() [2/2]

softdouble& cv::softdouble::operator/= | ( | const softdouble & | a | ) |
| inline

## ◆ operator<() [1/2]

bool cv::softfloat::operator< | ( | const softfloat & |  | ) | const

## ◆ operator<() [2/2]

bool cv::softdouble::operator< | ( | const softdouble & |  | ) | const

## ◆ operator<=() [1/2]

bool cv::softfloat::operator<= | ( | const softfloat & |  | ) | const

## ◆ operator<=() [2/2]

bool cv::softdouble::operator<= | ( | const softdouble & |  | ) | const

## ◆ operator=() [1/2]

softfloat& cv::softfloat::operator= | ( | const softfloat & | c | ) |
| inline

Assign constructor.

## ◆ operator=() [2/2]

softdouble& cv::softdouble::operator= | ( | const softdouble & | c | ) |
| inline

Assign constructor.

## ◆ operator==() [1/2]

bool cv::softfloat::operator== | ( | const softfloat & |  | ) | const

Comparison operations.

- Any operation with NaN produces false
  - The only exception is when x is NaN: x != y for any y.
- Positive and negative zeros are equal

## ◆ operator==() [2/2]

bool cv::softdouble::operator== | ( | const softdouble & |  | ) | const

Comparison operations.

- Any operation with NaN produces false
  - The only exception is when x is NaN: x != y for any y.
- Positive and negative zeros are equal

## ◆ operator>() [1/2]

bool cv::softfloat::operator> | ( | const softfloat & |  | ) | const

## ◆ operator>() [2/2]

bool cv::softdouble::operator> | ( | const softdouble & |  | ) | const

## ◆ operator>=() [1/2]

bool cv::softfloat::operator>= | ( | const softfloat & |  | ) | const

## ◆ operator>=() [2/2]

bool cv::softdouble::operator>= | ( | const softdouble & |  | ) | const

## ◆ pi() [1/2]

static softfloat cv::softfloat::pi | ( |  | ) |
| inlinestatic

Correct pi approximation.

## ◆ pi() [2/2]

static softdouble cv::softdouble::pi | ( |  | ) |
| inlinestatic

Correct pi approximation.

## ◆ pow() [1/2]

softfloat cv::pow | ( | const softfloat & | a,
|  | const softfloat & | b
| ) |  |

Raising to the power.

Special cases:

- x**NaN is NaN for any x
- ( |x| == 1 )**Inf is NaN
- ( |x| > 1 )**+Inf or ( |x| < 1 )**-Inf is +Inf
- ( |x| > 1 )**-Inf or ( |x| < 1 )**+Inf is 0
- x ** 0 == 1 for any x
- x ** 1 == 1 for any x
- NaN ** y is NaN for any other y
- Inf**(y < 0) == 0
- Inf ** y is +Inf for any other y
- (x < 0)**y is NaN for any other y if x can't be correctly rounded to integer
- 0 ** 0 == 1
- 0 ** (y < 0) is +Inf
- 0 ** (y > 0) is 0

Examples:
  distrans.cpp.

## ◆ pow() [2/2]

softdouble cv::pow | ( | const softdouble & | a,
|  | const softdouble & | b
| ) |  |

## ◆ saturate_cast() [1/2]

template<typename _Tp >

static _Tp cv::saturate_cast | ( | softfloat | a | ) |
| inlinestatic

Saturate casts.

## ◆ saturate_cast() [2/2]

template<typename _Tp >

static _Tp cv::saturate_cast | ( | softdouble | a | ) |
| inlinestatic

## ◆ saturate_cast< int64_t >() [1/2]

template<>

int64_t cv::saturate_cast< int64_t > | ( | softfloat | a | ) |
| inline

## ◆ saturate_cast< int64_t >() [2/2]

template<>

int64_t cv::saturate_cast< int64_t > | ( | softdouble | a | ) |
| inline

## ◆ saturate_cast< schar >() [1/2]

template<>

schar cv::saturate_cast< schar > | ( | softfloat | a | ) |
| inline

## ◆ saturate_cast< schar >() [2/2]

template<>

schar cv::saturate_cast< schar > | ( | softdouble | a | ) |
| inline

## ◆ saturate_cast< short >() [1/2]

template<>

short cv::saturate_cast< short > | ( | softfloat | a | ) |
| inline

## ◆ saturate_cast< short >() [2/2]

template<>

short cv::saturate_cast< short > | ( | softdouble | a | ) |
| inline

## ◆ saturate_cast< uchar >() [1/2]

template<>

uchar cv::saturate_cast< uchar > | ( | softfloat | a | ) |
| inline

## ◆ saturate_cast< uchar >() [2/2]

template<>

uchar cv::saturate_cast< uchar > | ( | softdouble | a | ) |
| inline

## ◆ saturate_cast< uint64_t >() [1/2]

template<>

uint64_t cv::saturate_cast< uint64_t > | ( | softfloat | a | ) |
| inline

## ◆ saturate_cast< uint64_t >() [2/2]

template<>

uint64_t cv::saturate_cast< uint64_t > | ( | softdouble | a | ) |
| inline

## ◆ saturate_cast< unsigned >() [1/2]

template<>

unsigned cv::saturate_cast< unsigned > | ( | softfloat | a | ) |
| inline

Saturate cast to unsigned integer and unsigned long long integer We intentionally do not clip negative numbers, to make -1 become 0xffffffff etc.

## ◆ saturate_cast< unsigned >() [2/2]

template<>

unsigned cv::saturate_cast< unsigned > | ( | softdouble | a | ) |
| inline

## ◆ saturate_cast< ushort >() [1/2]

template<>

ushort cv::saturate_cast< ushort > | ( | softfloat | a | ) |
| inline

## ◆ saturate_cast< ushort >() [2/2]

template<>

ushort cv::saturate_cast< ushort > | ( | softdouble | a | ) |
| inline

## ◆ setExp() [1/2]

softfloat cv::softfloat::setExp | ( | int | e | ) | const
| inline

Construct a copy with new 0-based exponent.

## ◆ setExp() [2/2]

softdouble cv::softdouble::setExp | ( | int | e | ) | const
| inline

Construct a copy with new 0-based exponent.

## ◆ setFrac() [1/2]

softfloat cv::softfloat::setFrac | ( | const softfloat & | s | ) | const
| inline

Construct a copy with provided significand.

Constructs a copy of a number with significand taken from parameter

## ◆ setFrac() [2/2]

softdouble cv::softdouble::setFrac | ( | const softdouble & | s | ) | const
| inline

Construct a copy with provided significand.

Constructs a copy of a number with significand taken from parameter

## ◆ setSign() [1/2]

softfloat cv::softfloat::setSign | ( | bool | sign | ) | const
| inline

Construct a copy with new sign bit.

## ◆ setSign() [2/2]

softdouble cv::softdouble::setSign | ( | bool | sign | ) | const
| inline

Construct a copy with new sign bit.

## ◆ sin()

softdouble cv::sin | ( | const softdouble & | a | ) |

Sine.

Special cases:

- sin(Inf) or sin(NaN) is NaN
- sin(x) == x when sin(x) is close to zero

Examples:
  contours2.cpp, image_alignment.cpp, kalman.cpp, and polar_transforms.cpp.

## ◆ sqrt() [1/2]

softfloat cv::sqrt | ( | const softfloat & | a | ) |

Square root.

Examples:
  kalman.cpp, and pose_from_homography.cpp.

## ◆ sqrt() [2/2]

softdouble cv::sqrt | ( | const softdouble & | a | ) |

## ◆ zero() [1/2]

static softfloat cv::softfloat::zero | ( |  | ) |
| inlinestatic

Zero constant.

## ◆ zero() [2/2]

static softdouble cv::softdouble::zero | ( |  | ) |
| inlinestatic

Zero constant.

## Variable Documentation

## ◆ v [1/2]

uint32_t cv::softfloat::v

## ◆ v [2/2]

uint64_t cv::softdouble::v