Класс qfloat16
Обеспечивает поддержку 16-битной плавающей точки. Подробнее...
| Заголовок: | #include <QFloat16> |
| qmake: | QT += core |
| С момента: | Qt 5.9 |
Этот класс был представлен в Qt 5.9.
Открытые функции
| qfloat16 | copySign(qfloat16 sign) const |
| bool | isNormal() const |
Связанные нечлены
| void | qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len) |
| void | qFloatToFloat16(qfloat16 *out, const float *in, qsizetype 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) |
Макросы
| QT_NO_FLOAT16_OPERATORS |
Подробное описание
Класс qfloat16 предоставляет поддержку полуточной точности (16 бит) данных с плавающей запятой. Он полностью соответствует IEEE 754 в качестве типа хранения. Это означает, что любая арифметическая операция над экземпляром qfloat16 приводит к тому, что значение сначала преобразуется в float. Это преобразование в float и из него выполняется аппаратным обеспечением, когда это возможно, но на процессорах, которые не поддерживают полуточность, преобразование выполняется с помощью последовательности операций поиска в таблице.
qfloat16 следует рассматривать как тип POD (простой старый тип данных). Следовательно, ни одна из поддерживаемых операций не требует дополнительных пояснений, кроме указания, что она поддерживает все арифметические операторы, характерные для типов с плавающей запятой.
Примечание: На x86 и x86-64 для получения аппаратного ускорения преобразований необходимо скомпилировать с включенным F16C или AVX2, или использовать qFloatToFloat16() и qFloatFromFloat16(), которые будут обнаруживать F16C во время выполнения.
Документация по функциям-членам
qfloat16 qfloat16::copySign(qfloat16 sign) const
Возвращает qfloat16 со знаком sign, но остальная часть его значения взята из этого qfloat16. Выступает в качестве эквивалента std::copysign() для qfloat16.
Эта функция была представлена в Qt 5.15.
bool qfloat16::isNormal() const
Возвращает true, если это значение qfloat16 является конечным и находится в нормальной форме.
Эта функция была представлена в Qt 5.14.
См. также qFpClassify().
Связанные нечлены
void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)
Преобразует len qfloat16 из in в числа с плавающей точкой и сохраняет их в out. И in, и out должны иметь выделенные записи len.
Эта функция быстрее, чем преобразование значений по одному, и выполнит обнаружение F16C во время выполнения на оборудовании x86 и x86-64.
Эта функция была представлена в Qt 5.11.
void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)
Преобразует len чисел с плавающей точкой из in в qfloat16 и сохраняет их в out. И in, и out должны иметь выделенные записи len.
Эта функция быстрее, чем преобразование значений по одному, и выполнит обнаружение F16C во время выполнения на оборудовании x86 и x86-64.
Эта функция была представлена в Qt 5.11.
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)
Сравнивает значения с плавающей запятой p1 и p2 и возвращает true, если они считаются равными, в противном случае false.
Два числа сравниваются по отношению, где точность сильнее, чем меньше числа.
bool qIsFinite(qfloat16 f)
Возвращает true, если qfloat16 f является конечным числом.
См. также qIsFinite.
bool qIsInf(qfloat16 f)
Возвращает true, если qfloat16 f эквивалентно бесконечности.
См. также qIsInf.
bool qIsNaN(qfloat16 f)
Возвращает true, если qfloat16 f не является числом (NaN).
См. также qIsNaN.
qint64 qRound64(qfloat16 value)
Округляет value до ближайшего 64-битного целого числа.
См. также qRound64.
int qRound(qfloat16 value)
Округляет value до ближайшего целого числа.
См. также qRound.
Документация по макросам
QT_NO_FLOAT16_OPERATORS
Определение этого макроса отключает арифметические операторы для qfloat16.
Это необходимо только в Visual Studio 2017 (и ранее), когда включаются <QFloat16> и <bitset> в одном модуле трансляции, что в противном случае вызовет ошибку компиляции из-за ошибки инструментария (см. [QTBUG-72073]).
Эта функция была представлена в Qt 5.12.4.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qfloat16.html