回答編集履歴
3
誤字
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
浮動小数点数の丸め誤差は、
|
5
|
+
浮動小数点数の丸め誤差は、表現可能な桁数が有限な浮動小数点数で実数を表現するという制約により生じる誤差です。例えば、円周率を3桁しか表せないとしたら、正確に表せるのは 3.14 までで誤差として π-3.14 が発生しますね。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -24,11 +24,11 @@
|
|
24
24
|
|
25
25
|
表現可能な有効桁数を増やせば誤差は少なくできます。
|
26
26
|
|
27
|
-
C/C++ の場合、プリミティブ型
|
27
|
+
C/C++ の場合、プリミティブ型として float、double が用意されていますが、[Boost Multiprecision Library](https://boostjp.github.io/tips/multiprec-float.html) のような多倍長浮動小数点演算が行えるライブラリを使うことで有効桁数を数百桁とかで計算することも可能です。
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
プリミティブ型である float/double と違い、計算速度がかなり遅くなるので、使いたい用途に対して、本当にその精度が必要
|
31
|
+
プリミティブ型である float/double と違い、計算速度がかなり遅くなるので、使いたい用途に対して、本当にその精度が必要かどうかを検討してから使ってください。
|
32
32
|
|
33
33
|
|
34
34
|
|
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
|
38
38
|
|
39
|
-
以下のように丸め誤差が大きくなるパターンというのがあるので、それを避けるように計算式を変形することで誤差を減らす工夫は可能です。
|
39
|
+
以下のように丸め誤差が大きくなるパターンというのがいくつかあるので、それを避けるように計算式を変形することで誤差を減らす工夫は可能です。
|
40
40
|
|
41
41
|
|
42
42
|
|
2
修正
test
CHANGED
@@ -43,3 +43,7 @@
|
|
43
43
|
* 情報落ち: 絶対値が大きくことなる値同士を演算して、絶対値が小さいほうの有効数字が落ちてしまう現象
|
44
44
|
|
45
45
|
* 桁落ち: 値がほぼ同じものを減算して有効桁数が減ってしまう現象
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
例: [chap03.pdf 例題 3.4.3 (2 次方程式の改良)](https://na-inet.jp/nasoft/chap03.pdf)
|
1
修正
test
CHANGED
@@ -28,6 +28,10 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
+
プリミティブ型である float/double と違い、計算速度がかなり遅くなるので、使いたい用途に対して、本当にその精度が必要が検討してから使ってください。
|
32
|
+
|
33
|
+
|
34
|
+
|
31
35
|
### 2. 丸め誤差が発生しにくいように計算式を組み替える
|
32
36
|
|
33
37
|
|