§E20.38頑健な幾何計算

最終更新

平面の二つの閉線分が交わるかどうかは、端点がなす三つ組の向きと、端点の座標の比較とによって判定される。三点の向きは二つの差ベクトルを列とする2次行列式の符号で表されるが、浮動小数点演算による評価では丸め誤差によって符号が変わることがある。座標が整数であっても、交わらない二つの閉線分を交わると判定する例がある。

浮動小数点数はすべて最小の格子間隔の整数倍であるから、座標をこの間隔で割ると、向きは整数の点がなす三つ組の向きに一致し、整数の演算によって正確に求められる。外向き丸めの区間演算によって行列式を含み零を含まない区間が得られた場合にはその符号を採り、それ以外の場合には整数の行列式を計算する手続きをフィルタ付き向き判定という。これを端点がなす四つの三つ組に適用すると、浮動小数点数を端点の座標とする閉線分の交差は、有理数の有限回の四則演算と大小比較によって正確に判定される。

区間演算による包含は符号を保証する十分条件となり、符号を確定することができない場合を厳密な整数の計算が補う。ただし、座標が真の配置を丸めた値であるときには、保存された浮動小数点数に対する正しい判定が真の配置についての正しい判定であるとは限らない。本記事は、閉線分の交差を浮動小数点数の座標に対して正確に判定する手続きを向きの判定から組み立て、近似された入力に対する保証をそれと区別する。

1 向きと行列式

定義 1.1 (向き). 点z∈R2z\in\R^2の座標をz=(zx,zy)z=(z_x,z_y)と書き、z,w∈R2z,w\in\R^2に対して、第1列がzz、第2列がwwである2次正方行列の行列式をdet⁡(z,w)\det(z,w)と書く。a,b,c∈R2a,b,c\in\R^2に対して

D(a,b,c):=det⁡(b−a, c−a)D(a,b,c):=\det(b-a,\ c-a)

と置く。§D3.4 式 (4.2.1)をn=2n=2として適用すると

D(a,b,c)=(bx−ax)(cy−ay)−(by−ay)(cx−ax)D(a,b,c)=(b_x-a_x)(c_y-a_y)-(b_y-a_y)(c_x-a_x)

である。符号sgn⁡D(a,b,c)∈{1,0,−1}\operatorname{sgn}D(a,b,c)\in\{1,0,-1\}を三つ組(a,b,c)(a,b,c)の 向き (orientation) という。三点a,b,c∈R2a,b,c\in\R^2が 共線 (collinear) であるとは、q∈R2q\in\R^2とv∈R2∖{0}v\in\R^2\setminus\{0\}が存在して、a,b,ca,b,cがいずれも直線{q+τv∣τ∈R}\{q+\tau v\mid\tau\in\R\}に属することをいう。

補題 1.2.a,b,c,d∈R2a,b,c,d\in\R^2、λ∈R\lambda\in\Rとする。

  1. D(a,b,c)=det⁡(a,b)+det⁡(b,c)+det⁡(c,a)D(a,b,c)=\det(a,b)+\det(b,c)+\det(c,a)である。特にD(b,c,a)=D(a,b,c)D(b,c,a)=D(a,b,c)、D(b,a,c)=−D(a,b,c)D(b,a,c)=-D(a,b,c)であり、D(a,b,a)=D(a,b,b)=0D(a,b,a)=D(a,b,b)=0である。
  2. D(a,b,(1−λ)c+λd)=(1−λ)D(a,b,c)+λD(a,b,d)D(a,b,(1-\lambda)c+\lambda d)=(1-\lambda)D(a,b,c)+\lambda D(a,b,d)が成り立つ。
  3. a≠ba\ne bならば、D(a,b,c)=0D(a,b,c)=0であることと、あるt∈Rt\in\Rに対してc=a+t(b−a)c=a+t(b-a)であることは同値である。また、D(a,b,c)=0D(a,b,c)=0であることとa,b,ca,b,cが共線であることは同値である。

証明.§D3.4 系 6.2により行列式は各列について線形であるから

D(a,b,c)=det⁡(b,c)−det⁡(b,a)−det⁡(a,c)+det⁡(a,a)D(a,b,c)=\det(b,c)-\det(b,a)-\det(a,c)+\det(a,a)

である。同じ系により、二つの列が等しい行列式は00であり、二つの列を入れ替えると符号が変わるので、det⁡(a,a)=0\det(a,a)=0、−det⁡(b,a)=det⁡(a,b)-\det(b,a)=\det(a,b)、−det⁡(a,c)=det⁡(c,a)-\det(a,c)=\det(c,a)であり、(1)の等式が成り立つ。その右辺は(a,b,c)(a,b,c)を(b,c,a)(b,c,a)に替えても変わらず、(b,a,c)(b,a,c)に替えるとdet⁡(b,a)+det⁡(a,c)+det⁡(c,b)=−(det⁡(a,b)+det⁡(c,a)+det⁡(b,c))\det(b,a)+\det(a,c)+\det(c,b)=-(\det(a,b)+\det(c,a)+\det(b,c))となる。右辺でc=ac=aとするとdet⁡(a,b)+det⁡(b,a)+det⁡(a,a)=0\det(a,b)+\det(b,a)+\det(a,a)=0であり、c=bc=bとするとdet⁡(a,b)+det⁡(b,b)+det⁡(b,a)=0\det(a,b)+\det(b,b)+\det(b,a)=0である。

(1−λ)c+λd−a=(1−λ)(c−a)+λ(d−a)(1-\lambda)c+\lambda d-a=(1-\lambda)(c-a)+\lambda(d-a)であるから、§D3.4 系 6.2の第2列についての線形性により(2)が成り立つ。

(3)を示す。a≠ba\ne bとし、v:=b−av:=b-a、w:=c−aw:=c-aと置く。w=tvw=tvならば、第2列についての線形性と二つの列が等しい行列式が00であることによりD(a,b,c)=tdet⁡(v,v)=0D(a,b,c)=t\det(v,v)=0である。逆にD(a,b,c)=vxwy−vywx=0D(a,b,c)=v_xw_y-v_yw_x=0とする。vx≠0v_x\ne0ならば、t:=wx/vxt:=w_x/v_xと置くとwx=tvxw_x=tv_xかつwy=vywx/vx=tvyw_y=v_yw_x/v_x=tv_yである。vx=0v_x=0ならばvy≠0v_y\ne0であり、t:=wy/vyt:=w_y/v_yと置くと、vywx=vxwy=0v_yw_x=v_xw_y=0からwx=0=tvxw_x=0=tv_xであり、wy=tvyw_y=tv_yである。いずれの場合もc=a+tvc=a+tvである。

