3

floatをチェックする関数、doubleまたはlong doubleIEEE-754 形式に完全に準拠する関数を書きたいと思います。つまり:

それに対応していると思いましたが、私のLinux 64ビットでstd::numeric_limits<T>::is_iec559は返さtrueれますが、内部的にIntel形式でエンコードされています。では、どうやってそれを行うのですか?long doublesizeof(long double) = 16 bytes80-bit

4

2 に答える 2

1

std::numeric_limits<T>::is_iec559が true の場合T、標準に準拠しています。

システムが内部レジスタに 80 ビットを使用している場合、最終的な丸め結果が無限数のビットが使用される参照結果に最も近い限り、これは問題ありません。つまり、ulp を 1 つ追加または削除すると、参照から離れます。

すべての可能な操作を表現可能なすべての数値で実行してこれをチェックし、多くのビットを使用する参照と比較することは困難です。

std::numeric_limitsそれを実装しているライブラリに自信を持つ必要があります。

于 2013-06-30T00:47:43.807 に答える