正確な乗算(×)、加算(+)、および減算(−)の浮動小数点アナログをそれぞれ(私は怠惰な除算演算子を取得しようとして怠惰でした)で示しましょう。我々は仮定します(IEEE-754)は、それらのすべてのための
[ X ⊕ Y ] = (X + Y )(1 + δ ⊕)、⊗ 、⊕ 、⊖×+−ε M A C H上部四捨五入に相対誤差に結合を与える機械イプシロンです。また、(と仮定し、すべての次の補題を使用します | δ I | ≤ ε mはCの時間、そして mは:簡単に証明することができる大きすぎない)
、M Π iの= 1(1 + δ I)= 1 + θを(
[ X ⊕ Y] = (x + y)(1 + δ⊕)、| δ⊕| ≤ εm a c h、
εm a c h| δ私| ≤ εm a c hメートルΠi = 1メートル(1 + δ私)= 1 + θ (m )、| θ(m) | ≤ M εm a c h1 − m ϵm a c h
レッツは、真の関数定義実数で動作xは、Y 、Zなどをfx 、y、z
f(x 、y、z)=(x×z)−(y×z)
そして、としてIEEE準拠の浮動小数点演算関数の実装の2つのバージョン及び〜F 2の浮動小数点表現で動作〜X = X (1 + δ X)、〜yは、〜zは、次の通り:f1~f2~x~=x(1+δx),y~,z~
f1~(x~,y~,z~)=(x~⊗z~)⊖(y~⊗z~),
f2〜(x〜、y〜、z〜)= (x〜⊖ Y〜)⊗z~.
エラー解析:f1~
f1~=((x(1+δx)×z(1+δz))(1+δ⊗xz)(x~⊗z~)−(y(1+δy)×z(1+δz))(1+δ⊗yz)(y~⊗z~))(1+δ⊖)=xz(1+δx)(1+δz)(1+δ⊗xz)(1+δ⊖)−yz(1+δy)(1+δz)(1+δ⊗yz)(1+δ⊖)=xz(1+θxz,1)−yz(1+θyz,1).
|θxz,1|,|θyz,1|≤4ϵmach1−4ϵmach
f2~
f2~=(((x(1+δx)−y(1+δy)(1+δ⊖xy))×(z(1+δz)))(1+δ⊗)=xz(1+δx)(1+δz)(1+δ⊖xy)(1+δ⊗)−yz(1+δy)(1+δz)(1+δ⊖xy)(1+δ⊗)=xz(1+θx,2)−yz(1+θy,2).
|θx,2|,|θy,2|≤4ϵmach1−4ϵmach
f1~f2~f2~f1~
xy
|f1~−f||f|=|xz+xzθxz,1−yz−yzθyz,1−(xz−yz)||xz−yz|=|xθxz,1−yθyz,1||x−y|≤|x|+|y||x−y|4ϵmach1−4ϵmach,
|f2~−f||f|=|xz+xzθx,2−yz−yzθy,2−(xz−yz)||xz−yz|=|xθx,2−yθy,2||x−y|≤|x|+|y||x−y|4ϵmach1−4ϵmach.
θx,y,z(x−y)xy
x,y,z,f(x,y,z)∈F0F0