Qt 5.13 | Qt Core | <QFloat16> - 16-bit Floating Point Support

Qt 5.13.2 Reference Documentation

# <QFloat16> - 16-bit Floating Point Support

The <QFloat16> header file provides 16-bit floating point support. More...

Header: | #include <QFloat16>
Since: | Qt 5.9

This documentation was introduced in Qt 5.9.

## Functions

void | qFloatFromFloat16(float *out, const qfloat16 *in, int len)
void | qFloatToFloat16(qfloat16 *out, const float *in, int len)
bool | qFuzzyCompare(qfloat16 p1, qfloat16 p2)
bool | qIsFinite(qfloat16 f)
bool | qIsInf(qfloat16 f)
bool | qIsNaN(qfloat16 f)
qint64 | qRound64(qfloat16 value)
int | qRound(qfloat16 value)

## Macros

| QT_NO_FLOAT16_OPERATORS

## Detailed Description

This header file provides support for half-precision (16-bit) floating point data with the class `qfloat16`. It is fully compliant with IEEE 754 as a storage type. This implies that any arithmetic operation on a `qfloat16` instance results in the value first being converted to a `float`. This conversion to and from `float` is performed by hardware when possible, but on processors that do not natively support half-precision, the conversion is performed through a sequence of lookup table operations.

`qfloat16` should be treated as if it were a POD (plain old data) type. Consequently, none of the supported operations need any elaboration beyond stating that it supports all arithmetic operators incident to floating point types.

## Function Documentation

### void qFloatFromFloat16(float *out, const qfloat16 *in, int len)

Converts len qfloat16 from in to floats and stores them in out. Both in and out must have len allocated entries.

This function was introduced in Qt 5.11.

### void qFloatToFloat16(qfloat16 *out, const float *in, int len)

Converts len floats from in to qfloat16 and stores them in out. Both in and out must have len allocated entries.

This function was introduced in Qt 5.11.

### bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)

Compares the floating point value p1 and p2 and returns `true` if they are considered equal, otherwise `false`.

The two numbers are compared in a relative way, where the exactness is stronger the smaller the numbers are.

### bool qIsFinite(qfloat16 f)

Returns true if the `qfloat16` f is a finite number.

See also qIsFinite.

### bool qIsInf(qfloat16 f)

Returns true if the `qfloat16` f is equivalent to infinity.

See also qIsInf.

### bool qIsNaN(qfloat16 f)

Returns true if the `qfloat16` f is not a number (NaN).

See also qIsNaN.

### qint64 qRound64(qfloat16 value)

Rounds value to the nearest 64-bit integer.

See also qRound64.

### int qRound(qfloat16 value)

Rounds value to the nearest integer.

See also qRound.

## Macro Documentation

### QT_NO_FLOAT16_OPERATORS

Defining this macro disables the arithmetic operators for qfloat16.

This is only necessary on Visual Studio 2017 (and earlier) when including `<QFloat16>` and `<bitset>` in the same translation unit, which would otherwise cause a compilation error due to a toolchain bug (see [QTBUG-72073]).

This function was introduced in Qt 5.12.4.