qfloat16 Class

16ビット浮動小数点のサポートを提供する。詳細...

Header: #include <QFloat16>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

このクラスは部分的に比較可能である。

このクラスは、float,double, long double,qint8,quint8,qint16,quint16,qint32,quint32, long, unsigned long,qint64, およびquint64部分的に比較可能です。

このクラスはqint128 およびquint128部分的に比較可能である。

128ビット積分型との比較は、Qtがこれらの型を提供している場合にのみサポートされます。

パブリック関数

(since 6.1) 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)
(since 6.5.3) size_t qHash(qfloat16 key, size_t seed = 0)
bool qIsFinite(qfloat16 f)
bool qIsInf(qfloat16 f)
bool qIsNaN(qfloat16 f)
qint64 qRound64(qfloat16 value)
int qRound(qfloat16 value)
QDataStream &operator<<(QDataStream &ds, qfloat16 f)
QDataStream &operator>>(QDataStream &ds, qfloat16 &f)

詳細説明

qfloat16 クラスは、半精度(16 ビット)浮動小数点データのサポートを提供します。これは記憶型として IEEE 754 に完全に準拠しています。このため、qfloat16 インスタンスに対する算術演算では、値がまずfloat に変換されます。float との変換は、可能な限りハードウェアで行われますが、ネイティブで半精度をサポートしていないプロセッサでは、ルックアップテーブル操作のシーケンスによって変換が行われます。

qfloat16 はPOD(プレーン・オールド・データ)型であるかのように扱われなければならない。そのため、サポートされる演算は、浮動小数点型に付随するすべての算術演算子をサポートするという以上の説明は必要ありません。

注: x86およびx86-64では、ハードウェア・アクセラレーションによる変換を行うには、F16CまたはAVX2を有効にしてコンパイルするか、実行時にF16Cを検出するqFloatToFloat16 ()とqFloatFromFloat16 ()を使用する必要があります。

メンバ関数ドキュメント

[explicit noexcept, since 6.1] qfloat16::qfloat16(Qt::Initialization)

値を初期化せずに qfloat16 を構築します。

この関数はQt 6.1で導入されました。

[noexcept] qfloat16 qfloat16::copySign(qfloat16 sign) const

符号がsign で、残りの値がこの qfloat16 から取得された qfloat16 を返します。qfloat16 の std::copysign() に相当します。

[constexpr noexcept] bool qfloat16::isNormal() const

このqfloat16 の値が有限かつ正規形である場合はtrue を返す。

qFpClassify()も参照

関連する非会員

[noexcept] void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)

in からlen qfloat16 を浮動小数点数に変換し、out に格納する。inout の両方に、len 割り当てられたエントリがなければならない。

この関数は、値を 1 つずつ変換するよりも高速で、x86 および x86-64 ハードウェアで実行時に F16C 検出を行います。

[noexcept] void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)

in からlen の浮動小数点数を qfloat16 に変換し、out に格納する。inout の両方は、len 割り当てられたエントリを持たなければならない。

この関数は、値を 1 つずつ変換するよりも高速であり、x86 および x86-64 ハードウェアで実行時に F16C 検出を行います。

[noexcept] int qFpClassify(qfloat16 val)

この関数はqFpClassify(float) をオーバーロードしている。

val の浮動小数点クラスを返す。

[noexcept] bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)

この関数はqFuzzyCompare(float, float) をオーバーロードします。

浮動小数点値p1p2 を比較し、等しいとみなされた場合はtrue を返し、そうでない場合はfalse を返します。

2つの数値は相対的に比較され、数値が小さいほど正確性が高くなります。

[noexcept, since 6.5.3] size_t qHash(qfloat16 key, size_t seed = 0)

計算のシードとしてseed を使用して、key のハッシュ値を返します。

注意: Qt 6.5より前のバージョンでは、この操作はqHash(float)オーバーロードによって提供されていました。Qt バージョン 6.5.0 から 6.5.2 では、この機能はさまざまな方法で壊れていました。Qt バージョン 6.5.3 および 6.6 以降では、このオーバーロードは Qt 6.4 の動作を復元します。

この関数は Qt 6.5.3 で導入されました。

[noexcept] bool qIsFinite(qfloat16 f)

この関数はqIsFinite(float) をオーバーロードします。

qfloat16 f が有限数である場合に真を返します。

[noexcept] bool qIsInf(qfloat16 f)

この関数はqIsInf(float) をオーバーロードします。

qfloat16 f が無限大と等しい場合に真を返す。

[noexcept] bool qIsNaN(qfloat16 f)

この関数はqIsNaN(float) をオーバーロードする。

qfloat16 f が数値(NaN)でない場合に真を返す。

[noexcept] qint64 qRound64(qfloat16 value)

この関数はqRound64(float) をオーバーロードしている。

value を最も近い 64 ビット整数に丸める。

[noexcept] int qRound(qfloat16 value)

この関数はqRound(float) をオーバーロードする。

value を最も近い整数に丸める。

QDataStream &operator<<(QDataStream &ds, qfloat16 f)

標準 IEEE 754 フォーマットを使用して、浮動小数点数f をストリームds に書き込みます。ストリームへの参照を返します。

注意: Qt 6.3 より前のバージョンでは、これはQDataStream のメンバ関数でした。

QDataStream &operator>>(QDataStream &ds, qfloat16 &f)

標準 IEEE 754 フォーマットを使用して、浮動小数点数をストリームds からf に読み込みます。ストリームへの参照を返します。

注意: Qt 6.3 より前のバージョンでは、これはQDataStream のメンバ関数でした。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。