a=ba=bならば、(1)によりD(a,a,c)=D(a,c,a)=0D(a,a,c)=D(a,c,a)=0である。さらにc≠ac\ne aのときv:=c−av:=c-a、c=ac=aのときv:=(1,0)v:=(1,0)と置くと、a,b,ca,b,cは直線{a+τv∣τ∈R}\{a+\tau v\mid\tau\in\R\}に属するので共線である。a≠ba\ne bかつD(a,b,c)=0D(a,b,c)=0ならば、前段によりccは直線{a+τ(b−a)∣τ∈R}\{a+\tau(b-a)\mid\tau\in\R\}に属し、aaとbbもτ=0,1\tau=0,1としてこの直線に属するので、a,b,ca,b,cは共線である。a≠ba\ne bであり、a,b,ca,b,cが直線{q+τv∣τ∈R}\{q+\tau v\mid\tau\in\R\}に属するとし、a=q+tava=q+t_av、b=q+tbvb=q+t_bv、c=q+tcvc=q+t_cvと書く。a≠ba\ne bからta≠tbt_a\ne t_bであり、c−a=tc−tatb−ta(b−a)c-a=\frac{t_c-t_a}{t_b-t_a}(b-a)であるから、前段によりD(a,b,c)=0D(a,b,c)=0である。▨

2 丸めによる誤判定

定義 2.1.FFを浮動小数点数系、fl⁡\operatorname{fl}をFFの最近接丸めとし、a,b,c∈F2a,b,c\in F^2とする。

d1:=fl⁡(bx−ax),d2:=fl⁡(cy−ay),d3:=fl⁡(by−ay),d4:=fl⁡(cx−ax),q1:=fl⁡(d1d2),q2:=fl⁡(d3d4)d_1:=\operatorname{fl}(b_x-a_x),\quad d_2:=\operatorname{fl}(c_y-a_y),\quad d_3:=\operatorname{fl}(b_y-a_y),\quad d_4:=\operatorname{fl}(c_x-a_x),\quad q_1:=\operatorname{fl}(d_1d_2),\quad q_2:=\operatorname{fl}(d_3d_4)

と順に置き、D^(a,b,c):=fl⁡(q1−q2)\widehat D(a,b,c):=\operatorname{fl}(q_1-q_2)と置く。D^(a,b,c)\widehat D(a,b,c)は、七つの演算の厳密な結果bx−axb_x-a_x、cy−ayc_y-a_y、by−ayb_y-a_y、cx−axc_x-a_x、d1d2d_1d_2、d3d4d_3d_4、q1−q2q_1-q_2の絶対値がいずれもNmax⁡N_{\max}以下であるときに定まる。D^(a,b,c)\widehat D(a,b,c)をD(a,b,c)D(a,b,c)の 浮動小数点評価 (floating-point evaluation) という。

例 2.2.F:=F(2,53,−1022,1023)F:=F(2,53,-1022,1023)とし、fl⁡\operatorname{fl}をFFの最近接偶数丸めとする。n:=227n:=2^{27}、a:=(0,0)a:=(0,0)、b:=(n,n−1)b:=(n,n-1)、c:=(n+1,n)c:=(n+1,n)と置くと

D(a,b,c)=n⋅n−(n−1)(n+1)=1D(a,b,c)=n\cdot n-(n-1)(n+1)=1

であるが、D^(a,b,c)=0\widehat D(a,b,c)=0であり、D^(a,b,c)\widehat D(a,b,c)の符号は(a,b,c)(a,b,c)の向きと一致しない。

s52=20=1s_{52}=2^{0}=1であるから、§E20.1 補題 1.3 (1)をe=52e=52として適用すると、絶対値が2532^{53}以下の整数はFFに属する。したがってa,b,ca,b,cの座標と四つの差bx−ax=nb_x-a_x=n、cy−ay=nc_y-a_y=n、by−ay=n−1b_y-a_y=n-1、cx−ax=n+1c_x-a_x=n+1はFFに属し、§E20.1 系 3.2 (1)によりd1=d2=nd_1=d_2=n、d3=n−1d_3=n-1、d4=n+1d_4=n+1である。積n⋅n=254=252s54n\cdot n=2^{54}=2^{52}s_{54}はFFに属するので、§E20.1 系 3.2 (1)によりq1=254q_1=2^{54}である。

積d3d4=254−1d_3d_4=2^{54}-1について、s53=2s_{53}=2であり、§E20.1 補題 1.2 (1)によりF∩[253,254)={2m∣m∈Z, 252≤m≤253−1}F\cap[2^{53},2^{54})=\{2m\mid m\in\Z,\ 2^{52}\le m\le2^{53}-1\}である。したがって254−2=(253−1)s532^{54}-2=(2^{53}-1)s_{53}はFFに属し、奇数254−12^{54}-1はFFに属さない。§E20.1 補題 1.2 (4)により254−22^{54}-2より大きいFFの元のうち最小のものは254−2+s53=2542^{54}-2+s_{53}=2^{54}である。ゆえにFFの各元yyはy≤254−2y\le2^{54}-2またはy≥254y\ge2^{54}を満たし、254−12^{54}-1の最近接点は、距離がともに11である254−22^{54}-2と2542^{54}の二つである。§E20.1 補題 2.3の整数についてm(254−2)=253−1m(2^{54}-2)=2^{53}-1は奇数、m(254)=252m(2^{54})=2^{52}は偶数であるから、§E20.1 定義 2.4によりq2=fl⁡(254−1)=254q_2=\operatorname{fl}(2^{54}-1)=2^{54}である。

最後の減算の厳密な結果はq1−q2=0q_1-q_2=0であり、§E20.1 系 3.2 (1)によりD^(a,b,c)=0\widehat D(a,b,c)=0である。七つの演算の厳密な結果の絶対値は2542^{54}以下であるからD^(a,b,c)\widehat D(a,b,c)は定まる。

注意 2.3.定義 2.1のq1,q2q_1,q_2がq2/2≤q1≤2q2q_2/2\le q_1\le2q_2を満たすならば、§E20.3 補題 3.1によりD^(a,b,c)=q1−q2\widehat D(a,b,c)=q_1-q_2である。さらに四つの差が正確であればD(a,b,c)=d1d2−d3d4D(a,b,c)=d_1d_2-d_3d_4であるから

D^(a,b,c)−D(a,b,c)=(q1−d1d2)−(q2−d3d4)\widehat D(a,b,c)-D(a,b,c)=(q_1-d_1d_2)-(q_2-d_3d_4)

である。例 2.2ではq1=q2=254q_1=q_2=2^{54}であり、誤差−1-1は積(n−1)(n+1)(n-1)(n+1)の丸め誤差11から生じる。

3 整数化と区間フィルタ

