qfloat16 Class

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

ヘッダ #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)

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

注意: 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)

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

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

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

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

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

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.