問題タブ [floating-point-precision]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - roundToDecimalsが返す桁数が多すぎます
浮動小数点数を返すプロセスがあります。次に、このroundToDecimals
メソッドを使用して一部の桁を削除します。
---- 2012年6月22日更新:1.42 am ----
---更新の終了
正常に動作しますが、最後の桁がゼロの場合、小数点以下3桁以上を返します。
誰かがこの種の問題に対処する方法を知っていますか?
c++ - OpenCLの速度と浮動小数点の精度
OpenCLを使い始めたばかりです。しかし、私はOpenClの奇妙な振る舞いを見つけました。それは私には理解できません。私が構築してテストしたソースは、http://www.codeproject.com/Articles/110685/Part-1-OpenCL-Portable-Parallelismでした。私はATIRadeonHD4770とAMDFx6200 3.8ghz6コアCPUを持っています。
スピード
まず、速度は最大ワークグループアイテムの数に直線的ではありません。App Profilerを実行して、カーネルの実行中に費やされた時間を分析しました。結果は少し衝撃的でした。グループごとに256の作業項目しか処理できない私のGPUは、5079040の数値の2乗を計算するために2.23008ミリ秒を使用しました。これはカーネルのロード時間を考慮していなかったことに注意してください...
ただし、グループごとに1024の作業項目を処理できる私のCPUは、13.41895ミリ秒を使用して数値を計算しました。ワークグループ内の作業項目は同時に実行される、つまりCPUが高速であるはずだと思いました。私が知りたいこと、ワークグループは同時に実行されますか?同様に、私のセットアップでは、GPUはCPUよりも多くのワークグループを同時に実行します。
もう1つの要因は、GPUの方がフロート演算の計算が速いことかもしれませんが、私のCPUのクロック速度は4倍速いので、それでも奇妙です。通常、GPUはopenclに譲るときに高速になるはずですが、その理由については適切な説明が必要です。
編集:1024、2048 ... 5120の作業項目を計算しようとしましたが、CPUはGPUよりも高速でした。だから私は、CPUが少ない作業時間でより良く機能するのに対し、GPUは多くの作業項目があるときに最適であることを学びました。
私も見たのは、私のCPUは、ワークグループのサイズ(4096、6144、8192)の3倍ごとに計算がはるかに遅くなることでした。つまり、私のCPUは3つのワークグループを同時に使用しているように見えます。
浮動小数点の精度
質問はここに移動しました: OpenCL浮動小数点の精度
すべての回答を事前に感謝します。
matlab - 指数値(1.3e12)と通常値(1.3)をmatlabの同じ行列に保存するには?
0.1 から 1.3e12 の範囲の値で構成されるファイルがあります。同じ配列に保存しようとしましたが、機能しません。誰でも助けることができますか?
matlab - 同じ行列演算が Matlab で異なる結果を返す
私はMatlabに少し問題があります.Matlabの精度に関係していると思いますが、本当に解決したいと思います. 私は 3 つのマトリックスを持っています。1 つはf
次元 296x3118 で呼び出され、もう1 つは次元 1x3118 でmapping.mean
呼び出され、最後はmapping.M
次元 3118x100 で呼び出されます。
次の操作の結果は 1 になるはずですが、そうではありません。結果の行列f_s_1
とf_s_2
は、10^-12 の範囲でのみ異なる値を持ちます。理由、またはこれを修正する方法を知っている人はいますか?
linear-algebra - gcc 2.95 浮動小数点線形代数が gcc 4.3.2 と一致しない
線形代数を使用してカラー スペクトルを計算するレガシー コードをコンパイルしています。行列は型として float を使用し、すべての計算は float を使用します。古いコンパイラ (turbo-linux gcc 2.95) を使用すると、1 つの答えが得られます。新しいコンパイラ (SuSE gcc 4.3.2) を使用すると、異なるスペクトルが得られます。
古いコンパイラを使用した出力と一致するように、新しいコンパイラを使用してコンパイルされた同じプログラムの出力を取得する必要があります。
これらのコンパイラ オプションを使用してみました: g++ -g -lstdc++ -mfpmath=no-sse -mno-sse -mno-sse2 -float-store -mieee-fp
そしてこのコード:
これのどれも、色スペクトルを一致させることができませんでした。
問題は、2 つの異なるコンパイラからコンパイルされたコードから得られるカラー スペクトルを一致させるための特効薬があるかどうかです。浮動小数点制御幅 (上記の flpcw) が解決策になることを望んでいましたが、そうではありませんでした。(コードが複雑すぎて投稿できないことに注意してください)。
PS 上記のコードの結果: gcc 2.95 浮動小数点制御ワード: 0x37f 浮動小数点制御ワードは 0x27f になりました。
gcc 4.3.2 の浮動小数点制御ワード: 0x37f 浮動小数点制御ワードが 0x27f になりました。
c - さまざまなフロート値のイプシロン
FLT_MIN
ゼロに最も近い定数があります。some number
価値に最も近づく方法は?
例として:
特殊関数を使わずに数式を使いたいです。
ios - CGFloat を int に安全に床または天井にする方法は?
配列インデックスを計算するために、 aCGFloat
を anに床または天井にする必要があることがよくあります。int
floorf(theCGFloat)
orで常に見られる問題ceilf(theCGFloat)
は、浮動小数点の不正確さで問題が発生する可能性があることです。
では、私のが、内部的には、またはそのようなものとして表されている場合CGFloat
は2.0f
どうなり1.999999999999f
ますか。これは再びフロートですfloorf
。1.0f
それでも、この獣を int にキャストする必要があるため、別の問題が発生する可能性があります。
のようなものが誤って床に落ちたり、誤って天井に落ちたりすることがないようfloat
に、 a を床または天井にするベストプラクティスはありますか?int
2.0
1
2.0
2
c++ - C++ double の精度を超える精度を上げる
最近、作成中の C++ Pi 近似プログラムについて投稿しました。そのコードはここにあります: C++ Pi approximation program ですが、コード自体はあまり関係ありません。関連する数値の累乗を含む算術演算を行う必要があることを知っておいてください。
現在、プログラムは正常に動作しますが、プログラムが小数点以下 15 桁まで正確に Pi を計算できるため、何らかの方法で (おそらくカスタム データ型を使用して) double によって提供される小数点以下 15 桁を超える精度を上げることができるかどうか、私はさまよっていました。 1 秒以上。
どんな助けでも大歓迎です。
c++ - 浮動小数点の精度を理解する
次のような場合ですか?
- 表現可能な浮動小数点値は、ゼロに近い実数直線で最も密度が高いですか?
- 数直線がゼロから離れるにつれて、表現可能な浮動小数点値は(指数関数的に?)まばらになりますか?
- 上記の2つが当てはまる場合、それはゼロから遠くなるほど精度が低くなることを意味しますか?
全体的な質問:精度は、 (正確に)表現できる数の密度を何らかの形で参照または依存していますか?