命題 3.1.F=F(β,p,emin⁡,emax⁡)F=F(\beta,p,e_{\min},e_{\max})を浮動小数点数系とし、s:=semin⁡=βemin⁡+1−ps:=s_{e_{\min}}=\beta^{e_{\min}+1-p}と置く。

  1. 各x∈Fx\in Fに対して、x=ksx=ksを満たす整数kkがただ一つ存在し、∣k∣≤Nmax⁡/s|k|\le N_{\max}/sである。
  2. a,b,c∈F2a,b,c\in F^2の各座標を(1)の整数によってa=sAa=sA、b=sBb=sB、c=sCc=sC(A,B,C∈Z2A,B,C\in\Z^2)と書くと、D(a,b,c)=s2D(A,B,C)D(a,b,c)=s^2D(A,B,C)であり、D(A,B,C)D(A,B,C)は整数であって、sgn⁡D(a,b,c)=sgn⁡D(A,B,C)\operatorname{sgn}D(a,b,c)=\operatorname{sgn}D(A,B,C)が成り立つ。

証明.x∈Fx\in Fとする。x=0x=0ならばx=0⋅sx=0\cdot sである。x≠0x\ne0とする。0<βemin⁡0<\beta^{e_{\min}}であるから§E20.1 補題 1.2の整数についてe(0)=emin⁡e(0)=e_{\min}であり、§E20.1 補題 1.3 (3)によりemin⁡=e(0)≤e(∣x∣)e_{\min}=e(0)\le e(|x|)である。§E20.1 補題 1.3 (2)をe=emin⁡e=e_{\min}として適用すると、xxはssの整数倍である。s>0s>0であるからk=x/sk=x/sは一意である。§E20.1 補題 1.2 (1)によりNmax⁡N_{\max}はFFの最大元であり、F=−FF=-Fであるから∣x∣≤Nmax⁡|x|\le N_{\max}であり、∣k∣≤Nmax⁡/s|k|\le N_{\max}/sである。

§D3.4 系 6.2の各列についての線形性により

D(a,b,c)=det⁡(s(B−A), s(C−A))=s2det⁡(B−A, C−A)=s2D(A,B,C)D(a,b,c)=\det(s(B-A),\ s(C-A))=s^2\det(B-A,\ C-A)=s^2D(A,B,C)

である。D(A,B,C)D(A,B,C)は定義 1.1の展開式により整数の差と積で表されるので整数であり、s2>0s^2>0であるからD(a,b,c)D(a,b,c)とD(A,B,C)D(A,B,C)の符号は一致する。▨

系 3.2. 6変数の式(§E20.36 定義 4.1 (1))

E:=(ξ3−ξ1)⋅(ξ6−ξ2)−(ξ4−ξ2)⋅(ξ5−ξ1)E:=(\xi_3-\xi_1)\cdot(\xi_6-\xi_2)-(\xi_4-\xi_2)\cdot(\xi_5-\xi_1)

の定める関数はR6\R^6全体で定義され、fE(ξ)=D((ξ1,ξ2),(ξ3,ξ4),(ξ5,ξ6))f_E(\xi)=D((\xi_1,\xi_2),(\xi_3,\xi_4),(\xi_5,\xi_6))を満たす。XXをR6\R^6の箱とするとE(X)E(X)は定まる。Y:=E(X)Y:=E(X)とするか、ある浮動小数点数系FFについてX⊂[−Nmax⁡,Nmax⁡]6X\subset[-N_{\max},N_{\max}]^6かつEF(X)E_F(X)が定まるときにY:=EF(X)Y:=E_F(X)とする。inf⁡Y>0\inf Y>0ならば任意のξ∈X\xi\in Xに対してfE(ξ)>0f_E(\xi)>0であり、sup⁡Y<0\sup Y<0ならば任意のξ∈X\xi\in Xに対してfE(ξ)<0f_E(\xi)<0である。

証明.EEは変数から減算と乗算だけで構成され、除算を含まないので、§E20.36 定義 4.1 (2)によりDE=R6D_E=\R^6であり、fE(ξ)f_E(\xi)はDDの展開式に一致する。§E20.36 定義 4.1 (3)においてE(X)E(X)が定まらないのは除数の区間が00を含む場合だけであるから、式の構成に関する帰納法によりE(X)E(X)は定まる。§E20.36 定理 4.2 (1)または§E20.36 定理 4.2 (3)によりfE(X)⊂Yf_E(X)\subset Yであり、§E20.36 命題 7.1をS=XS=Xに適用して結論を得る。▨

定義 3.3.F=F(β,p,emin⁡,emax⁡)F=F(\beta,p,e_{\min},e_{\max})を浮動小数点数系とし、s:=semin⁡s:=s_{e_{\min}}と置き、EEを系 3.2の式とする。a,b,c∈F2a,b,c\in F^2に対して、R6\R^6の箱

X:=[ax,ax]×[ay,ay]×[bx,bx]×[by,by]×[cx,cx]×[cy,cy]X:=[a_x,a_x]\times[a_y,a_y]\times[b_x,b_x]\times[b_y,b_y]\times[c_x,c_x]\times[c_y,c_y]

は[−Nmax⁡,Nmax⁡]6[-N_{\max},N_{\max}]^6に含まれる。次の手順を(a,b,c)(a,b,c)の フィルタ付き向き判定 (filtered orientation test) という。

  1. 外向き丸めの自然区間拡張EF(X)E_F(X)(§E20.36 定義 4.1 (4))を計算する。EF(X)E_F(X)が定まってinf⁡EF(X)>0\inf E_F(X)>0ならば11を返し、EF(X)E_F(X)が定まってsup⁡EF(X)<0\sup E_F(X)<0ならば−1-1を返す。それ以外の場合は手順(2)へ進む。
  2. a,b,ca,b,cの各座標xxを整数x/sx/s(命題 3.1 (1))に替えた点をA,B,C∈Z2A,B,C\in\Z^2とし、整数D(A,B,C)D(A,B,C)を計算してsgn⁡D(A,B,C)\operatorname{sgn}D(A,B,C)を返す。

定理 3.4.FFを浮動小数点数系とし、a,b,c∈F2a,b,c\in F^2とする。

  1. (a,b,c)(a,b,c)のフィルタ付き向き判定は、有理数の有限回の四則演算と大小比較の後に終了し、sgn⁡D(a,b,c)\operatorname{sgn}D(a,b,c)を返す。
  2. D(a,b,c)=0D(a,b,c)=0ならば、手順定義 3.3 (1)は値を返さず、手順定義 3.3 (2)が00を返す。

証明.ξ:=(ax,ay,bx,by,cx,cy)\xi:=(a_x,a_y,b_x,b_y,c_x,c_y)と置くとX={ξ}X=\{\xi\}であり、系 3.2によりfE(ξ)=D(a,b,c)f_E(\xi)=D(a,b,c)である。FFの元は整数とβ\betaの整数冪の積であるから有理数である。

