提供 16 位浮点支持。 更多...
头: | #include <QFloat16> |
CMake: |
find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Since: | Qt 5.9 |
qfloat16 (Qt::Initialization) | |
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 ) |
int | qFpClassify (qfloat16 val ) |
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 ) |
qfloat16
class provides support for half-precision (16-bit) floating point data. 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.
注意: On x86 and x86-64 that to get hardware accelerated conversions you must compile with F16C or AVX2 enabled, or use qFloatToFloat16 () 和 qFloatFromFloat16 () which will detect F16C at runtime.
[since 6.1]
qfloat16::
qfloat16
(
Qt::Initialization
)
Constructs a qfloat16 without initializing the value.
该函数在 Qt 6.1 引入。
[since 5.15]
qfloat16
qfloat16::
copySign
(
qfloat16
sign
) const
Returns a qfloat16 with the sign of sign but the rest of its value taken from this qfloat16. Serves as qfloat16's equivalent of std::copysign().
该函数在 Qt 5.15 引入。
[since 5.14]
bool
qfloat16::
isNormal
() const
返回
true
若此
qfloat16
值是有限的且采用正常形式。
该函数在 Qt 5.14 引入。
另请参阅 qFpClassify ().
[since 5.11]
void
qFloatFromFloat16
(
float
*
out
, const
qfloat16
*
in
,
qsizetype
len
)
转换 len qfloat16 from in to floats and stores them in out . Both in and out must have len allocated entries.
This function is faster than converting values one by one, and will do runtime F16C detection on x86 and x86-64 hardware.
该函数在 Qt 5.11 引入。
[since 5.11]
void
qFloatToFloat16
(
qfloat16
*
out
, const
float
*
in
,
qsizetype
len
)
转换 len floats from in to qfloat16 and stores them in out . Both in and out must have len allocated entries.
This function is faster than converting values one by one, and will do runtime F16C detection on x86 and x86-64 hardware.
该函数在 Qt 5.11 引入。
[since 5.14]
int
qFpClassify
(
qfloat16
val
)
此函数重载 qFpClassify (float).
Returns the floating-point class of val .
该函数在 Qt 5.14 引入。
此函数重载 qFuzzyCompare (float, float).
比较浮点值
p1
and
p2
并返回
true
若它们被认为相等,否则
false
.
The two numbers are compared in a relative way, where the exactness is stronger the smaller the numbers are.
This function overloads qIsFinite(float).
返回 true 若
qfloat16
f
是有限数。
This function overloads qIsInf(float).
返回 true 若
qfloat16
f
相当于无穷大。
This function overloads qIsNaN(float).
返回 true 若
qfloat16
f
是 NaN (非数字)。
此函数重载 qRound64 (float).
圆整 value 到最近 64 位整数。
此函数重载 qRound (float).
圆整 value 到最近整数。