quadruple
を使用せずにdouble
の精度で16桁以上を取得できますか?可能であれば、コンパイラなどに依存しますか?誰かが彼がdouble
の精度で作業していて、22桁の精度を持っていたと知っていたからです。倍精度の拡張
倍精度の拡張
答えて
データ型double precision
はFortran 77に由来し、その型の唯一の要件はreal
よりも精度が高いことです。もう使用しないでください。
Fortran 90/95以降では、少なくとも2つの実数のサイズがサポートされています。精度は、kind
パラメータによって決定され、その値はコンパイラによって異なります。あなたは
real(kind=long_double) :: a, b
としてあなたの変数を宣言することができ、その後
integer, parameter :: long_double = SELECTED_REAL_KIND(22)
を:
real(kind=8) :: a, b
は精度を定義する移植可能な方法を持っているために、あなたが使用することによって、特定の精度を可能にkind
値を得ることができます
しかし、あなたのコンパイラがその精度をサポートするかどうかはわかりません。その場合、SELECTED_REAL_KIND
関数は負の数を返します。
は、最初の回答の状態としてもthis post
を参照して、最もポータブルな方法は、数の精度を指定することで本来の機能を使用することです。言語の設計コンセプトは、計算に必要な精度を求めて要求し、コンパイラがその精度以上を提供することです。たとえば、微分方程式の解が小数点以下11桁で安定していると計算すると、この値を要求するとコンパイラは要件を満たす最適な型を提供します。これは、ほとんどのプログラマにとっては外国のアプローチであり、ハードウェアが必要とするものよりもハードウェアによって提供されるものが何であるかを考えるのに慣れており、数値アナリストはほとんどいないので、あまり簡単ではないかもしれません。
特定のコンパイラとハードウェアにSELECTED_REAL_KIND組み込み関数を最適化して最適化したい場合は、実験を行いたい場合があります。いくつかの組み合わせはソフトウェアで四重極精度を提供しますが、これは遅くなります。倍精度と10バイトの拡張精度を持つコンパイラは、selected_real_kind(17)を使用してより長い型を提供します。倍精度と四倍精度で10バイトの拡張精度ではないコンパイラは、selected_real_kind(17)またはselected_real_kind(32)で四重極精度を提供します。 (私は、10バイトの拡張と四重極の両方をサポートするコンパイラは認識していません)。四重極精度のないコンパイラはselected_real_kind(32)に対して-1を返します。
- 1. 拡張倍精度浮動小数点ライブラリC/C++
- 2. C++倍精度/精度
- 3. 倍精度
- 4. Javaの倍精度
- 5. SSIS倍精度prob
- 6. PHPUnitテスト倍精度
- 7. 拡張ツールキットWPF DateTimePicker秒精度
- 8. 単精度、倍精度、および精度
- 9. 4倍のCPU時間と倍精度
- 10. C#の倍精度精度の損失、減算の倍数を加算するときの精度の低下
- 11. 倍精度乱数列
- 12. 倍精度を返す0
- 13. 倍精度とfmodでエラー
- 14. iPhone/iPad倍精度数学
- 15. 機能CORR(倍精度、倍精度)が存在しない - のPostgresSQL
- 16. C#DateTime:倍精度浮動小数点型時間の倍精度化
- 17. 単精度への倍精度の丸め:上限の強制
- 18. C - IEEE 754の倍精度と単精度の格納方法
- 19. 倍精度を追加する際の精度の低下
- 20. 条件付きでJavaが倍精度に倍精度化されない
- 21. IEEEの単精度と倍精度で表される総数
- 22. スウィフトで倍精度以上の精度を実現
- 23. Javaの単精度/倍精度は何ですか?
- 24. QString :: toDouble()が誤った精度で倍精度を返す
- 25. 精度で倍精度を出力する
- 26. 倍精度の定義エラーのCUDA atomicAdd
- 27. ハスケルの最小/最大倍精度
- 28. LinuxとMacの4倍精度
- 29. 丸めコードの倍精度エラー
- 30. 倍精度変数の乗算
しかし、あなたは '整数 'を書きました。 'integer'だけが' double 'ではなく22桁を持つことができますか? – Shibli
'long_double'は整数であり、' real'変数 'a'と' b'の種別を少なくとも精度を持つように指定するために使用されます。22 – steabert
@Shibli単精度および倍精度浮動小数点数は、ポータブルな方法でシステムに浮動小数点数を返しこのためには 'integer、parameter :: sp = kind(1.e0)'と 'integer、parameter :: dp = kind(1.d0)'を使用できます。次に、倍精度浮動小数点を 'real(kind = dp):: double'として宣言できます。 – Chris