手順定義 3.3 (1)において、変数ξi\xi_iに対する値out⁡F([ξi,ξi])\operatorname{out}_F([\xi_i,\xi_i])は、端点がFFに属するので§E20.36 定理 3.3 (1)により[ξi,ξi][\xi_i,\xi_i]に等しい。EEの七つの演算のそれぞれについて、区間Y1,Y2Y_1,Y_2に対するY1∘Y2Y_1\circ Y_2の端点は§E20.36 定理 2.3 (1)によりY1,Y2Y_1,Y_2の端点の高々四つの和・差・積の最小値と最大値である。Y1∘Y2⊂[−Nmax⁡,Nmax⁡]Y_1\circ Y_2\subset[-N_{\max},N_{\max}]であるかは端点と±Nmax⁡\pm N_{\max}の比較で定まり、fl⁡↓(z)\operatorname{fl}_\downarrow(z)とfl⁡↑(z)\operatorname{fl}_\uparrow(z)は有限集合FFの各元とzzの比較で定まる。ここに現れる値はすべて有理数であるから、手順定義 3.3 (1)は有理数の有限回の四則演算と大小比較の後に、EF(X)E_F(X)を得るかEF(X)E_F(X)が定まらないことを知って終了する。EF(X)E_F(X)が定まるならば、系 3.2をX={ξ}X=\{\xi\}とY=EF(X)Y=E_F(X)に適用すると、inf⁡EF(X)>0\inf E_F(X)>0ならばD(a,b,c)>0D(a,b,c)>0であり、sup⁡EF(X)<0\sup E_F(X)<0ならばD(a,b,c)<0D(a,b,c)<0である。したがって手順定義 3.3 (1)が値を返すならば、その値はsgn⁡D(a,b,c)\operatorname{sgn}D(a,b,c)である。

手順定義 3.3 (2)において、命題 3.1 (1)により各座標xxについてx/sx/sは整数であり、D(A,B,C)D(A,B,C)は整数の四回の減算、二回の乗算、一回の減算で得られる。命題 3.1 (2)によりsgn⁡D(A,B,C)=sgn⁡D(a,b,c)\operatorname{sgn}D(A,B,C)=\operatorname{sgn}D(a,b,c)である。これで(1)は示された。

D(a,b,c)=0D(a,b,c)=0とする。EF(X)E_F(X)が定まるならば、§E20.36 定理 4.2 (3)により0=fE(ξ)∈EF(X)0=f_E(\xi)\in E_F(X)であり、inf⁡EF(X)≤0≤sup⁡EF(X)\inf E_F(X)\le0\le\sup E_F(X)である。したがって手順定義 3.3 (1)は値を返さず、(1)により手順定義 3.3 (2)はsgn⁡0=0\operatorname{sgn}0=0を返す。▨

例 3.5.F:=F(2,53,−1022,1023)F:=F(2,53,-1022,1023)とする。

  1. a:=(−Nmax⁡,0)a:=(-N_{\max},0)、b:=(Nmax⁡,0)b:=(N_{\max},0)、c:=(0,1)c:=(0,1)とすると、D(a,b,c)=2Nmax⁡⋅1−0⋅Nmax⁡=2Nmax⁡>0D(a,b,c)=2N_{\max}\cdot1-0\cdot N_{\max}=2N_{\max}>0である。部分式ξ3−ξ1\xi_3-\xi_1の区間演算の結果[Nmax⁡,Nmax⁡]−[−Nmax⁡,−Nmax⁡]=[2Nmax⁡,2Nmax⁡][N_{\max},N_{\max}]-[-N_{\max},-N_{\max}]=[2N_{\max},2N_{\max}]は[−Nmax⁡,Nmax⁡][-N_{\max},N_{\max}]に含まれないので、外向き丸めの区間演算[Nmax⁡,Nmax⁡]−F[−Nmax⁡,−Nmax⁡][N_{\max},N_{\max}]-_F[-N_{\max},-N_{\max}]は定まらず、EF(X)E_F(X)は定まらない。定理 3.4 (1)により手順定義 3.3 (2)は11を返す。差bx−axb_x-a_xの厳密な結果の絶対値がNmax⁡N_{\max}を超えるので、浮動小数点評価D^(a,b,c)\widehat D(a,b,c)も定まらない。
  2. s:=s−1022=2−1074s:=s_{-1022}=2^{-1074}、a:=(0,0)a:=(0,0)、b:=(s,0)b:=(s,0)、c:=(0,s)c:=(0,s)とすると、D(a,b,c)=s2=2−2148>0D(a,b,c)=s^2=2^{-2148}>0である。§E20.1 補題 1.2 (2)によりssはFFの正の元のうち最小のものであり、0<s2<s0<s^2<sであるからfl⁡↓(s2)=0\operatorname{fl}_\downarrow(s^2)=0、fl⁡↑(s2)=s\operatorname{fl}_\uparrow(s^2)=sである。四つの差の区間は[s,s][s,s]、[s,s][s,s]、[0,0][0,0]、[0,0][0,0]であり、積の区間はout⁡F([s2,s2])=[0,s]\operatorname{out}_F([s^2,s^2])=[0,s]と[0,0][0,0]であり、EF(X)=out⁡F([0,s])=[0,s]E_F(X)=\operatorname{out}_F([0,s])=[0,s]である。inf⁡EF(X)=0\inf E_F(X)=0であるから手順定義 3.3 (2)へ進み、A=(0,0)A=(0,0)、B=(1,0)B=(1,0)、C=(0,1)C=(0,1)に対するD(A,B,C)=1D(A,B,C)=1から11を返す。一方、s2<s/2s^2<s/2であるからs2s^2の最近接点は00だけであり、任意の最近接丸めfl⁡\operatorname{fl}についてq1=fl⁡(s2)=0q_1=\operatorname{fl}(s^2)=0、q2=0q_2=0、D^(a,b,c)=0\widehat D(a,b,c)=0である。積s2s^2はアンダーフローの範囲にあるので§E20.1 系 3.2 (2)は適用されず、§E20.1 系 3.2 (3)の評価∣fl⁡(s2)−s2∣≤s/2|\operatorname{fl}(s^2)-s^2|\le s/2はfl⁡(s2)=0\operatorname{fl}(s^2)=0を排除しない。

