タグ付けされた質問 「floating-point」

浮動小数点数は実数の近似値であり、整数より広い範囲を表すことができますが、同じ量のメモリを使用しますが、精度は低くなります。質問が小さな算術エラー(たとえば、0.2 + 0.1が0.300000001に等しいのはなぜですか)または10進数の変換エラーについての質問である場合は、投稿する前に以下のリンクの「情報」ページをお読みください。

5
順序付けられた数値の効率的な安定合計
浮動小数点正数のかなり長いリスト(std::vector<float>、サイズ〜1000)があります。番号は降順でソートされます。順序に従ってそれらを合計すると: for (auto v : vec) { sum += v; } ベクトルの終わり近くはsumより大きいので、数値の安定性の問題が発生する可能性がありますv。最も簡単な解決策は、ベクトルを逆の順序でトラバースすることです。私の質問は、前向きの場合と同様に効率的ですか?キャッシュが不足しますか? 他のスマートなソリューションはありますか?

2
浮動小数点定数の疑似デストラクターを呼び出す有効な構文
次のデモプログラムを検討してください。 #include <iostream> int main() { typedef float T; 0.f.T::~T(); } このプログラムはによってコンパイルされMicrosoft Visual Studio Community 2019ます。 しかしclang、gccこのようなエラーを発行します prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ このような式を記述する場合、( 0.f ).T::~T()3つのコンパイラすべてがプログラムをコンパイルします。 したがって、疑問が生じ0.f.T::~T()ます。このレコードは構文的に有効ですか?そうでない場合、どの構文規則が違反していますか?

2
C ++でn番目の「nextafter」浮動小数点値を取得する標準的な方法はありますか
C ++にはstd::nextafter()があり、指定された浮動小数点値fの次の表現可能な値を返します。私の場合、下位仮数ビットにnビットのスロップを許可したいので、3ビットのスロップは、ある特定の値fの後に8番目の次の値を取得する必要があります。私はnextafter()8回電話することができますが、これを処理するより良い方法はありますか? ほとんどの値について、IEEE 754のレイアウトのおかげで、FP値をにキャストしuint_64、許容誤差(1<<33ビットのスロップ)を追加してから、にキャストし直すことで問題を解決できますdouble。ただし、IEEE 754浮動小数点(良い仮定ですが、堅実でもありません)。 (背景として、これはFPの不正確さのためにサーフェスの内側に時々配置される光線とサーフェスの交点を巻き上げるために使用します。堅牢な浮動小数点に精通している人epsilonは、なぜ恐ろしい解決策であるかを理解します。)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.