注意 3.6.

  1. IEEE 754 の binary64 形式は零に符号の異なる二つの表現をもつが、どちらも実数00を表し、F(2,53,−1022,1023)F(2,53,-1022,1023)の元としては00である。したがって座標に負の零を含む入力にも定理 3.4が適用され、手順定義 3.3 (2)におけるその座標の整数は00である。
  2. F=F(2,53,−1022,1023)F=F(2,53,-1022,1023)ではs=2−1074s=2^{-1074}であり、命題 3.1 (1)の整数は∣k∣≤Nmax⁡/s=(253−1)22045<22098|k|\le N_{\max}/s=(2^{53}-1)2^{2045}<2^{2098}を満たす。したがって手順定義 3.3 (2)の差は絶対値が220992^{2099}未満、積とD(A,B,C)D(A,B,C)は絶対値が241992^{4199}未満の整数である。手順定義 3.3 (1)はFFの元を端点とする七回の外向き丸めの区間演算であり、手順定義 3.3 (1)が値を返すとき、手順定義 3.3 (2)の整数演算は行われない。

4 閉線分の交差

定義 4.1.a,b∈R2a,b\in\R^2に対して、[a,b]:={(1−t)a+tb∣t∈[0,1]}[a,b]:=\{(1-t)a+tb\mid t\in[0,1]\}をa,ba,bを端点とする 閉線分 (closed segment) という。a=ba=bのとき[a,b]={a}[a,b]=\{a\}であり、これを 点線分 (point segment) という。

定理 4.2.a,b,c,d∈R2a,b,c,d\in\R^2とする。次の三条件がすべて成り立つことは、[a,b]∩[c,d]≠∅[a,b]\cap[c,d]\ne\emptysetであるための必要十分条件である。

  1. j∈{x,y}j\in\{x,y\}のそれぞれについて、閉区間[min⁡{aj,bj},max⁡{aj,bj}][\min\{a_j,b_j\},\max\{a_j,b_j\}]と[min⁡{cj,dj},max⁡{cj,dj}][\min\{c_j,d_j\},\max\{c_j,d_j\}]が交わる。
  2. D(a,b,c)D(a,b,d)≤0D(a,b,c)D(a,b,d)\le0である。
  3. D(c,d,a)D(c,d,b)≤0D(c,d,a)D(c,d,b)\le0である。

証明. 必要性を示す。p∈[a,b]∩[c,d]p\in[a,b]\cap[c,d]をとり、t,s∈[0,1]t,s\in[0,1]によってp=(1−t)a+tb=(1−s)c+sdp=(1-t)a+tb=(1-s)c+sdと書く。j∈{x,y}j\in\{x,y\}について、pj=(1−t)aj+tbjp_j=(1-t)a_j+tb_jはmin⁡{aj,bj}\min\{a_j,b_j\}以上max⁡{aj,bj}\max\{a_j,b_j\}以下であり、pj=(1−s)cj+sdjp_j=(1-s)c_j+sd_jはmin⁡{cj,dj}\min\{c_j,d_j\}以上max⁡{cj,dj}\max\{c_j,d_j\}以下であるから、条件 (a)が成り立つ。補題 1.2 (2)と補題 1.2 (1)により

0=(1−t)D(a,b,a)+tD(a,b,b)=D(a,b,p)=(1−s)D(a,b,c)+sD(a,b,d)0=(1-t)D(a,b,a)+tD(a,b,b)=D(a,b,p)=(1-s)D(a,b,c)+sD(a,b,d)

である。1−s1-sとssは非負で和が11であるから、D(a,b,c)D(a,b,c)とD(a,b,d)D(a,b,d)がともに正ならば右辺は正であり、ともに負ならば右辺は負である。いずれも左辺が00であることと両立しないので、条件 (b)が成り立つ。この議論はp∈[a,b]∩[c,d]p\in[a,b]\cap[c,d]だけを用いるので、(a,b)(a,b)と(c,d)(c,d)を入れ替えて適用すると条件 (c)を得る。

十分性を示す。三条件が成り立つとし、α:=D(a,b,c)\alpha:=D(a,b,c)、β:=D(a,b,d)\beta:=D(a,b,d)、γ:=D(c,d,a)\gamma:=D(c,d,a)、δ:=D(c,d,b)\delta:=D(c,d,b)と置く。実数μ,ν\mu,\nuがμν≤0\mu\nu\le0と(μ,ν)≠(0,0)(\mu,\nu)\ne(0,0)を満たすならば、μ=ν\mu=\nuからμ2≤0\mu^2\le0すなわちμ=ν=0\mu=\nu=0が従うのでμ≠ν\mu\ne\nuであり、μ(μ−ν)=μ2−μν≥0\mu(\mu-\nu)=\mu^2-\mu\nu\ge0と(μ−ν)2−μ(μ−ν)=ν2−μν≥0(\mu-\nu)^2-\mu(\mu-\nu)=\nu^2-\mu\nu\ge0から0≤μ/(μ−ν)≤10\le\mu/(\mu-\nu)\le1である。三条件と結論は(a,b)(a,b)と(c,d)(c,d)の入れ替えで保たれ、この入れ替えは(α,β)(\alpha,\beta)と(γ,δ)(\gamma,\delta)を入れ替えるので、(α,β)≠(0,0)(\alpha,\beta)\ne(0,0)の場合とα=β=γ=δ=0\alpha=\beta=\gamma=\delta=0の場合を示せば足りる。

(α,β)≠(0,0)(\alpha,\beta)\ne(0,0)とする。前段によりα≠β\alpha\ne\betaかつs:=α/(α−β)∈[0,1]s:=\alpha/(\alpha-\beta)\in[0,1]であり、p:=(1−s)c+sdp:=(1-s)c+sdは[c,d][c,d]に属する。補題 1.2 (2)によりD(a,b,p)=(1−s)α+sβ=α−s(α−β)=0D(a,b,p)=(1-s)\alpha+s\beta=\alpha-s(\alpha-\beta)=0である。a=ba=bならば補題 1.2 (3)によりα=β=0\alpha=\beta=0となり、(α,β)≠(0,0)(\alpha,\beta)\ne(0,0)と両立しないので、a≠ba\ne bである。補題 1.2 (3)によりp=a+t(b−a)p=a+t(b-a)を満たすt∈Rt\in\Rが存在する。c=dc=dならばα=β\alpha=\betaとなり、α≠β\alpha\ne\betaと両立しないので、c≠dc\ne dである。γ=δ=0\gamma=\delta=0ならば、補題 1.2 (3)によりaaとbbはc,dc,dを含む直線{c+τ(d−c)∣τ∈R}\{c+\tau(d-c)\mid\tau\in\R\}に属するので、a,b,ca,b,cとa,b,da,b,dはそれぞれ共線であり、補題 1.2 (3)によりα=β=0\alpha=\beta=0となって(α,β)≠(0,0)(\alpha,\beta)\ne(0,0)と両立しない。したがって(γ,δ)≠(0,0)(\gamma,\delta)\ne(0,0)であり、前段によりγ≠δ\gamma\ne\deltaかつt′:=γ/(γ−δ)∈[0,1]t':=\gamma/(\gamma-\delta)\in[0,1]である。補題 1.2 (2)により、任意のτ∈R\tau\in\Rに対して

D(c,d,(1−τ)a+τb)=(1−τ)γ+τδ=γ−τ(γ−δ)D(c,d,(1-\tau)a+\tau b)=(1-\tau)\gamma+\tau\delta=\gamma-\tau(\gamma-\delta)

であり、γ≠δ\gamma\ne\deltaであるからこの値が00となるτ\tauはt′t'だけである。一方、補題 1.2 (2)と補題 1.2 (1)によりD(c,d,p)=(1−s)D(c,d,c)+sD(c,d,d)=0D(c,d,p)=(1-s)D(c,d,c)+sD(c,d,d)=0であり、p=(1−t)a+tbp=(1-t)a+tbであるからt=t′∈[0,1]t=t'\in[0,1]である。したがってp∈[a,b]∩[c,d]p\in[a,b]\cap[c,d]である。

α=β=γ=δ=0\alpha=\beta=\gamma=\delta=0とする。a,b,c,da,b,c,dがすべて直線{q+τv∣τ∈R}\{q+\tau v\mid\tau\in\R\}に属するようなq∈R2q\in\R^2とv∈R2∖{0}v\in\R^2\setminus\{0\}が存在する。実際、a≠ba\ne bならば、補題 1.2 (3)によりα=β=0\alpha=\beta=0からc,dc,dは{a+τ(b−a)∣τ∈R}\{a+\tau(b-a)\mid\tau\in\R\}に属するので、q:=aq:=a、v:=b−av:=b-aとすればよい。a=ba=bかつc≠dc\ne dならば、補題 1.2 (3)によりγ=0\gamma=0からa=ba=bは{c+τ(d−c)∣τ∈R}\{c+\tau(d-c)\mid\tau\in\R\}に属するので、q:=cq:=c、v:=d−cv:=d-cとすればよい。a=ba=bかつc=dc=dならば、q:=aq:=aとし、c≠ac\ne aのときv:=c−av:=c-a、c=ac=aのときv:=(1,0)v:=(1,0)とすればよい。

a=q+tava=q+t_av、b=q+tbvb=q+t_bv、c=q+tcvc=q+t_cv、d=q+tdvd=q+t_dvと書く。λ∈[0,1]\lambda\in[0,1]に対して(1−λ)a+λb=q+((1−λ)ta+λtb)v(1-\lambda)a+\lambda b=q+((1-\lambda)t_a+\lambda t_b)vであり、λ↦(1−λ)ta+λtb\lambda\mapsto(1-\lambda)t_a+\lambda t_bは[0,1][0,1]をTab:=[min⁡{ta,tb},max⁡{ta,tb}]T_{ab}:=[\min\{t_a,t_b\},\max\{t_a,t_b\}]の上へ写すので、[a,b]={q+τv∣τ∈Tab}[a,b]=\{q+\tau v\mid\tau\in T_{ab}\}である。Tcd:=[min⁡{tc,td},max⁡{tc,td}]T_{cd}:=[\min\{t_c,t_d\},\max\{t_c,t_d\}]と置くと、同じ理由で[c,d]={q+τv∣τ∈Tcd}[c,d]=\{q+\tau v\mid\tau\in T_{cd}\}である。vj≠0v_j\ne0を満たすj∈{x,y}j\in\{x,y\}をとると、φ(τ):=qj+τvj\varphi(\tau):=q_j+\tau v_jはR\RからR\Rへの狭義単調な全単射であり、φ(ta)=aj\varphi(t_a)=a_j、φ(tb)=bj\varphi(t_b)=b_j、φ(tc)=cj\varphi(t_c)=c_j、φ(td)=dj\varphi(t_d)=d_jであるから、φ\varphiはTabT_{ab}を[min⁡{aj,bj},max⁡{aj,bj}][\min\{a_j,b_j\},\max\{a_j,b_j\}]の上へ、TcdT_{cd}を[min⁡{cj,dj},max⁡{cj,dj}][\min\{c_j,d_j\},\max\{c_j,d_j\}]の上へ写す。条件 (a)によりこの二つの閉区間は共通の元rrをもち、τ0:=φ−1(r)\tau_0:=\varphi^{-1}(r)はTab∩TcdT_{ab}\cap T_{cd}に属する。したがってq+τ0v∈[a,b]∩[c,d]q+\tau_0v\in[a,b]\cap[c,d]である。▨

例 4.3.

  1. a:=(0,0)a:=(0,0)、b:=(1,0)b:=(1,0)、c:=(1,0)c:=(1,0)、d:=(1,1)d:=(1,1)とすると、D(a,b,c)=0D(a,b,c)=0、D(a,b,d)=1D(a,b,d)=1、D(c,d,a)=1D(c,d,a)=1、D(c,d,b)=0D(c,d,b)=0であり、座標の閉区間も交わる。二つの閉線分は端点b=cb=cだけを共有する。
  2. a:=(0,0)a:=(0,0)、b:=(2,0)b:=(2,0)、c:=(1,0)c:=(1,0)、d:=(3,0)d:=(3,0)とすると、四点は共線であり、四つの行列式はすべて00である。xx座標の閉区間[0,2][0,2]と[1,3][1,3]は交わり、[a,b]∩[c,d]=[c,b][a,b]\cap[c,d]=[c,b]である。
  3. a:=(0,0)a:=(0,0)、b:=(1,0)b:=(1,0)、c:=(2,0)c:=(2,0)、d:=(3,0)d:=(3,0)とすると、四つの行列式はすべて00であり定理 4.2 条件 (b)と定理 4.2 条件 (c)は成り立つが、xx座標の閉区間[0,1][0,1]と[2,3][2,3]は交わらず、[a,b]∩[c,d]=∅[a,b]\cap[c,d]=\emptysetである。
  4. c:=(0,0)c:=(0,0)、d:=(2,2)d:=(2,2)とする。点線分[a,b][a,b](b=ab=a)について、a=(1,1)a=(1,1)ならばD(c,d,a)=D(c,d,b)=0D(c,d,a)=D(c,d,b)=0であり、三条件が成り立ってa=12c+12d∈[c,d]a=\frac12c+\frac12d\in[c,d]である。a=(1,2)a=(1,2)ならばD(c,d,a)=D(c,d,b)=2D(c,d,a)=D(c,d,b)=2であり、D(c,d,a)D(c,d,b)=4>0D(c,d,a)D(c,d,b)=4>0であるから[a,b]∩[c,d]=∅[a,b]\cap[c,d]=\emptysetである。

系 4.4.FFを浮動小数点数系とし、a,b,c,d∈F2a,b,c,d\in F^2とする。四つの三つ組(a,b,c)(a,b,c)、(a,b,d)(a,b,d)、(c,d,a)(c,d,a)、(c,d,b)(c,d,b)のフィルタ付き向き判定が返す値をそれぞれσ1,σ2,σ3,σ4\sigma_1,\sigma_2,\sigma_3,\sigma_4とする。[a,b]∩[c,d]≠∅[a,b]\cap[c,d]\ne\emptysetであることは、j∈{x,y}j\in\{x,y\}のそれぞれについて

max⁡{min⁡{aj,bj},min⁡{cj,dj}}≤min⁡{max⁡{aj,bj},max⁡{cj,dj}}\max\{\min\{a_j,b_j\},\min\{c_j,d_j\}\}\le\min\{\max\{a_j,b_j\},\max\{c_j,d_j\}\}

が成り立ち、かつσ1σ2≤0\sigma_1\sigma_2\le0、σ3σ4≤0\sigma_3\sigma_4\le0であることと同値である。この判定は有理数の有限回の四則演算と大小比較で終了する。

証明.定理 3.4 (1)によりσ1=sgn⁡D(a,b,c)\sigma_1=\operatorname{sgn}D(a,b,c)、σ2=sgn⁡D(a,b,d)\sigma_2=\operatorname{sgn}D(a,b,d)、σ3=sgn⁡D(c,d,a)\sigma_3=\operatorname{sgn}D(c,d,a)、σ4=sgn⁡D(c,d,b)\sigma_4=\operatorname{sgn}D(c,d,b)である。実数u,wu,wについてsgn⁡(uw)=sgn⁡usgn⁡w\operatorname{sgn}(uw)=\operatorname{sgn}u\operatorname{sgn}wであるから、σ1σ2≤0\sigma_1\sigma_2\le0は定理 4.2 条件 (b)と同値であり、σ3σ4≤0\sigma_3\sigma_4\le0は定理 4.2 条件 (c)と同値である。実数p≤qp\le q、r≤wr\le wについて閉区間[p,q][p,q]と[r,w][r,w]が交わることはmax⁡{p,r}≤min⁡{q,w}\max\{p,r\}\le\min\{q,w\}と同値であるから、座標の不等式は定理 4.2 条件 (a)と同値である。したがって定理 4.2により同値性が成り立つ。四回のフィルタ付き向き判定は定理 3.4 (1)により有限回の演算と比較で終了し、座標の不等式はFFの元の有限回の比較で判定される。▨

例 4.5.F:=F(2,53,−1022,1023)F:=F(2,53,-1022,1023)、fl⁡\operatorname{fl}をFFの最近接偶数丸め、n:=227n:=2^{27}とし、a:=(0,0)a:=(0,0)、b:=(n,n−1)b:=(n,n-1)、c:=(n+1,n)c:=(n+1,n)を例 2.2の点、e:=(n,n−2)e:=(n,n-2)とする。閉線分[a,c][a,c]と[b,e][b,e]について

D(a,c,b)=(n+1)(n−1)−n⋅n=−1,D(a,c,e)=(n+1)(n−2)−n⋅n=−n−2D(a,c,b)=(n+1)(n-1)-n\cdot n=-1,\qquad D(a,c,e)=(n+1)(n-2)-n\cdot n=-n-2

であり、D(a,c,b)D(a,c,e)=n+2>0D(a,c,b)D(a,c,e)=n+2>0であるから、定理 4.2により[a,c]∩[b,e]=∅[a,c]\cap[b,e]=\emptysetである。またD(b,e,a)=0⋅(−(n−1))−(−1)(−n)=−nD(b,e,a)=0\cdot(-(n-1))-(-1)(-n)=-n、D(b,e,c)=0⋅1−(−1)⋅1=1D(b,e,c)=0\cdot1-(-1)\cdot1=1である。

D^(a,c,b)\widehat D(a,c,b)の二つの積の厳密な結果は(n+1)(n−1)=254−1(n+1)(n-1)=2^{54}-1とn⋅n=254n\cdot n=2^{54}であり、例 2.2によりq1=q2=254q_1=q_2=2^{54}、D^(a,c,b)=0\widehat D(a,c,b)=0である。残りの三つの浮動小数点評価では、各演算の厳密な結果はn⋅n=254n\cdot n=2^{54}、(n+1)(n−2)=2(253−226−1)(n+1)(n-2)=2(2^{53}-2^{26}-1)、または絶対値が2532^{53}以下の整数であり、第1のものは例 2.2により、第2のものは§E20.1 補題 1.2 (1)により、第3のものは§E20.1 補題 1.3 (1)によりFFに属する。§E20.1 系 3.2 (1)によりこれらの演算は正確であり、D^(a,c,e)=−n−2\widehat D(a,c,e)=-n-2、D^(b,e,a)=−n\widehat D(b,e,a)=-n、D^(b,e,c)=1\widehat D(b,e,c)=1である。したがってD^(a,c,b)D^(a,c,e)=0≤0\widehat D(a,c,b)\widehat D(a,c,e)=0\le0、D^(b,e,a)D^(b,e,c)=−n≤0\widehat D(b,e,a)\widehat D(b,e,c)=-n\le0であり、xx座標の閉区間[0,n+1][0,n+1]と[n,n][n,n]、yy座標の閉区間[0,n][0,n]と[n−2,n−1][n-2,n-1]も交わるので、定理 4.2のDDをD^\widehat Dに替えた判定は交わると答える。

(a,c,b)(a,c,b)のフィルタ付き向き判定では、積の区間はout⁡F([254−1,254−1])=[254−2,254]\operatorname{out}_F([2^{54}-1,2^{54}-1])=[2^{54}-2,2^{54}]と[254,254][2^{54},2^{54}]であり、EF(X)=[−2,0]E_F(X)=[-2,0]は00を含むので手順定義 3.3 (2)へ進み、D(A,C,B)=22148D(a,c,b)=−22148D(A,C,B)=2^{2148}D(a,c,b)=-2^{2148}からσ1=−1\sigma_1=-1を返す。残りの三つの三つ組では、各区間演算の結果がFFの元を端点とする一点区間であり、§E20.36 定理 3.3 (1)により外向き丸めで変わらないので、EF(X)E_F(X)はそれぞれ{−n−2}\{-n-2\}、{−n}\{-n\}、{1}\{1\}であり、手順定義 3.3 (1)がσ2=−1\sigma_2=-1、σ3=−1\sigma_3=-1、σ4=1\sigma_4=1を返す。σ1σ2=1>0\sigma_1\sigma_2=1>0であるから、系 4.4の判定は交わらないと答える。

注意 4.6.F:=F(2,53,−1022,1023)F:=F(2,53,-1022,1023)とし、a:=(0,0)a:=(0,0)、b:=(3,1)b:=(3,1)、c:=(1,0)c:=(1,0)、d:=(1,1)d:=(1,1)とすると、D(a,b,c)=−1D(a,b,c)=-1、D(a,b,d)=2D(a,b,d)=2、D(c,d,a)=1D(c,d,a)=1、D(c,d,b)=−2D(c,d,b)=-2であり、座標の閉区間も交わるので、定理 4.2により[a,b]∩[c,d]≠∅[a,b]\cap[c,d]\ne\emptysetである。[a,b][a,b]の点は(3t,t)(3t,t)(t∈[0,1]t\in[0,1])であり、[c,d][c,d]の点のxx座標は11であるから、[a,b]∩[c,d]={(1,1/3)}[a,b]\cap[c,d]=\{(1,1/3)\}である。§E20.1 補題 1.2 (3)によりFFの元は整数k,e′k,e'によってk2e′k2^{e'}と書かれ、1/3=k2e′1/3=k2^{e'}は、e′≥0e'\ge0ならば右辺が整数であることに、e′<0e'<0ならば3k=2−e′3k=2^{-e'}となることに反する。四点の座標0,1,30,1,3はFFに属するが、交点(1,1/3)(1,1/3)はF2F^2に属さないので、系 4.4が交わると正しく判定しても、交点をF2F^2の元で表すと誤差が生じる。

5 近似された入力

例 5.1.

  1. F:=F(2,53,−1022,1023)F:=F(2,53,-1022,1023)、n:=227n:=2^{27}とし、a,b,ca,b,cを例 2.2の点とする。ε:=2/(2n+1)\varepsilon:=2/(2n+1)、b∗:=(n,n−1+ε)b^*:=(n,n-1+\varepsilon)と置くと、ε<1/n=2−27\varepsilon<1/n=2^{-27}である。n−1∈[226,227)n-1\in[2^{26},2^{27})であるから、§E20.1 補題 1.2 (4)によりn−1n-1より大きいFFの元のうち最小のものはn−1+s26=n−1+2−26n-1+s_{26}=n-1+2^{-26}である。y≤n−1y\le n-1を満たすy∈Fy\in Fは∣y−by∗∣≥ε|y-b^*_y|\ge\varepsilonを満たし、等号はy=n−1y=n-1のときに限る。y≥n−1+2−26y\ge n-1+2^{-26}を満たすy∈Fy\in Fは∣y−by∗∣≥2−26−ε>2−27>ε|y-b^*_y|\ge2^{-26}-\varepsilon>2^{-27}>\varepsilonを満たす。したがってby∗b^*_yの最近接点はn−1n-1だけであり、bx∗=n∈Fb^*_x=n\in Fであるから、任意の最近接丸めはb∗b^*の座標をbbの座標へ写す。一方 D(a,b∗,c)=n⋅n−(n−1+ε)(n+1)=1−ε(n+1)=−12n+1<0D(a,b^*,c)=n\cdot n-(n-1+\varepsilon)(n+1)=1-\varepsilon(n+1)=-\frac1{2n+1}<0 である。フィルタ付き向き判定は保存された入力(a,b,c)(a,b,c)の向き11を返すが、保存値が(a,b,c)(a,b,c)となる配置(a,b∗,c)(a,b^*,c)の向きは−1-1である。箱X:={0}×{0}×{n}×[n−1−2−27,n−1+2−27]×{n+1}×{n}X:=\{0\}\times\{0\}\times\{n\}\times[n-1-2^{-27},n-1+2^{-27}]\times\{n+1\}\times\{n\}は(a,b,c)(a,b,c)と(a,b∗,c)(a,b^*,c)の座標を含むので、系 3.2の式EEについて、§E20.36 定理 4.2 (1)によりE(X)E(X)は11と−1/(2n+1)-1/(2n+1)を含み、したがって00を含む。
  2. X:=[−12,12]×[−12,12]×{1}×{0}×{1}×{1}X:=[-\frac12,\frac12]\times[-\frac12,\frac12]\times\{1\}\times\{0\}\times\{1\}\times\{1\}とし、系 3.2の式EEの自然区間拡張を§E20.36 定理 2.3 (1)によって計算すると E(X)=[12,32]⋅[12,32]−[−12,12]⋅[12,32]=[14,94]−[−34,34]=[−12,3]E(X)=[\tfrac12,\tfrac32]\cdot[\tfrac12,\tfrac32]-[-\tfrac12,\tfrac12]\cdot[\tfrac12,\tfrac32]=[\tfrac14,\tfrac94]-[-\tfrac34,\tfrac34]=[-\tfrac12,3] であり、E(X)E(X)は00を含む。一方、XXの点ではb=(1,0)b=(1,0)、c=(1,1)c=(1,1)であり D(a,b,c)=(1−ax)(1−ay)−(−ay)(1−ax)=1−ax≥12D(a,b,c)=(1-a_x)(1-a_y)-(-a_y)(1-a_x)=1-a_x\ge\tfrac12 であるから、XXの全体で向きは11である。E(X)E(X)が00を含むことからは、XXの中で向きが変わることは従わない。

6 演習

問題 6.1.F:=F(2,53,−1022,1023)F:=F(2,53,-1022,1023)、fl⁡\operatorname{fl}をFFの最近接丸めとし、a,b,c∈Z2a,b,c\in\Z^2の座標の絶対値がすべて2252^{25}以下であるとする。D^(a,b,c)\widehat D(a,b,c)が定まり、D^(a,b,c)=D(a,b,c)\widehat D(a,b,c)=D(a,b,c)が成り立つことを示せ。

解答.

s52=1s_{52}=1であるから、§E20.1 補題 1.3 (1)をe=52e=52として適用すると、絶対値が2532^{53}以下の整数はFFに属する。a,b,ca,b,cの座標はFFに属する。四つの差の厳密な結果は絶対値が2262^{26}以下の整数であるからFFに属し、§E20.1 系 3.2 (1)によりd1,d2,d3,d4d_1,d_2,d_3,d_4は厳密な差に等しい。二つの積の厳密な結果は絶対値が226⋅226=2522^{26}\cdot2^{26}=2^{52}以下の整数であるからFFに属し、§E20.1 系 3.2 (1)によりq1=d1d2q_1=d_1d_2、q2=d3d4q_2=d_3d_4である。最後の減算の厳密な結果はq1−q2=D(a,b,c)q_1-q_2=D(a,b,c)であり、絶対値が252+252=2532^{52}+2^{52}=2^{53}以下の整数であるからFFに属し、§E20.1 系 3.2 (1)によりD^(a,b,c)=D(a,b,c)\widehat D(a,b,c)=D(a,b,c)である。七つの演算の厳密な結果の絶対値は2532^{53}以下であり、253≤Nmax⁡2^{53}\le N_{\max}であるから、D^(a,b,c)\widehat D(a,b,c)は定まる。▨

前提記事