Library Dekker
Require Export Div2.
Require Export Even.
Require Export Veltkamp.
Section Generic.
Variable b : Fbound.
Variable radix : Z.
Variable p : nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound : Zpos (vNum b) = Zpower_nat radix p.
Hypothesis precisionGreaterThanOne : 1 < p.
Theorem BoundedL: forall (r:R) (x:float) (e:Z),
(e <=Fexp x)%Z -> (-dExp b <= e)%Z -> (FtoRradix x=r)%R ->
(Rabs r < powerRZ radix (e+p))%R ->
(exists x':float, (FtoRradix x'=r) /\ (Fbounded b x') /\ Fexp x'=e).
Theorem ClosestZero: forall (r:R) (x:float),
(Closest b radix r x) -> (r=0)%R -> (FtoRradix x=0)%R.
Theorem Closestbbext: forall bext:Fbound, forall fext f:float,
(vNum bext=vNum b) -> (dExp b < dExp bext)%Z ->
(-dExp b <= Fexp fext)%Z ->
(Closest b radix fext f) -> (Closest bext radix fext f).
Variable b' : Fbound.
Definition Underf_Err (a a' : float) (ra n:R) :=
(Closest b radix ra a) /\ (Fbounded b' a') /\
(Rabs (a-a') <= n*powerRZ radix (-(dExp b)))%R /\
( ((-dExp b) <= Fexp a')%Z -> (FtoRradix a =a')%R).
Theorem Underf_Err1: forall (a' a:float),
vNum b=vNum b' -> (dExp b <= dExp b')%Z ->
(Fbounded b' a') -> (Closest b radix a' a) ->
(Underf_Err a a' (FtoRradix a') (/2)%R).
Theorem Underf_Err2_aux: forall (r:R) (x1:float),
vNum b=vNum b' -> (dExp b <= dExp b')%Z ->
(Fcanonic radix b x1) ->
(Closest b radix r x1) ->
(exists x2:float, (Underf_Err x1 x2 r (3/4)%R) /\ (Closest b' radix r x2)).
Theorem Underf_Err2: forall (r:R) (x1:float),
vNum b=vNum b' -> (dExp b <= dExp b')%Z ->
(Closest b radix r x1) ->
(exists x2:float, (Underf_Err x1 x2 r (3/4)%R) /\ (Closest b' radix r x2)).
Theorem Underf_Err3: forall (x x' y y' z' z:float) (rx ry epsx epsy:R),
vNum b=vNum b' -> (dExp b <= dExp b')%Z ->
(Underf_Err x x' rx epsx) -> (Underf_Err y y' ry epsy) ->
(epsx+epsy <= (powerRZ radix (p-1) -1))%R ->
(Fbounded b' z') -> (FtoRradix z'=x'-y')%R ->
(Fexp z' <= Fexp x')%Z -> (Fexp z' <= Fexp y')%Z ->
(Closest b radix (x-y) z) ->
(Underf_Err z z' (x-y) (epsx+epsy)%R).
Theorem Underf_Err3_bis: forall (x x' y y' z' z:float) (rx ry epsx epsy:R),
(4 <= p) ->
vNum b=vNum b' -> (dExp b <= dExp b')%Z ->
(Underf_Err x x' rx epsx) -> (Underf_Err y y' ry epsy) ->
(epsx+epsy <= 7)%R ->
(Fbounded b' z') -> (FtoRradix z'=x'-y')%R ->
(Fexp z' <= Fexp x')%Z -> (Fexp z' <= Fexp y')%Z ->
(Closest b radix (x-y) z) ->
(Underf_Err z z' (x-y) (epsx+epsy)%R).
End Generic.
Section Sec1.
Variable radix : Z.
Variable b : Fbound.
Variables s t:nat.
Let b' := Bound
(P_of_succ_nat (pred (Zabs_nat (Zpower_nat radix (minus t s)))))
(dExp b).
Let bt := Bound
(P_of_succ_nat (pred (Zabs_nat (Zpower_nat radix s))))
(dExp b).
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypothesis SLe: (2 <= s)%nat.
Hypothesis SGe: (s <= t-2)%nat.
Hypothesis Hst1: (t-1 <= s+s)%Z.
Hypothesis Hst2: (s+s <= t+1)%Z.
Variables x x1 x2 y y1 y2 r e: float.
Hypotheses Nx: Fnormal radix b x.
Hypotheses Ny: Fnormal radix b y.
Hypothesis K: (-dExp b <= Fexp x +Fexp y)%Z.
Hypotheses rDef: Closest b radix (x*y) r.
Hypotheses eeq: (x*y=r+e)%R.
Hypotheses Xeq: (FtoRradix x=x1+x2)%R.
Hypotheses Yeq: (FtoRradix y=y1+y2)%R.
Hypotheses x2Le: (Rabs x2 <= (powerRZ radix (s+Fexp x)) /2)%R.
Hypotheses y2Le: (Rabs y2 <= (powerRZ radix (s+Fexp y)) /2)%R.
Hypotheses x1Exp: (s+Fexp x <= Fexp x1)%Z.
Hypotheses y1Exp: (s+Fexp y <= Fexp y1)%Z.
Hypotheses x2Exp: (Fexp x <= Fexp x2)%Z.
Hypotheses y2Exp: (Fexp y <= Fexp y2)%Z.
Lemma x2y2Le: (Rabs (x2*y2) <= (powerRZ radix (2*s+Fexp x+Fexp y)) /4)%R.
Lemma x2y1Le: (Rabs (x2*y1) < (powerRZ radix (t+s+Fexp x+Fexp y)) /2
+ (powerRZ radix (2*s+Fexp x+Fexp y)) /4)%R.
Lemma x1y2Le: (Rabs (x1*y2) < (powerRZ radix (t+s+Fexp x+Fexp y)) /2
+ (powerRZ radix (2*s+Fexp x+Fexp y)) /4)%R.
Lemma eLe: (Rabs e <= (powerRZ radix (t+Fexp x+Fexp y)) /2)%R.
Lemma rExp: (t - 1 + Fexp x + Fexp y <= Fexp r)%Z.
Lemma powerRZSumRle:forall (e1 e2:Z),
(e2<= e1)%Z ->
(powerRZ radix e1 + powerRZ radix e2 <= powerRZ radix (e1+1))%R.
Lemma Boundedt1: (exists x':float, (FtoRradix x'=r-x1*y1)%R /\ (Fbounded b x')
/\ (Fexp x'=t-1+Fexp x+Fexp y)%Z).
Lemma Boundedt2: (exists x':float, (FtoRradix x'=r-x1*y1-x1*y2)%R /\ (Fbounded b x')
/\ (Fexp x'=s+Fexp x+Fexp y)%Z).
Lemma Boundedt3: (exists x':float, (FtoRradix x'=r-x1*y1-x1*y2-x2*y1)%R /\ (Fbounded b x')
/\ (Fexp x'=s+Fexp x+Fexp y)%Z).
Lemma Boundedt4: (exists x':float, (FtoRradix x'=r-x1*y1-x1*y2-x2*y1-x2*y2)%R /\ (Fbounded b x')).
Lemma Boundedt4_aux: (exists x':float, (FtoRradix x'=r-x1*y1-x1*y2-x2*y1-x2*y2)%R /\ (Fbounded b x')
/\ (Fexp x'=Fexp x+Fexp y)%Z).
Hypotheses Fx1: Fbounded b' x1.
Hypotheses Fx2: Fbounded bt x2.
Hypotheses Fy1: Fbounded b' y1.
Hypotheses Fy2: Fbounded bt y2.
Hypothesis Hst3: (t <= s+s)%Z.
Lemma p''GivesBound: Zpos (vNum bt)=(Zpower_nat radix s).
Lemma Boundedx1y1_aux: (exists x':float, (FtoRradix x'=x1*y1)%R /\ (Fbounded b x')
/\ (Fexp x'=Fexp x1+Fexp y1)%Z ).
Lemma Boundedx1y1: (exists x':float, (FtoRradix x'=x1*y1)%R /\ (Fbounded b x')).
Lemma Boundedx1y2_aux: (exists x':float, (FtoRradix x'=x1*y2)%R /\ (Fbounded b x')
/\ (Fexp x'=Fexp x1+Fexp y2)%Z ).
Lemma Boundedx1y2: (exists x':float, (FtoRradix x'=x1*y2)%R /\ (Fbounded b x')).
Lemma Boundedx2y1_aux: (exists x':float, (FtoRradix x'=x2*y1)%R /\ (Fbounded b x')
/\ (Fexp x'=Fexp x2+Fexp y1)%Z ).
Lemma Boundedx2y1: (exists x':float, (FtoRradix x'=x2*y1)%R /\ (Fbounded b x')).
End Sec1.
Section Algo.
Variable radix : Z.
Variable b : Fbound.
Variables t:nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypotheses pGe: (4 <= t).
Variables x y p q hx tx p' q' hy ty x1y1 x1y2 x2y1 x2y2 r t1 t2 t3 t4:float.
Hypothesis Cx: (Fnormal radix b x).
Hypothesis Cy: (Fnormal radix b y).
Hypothesis Expoxy: (-dExp b <= Fexp x+Fexp y)%Z.
Let s:= t- div2 t.
Hypothesis A1: (Closest b radix (x*((powerRZ radix s)+1))%R p).
Hypothesis A2: (Closest b radix (x-p)%R q).
Hypothesis A3: (Closest b radix (q+p)%R hx).
Hypothesis A4: (Closest b radix (x-hx)%R tx).
Hypothesis B1: (Closest b radix (y*((powerRZ radix s)+1))%R p').
Hypothesis B2: (Closest b radix (y-p')%R q').
Hypothesis B3: (Closest b radix (q'+p')%R hy).
Hypothesis B4: (Closest b radix (y-hy)%R ty).
Hypothesis C1: (Closest b radix (hx*hy)%R x1y1).
Hypothesis C2: (Closest b radix (hx*ty)%R x1y2).
Hypothesis C3: (Closest b radix (tx*hy)%R x2y1).
Hypothesis C4: (Closest b radix (tx*ty)%R x2y2).
Hypothesis D1: (Closest b radix (x*y)%R r).
Hypothesis D2: (Closest b radix (r-x1y1)%R t1).
Hypothesis D3: (Closest b radix (t1-x1y2)%R t2).
Hypothesis D4: (Closest b radix (t2-x2y1)%R t3).
Hypothesis D5: (Closest b radix (t3-x2y2)%R t4).
Lemma SLe: (2 <= s)%nat.
Lemma SGe: (s <= t-2)%nat.
Lemma s2Ge: (t <= s + s)%Z.
Lemma s2Le: (s + s <= t + 1)%Z.
Theorem Dekker_aux: (exists x':float, (FtoRradix x'=tx*ty)%R /\ (Fbounded b x'))
-> (x*y=r-t4)%R.
Theorem Boundedx2y2: (radix=2)%Z \/ (even t) ->
(exists x':float, (FtoRradix x'=tx*ty)%R /\ (Fbounded b x') /\ (Fexp x+Fexp y <= Fexp x')%Z).
Theorem DekkerN: (radix=2)%Z \/ (even t) -> (x*y=r-t4)%R.
End Algo.
Section AlgoS1.
Variable radix : Z.
Variable b : Fbound.
Variables t:nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypotheses pGe: (4 <= t).
Variables x y p q hx tx p' q' hy ty x1y1 x1y2 x2y1 x2y2 r t1 t2 t3 t4:float.
Hypothesis Cx: (Fnormal radix b x).
Hypothesis Cy: (Fsubnormal radix b y).
Hypothesis Expoxy: (-dExp b <= Fexp x+Fexp y)%Z.
Let s:= t- div2 t.
Hypothesis A1: (Closest b radix (x*((powerRZ radix s)+1))%R p).
Hypothesis A2: (Closest b radix (x-p)%R q).
Hypothesis A3: (Closest b radix (q+p)%R hx).
Hypothesis A4: (Closest b radix (x-hx)%R tx).
Hypothesis B1: (Closest b radix (y*((powerRZ radix s)+1))%R p').
Hypothesis B2: (Closest b radix (y-p')%R q').
Hypothesis B3: (Closest b radix (q'+p')%R hy).
Hypothesis B4: (Closest b radix (y-hy)%R ty).
Hypothesis C1: (Closest b radix (hx*hy)%R x1y1).
Hypothesis C2: (Closest b radix (hx*ty)%R x1y2).
Hypothesis C3: (Closest b radix (tx*hy)%R x2y1).
Hypothesis C4: (Closest b radix (tx*ty)%R x2y2).
Hypothesis D1: (Closest b radix (x*y)%R r).
Hypothesis D2: (Closest b radix (r-x1y1)%R t1).
Hypothesis D3: (Closest b radix (t1-x1y2)%R t2).
Hypothesis D4: (Closest b radix (t2-x2y1)%R t3).
Hypothesis D5: (Closest b radix (t3-x2y2)%R t4).
Theorem DekkerS1: (radix=2)%Z \/ (even t) -> (x*y=r-t4)%R.
End AlgoS1.
Section AlgoS2.
Variable radix : Z.
Variable b : Fbound.
Variables t:nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypotheses pGe: (4 <= t).
Variables x y p q hx tx p' q' hy ty x1y1 x1y2 x2y1 x2y2 r t1 t2 t3 t4:float.
Hypothesis Cx: (Fsubnormal radix b x).
Hypothesis Cy: (Fnormal radix b y).
Hypothesis Expoxy: (-dExp b <= Fexp x+Fexp y)%Z.
Let s:= t- div2 t.
Hypothesis A1: (Closest b radix (x*((powerRZ radix s)+1))%R p).
Hypothesis A2: (Closest b radix (x-p)%R q).
Hypothesis A3: (Closest b radix (q+p)%R hx).
Hypothesis A4: (Closest b radix (x-hx)%R tx).
Hypothesis B1: (Closest b radix (y*((powerRZ radix s)+1))%R p').
Hypothesis B2: (Closest b radix (y-p')%R q').
Hypothesis B3: (Closest b radix (q'+p')%R hy).
Hypothesis B4: (Closest b radix (y-hy)%R ty).
Hypothesis C1: (Closest b radix (hx*hy)%R x1y1).
Hypothesis C2: (Closest b radix (hx*ty)%R x1y2).
Hypothesis C3: (Closest b radix (tx*hy)%R x2y1).
Hypothesis C4: (Closest b radix (tx*ty)%R x2y2).
Hypothesis D1: (Closest b radix (x*y)%R r).
Hypothesis D2: (Closest b radix (r-x1y1)%R t1).
Hypothesis D3: (Closest b radix (t1-x1y2)%R t2).
Hypothesis D4: (Closest b radix (t2-x2y1)%R t3).
Hypothesis D5: (Closest b radix (t3-x2y2)%R t4).
Theorem DekkerS2: (radix=2)%Z \/ (even t) -> (x*y=r-t4)%R.
End AlgoS2.
Section Algo1.
Variable radix : Z.
Variable b : Fbound.
Variables t:nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypotheses pGe: (4 <= t).
Variables x y p q hx tx p' q' hy ty x1y1 x1y2 x2y1 x2y2 r t1 t2 t3 t4:float.
Hypothesis Cx: (Fcanonic radix b x).
Hypothesis Cy: (Fcanonic radix b y).
Hypothesis Expoxy: (-dExp b <= Fexp x+Fexp y)%Z.
Let s:= t- div2 t.
Hypothesis A1: (Closest b radix (x*((powerRZ radix s)+1))%R p).
Hypothesis A2: (Closest b radix (x-p)%R q).
Hypothesis A3: (Closest b radix (q+p)%R hx).
Hypothesis A4: (Closest b radix (x-hx)%R tx).
Hypothesis B1: (Closest b radix (y*((powerRZ radix s)+1))%R p').
Hypothesis B2: (Closest b radix (y-p')%R q').
Hypothesis B3: (Closest b radix (q'+p')%R hy).
Hypothesis B4: (Closest b radix (y-hy)%R ty).
Hypothesis C1: (Closest b radix (hx*hy)%R x1y1).
Hypothesis C2: (Closest b radix (hx*ty)%R x1y2).
Hypothesis C3: (Closest b radix (tx*hy)%R x2y1).
Hypothesis C4: (Closest b radix (tx*ty)%R x2y2).
Hypothesis D1: (Closest b radix (x*y)%R r).
Hypothesis D2: (Closest b radix (r-x1y1)%R t1).
Hypothesis D3: (Closest b radix (t1-x1y2)%R t2).
Hypothesis D4: (Closest b radix (t2-x2y1)%R t3).
Hypothesis D5: (Closest b radix (t3-x2y2)%R t4).
Hypothesis dExpPos: ~(Z_of_N(dExp b)=0)%Z.
Theorem Dekker1: (radix=2)%Z \/ (even t) -> (x*y=r-t4)%R.
End Algo1.
Section Algo2.
Variable radix : Z.
Variable b : Fbound.
Variables t:nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypotheses pGe: (4 <= t).
Let s:= t- div2 t.
Variables x y:float.
Let b' := Bound (vNum b) (Nplus (Ndouble (dExp b)) (Ndouble (Npos (P_of_succ_nat t)))).
Theorem Veltkampb': forall (f pf qf hf tf:float),
(dExp b < dExp b')%Z ->
(Fbounded b f) ->
Closest b radix (f * (powerRZ radix s + 1)) pf -> Closest b radix (f - pf) qf ->
Closest b radix (qf + pf) hf -> Closest b radix (f - hf) tf ->
Closest b' radix (f * (powerRZ radix s + 1)) pf /\
Closest b' radix (f - pf) qf /\ Closest b' radix (qf + pf) hf /\
Closest b' radix (f - hf) tf.
Variables p q hx tx p' q' hy ty x1y1 x1y2 x2y1 x2y2 r t1 t2 t3 t4:float.
Hypothesis Cx: (Fcanonic radix b x).
Hypothesis Cy: (Fcanonic radix b y).
Hypothesis Expoxy: (Fexp x+Fexp y < -dExp b)%Z.
Hypothesis A1: (Closest b radix (x*((powerRZ radix s)+1))%R p).
Hypothesis A2: (Closest b radix (x-p)%R q).
Hypothesis A3: (Closest b radix (q+p)%R hx).
Hypothesis A4: (Closest b radix (x-hx)%R tx).
Hypothesis B1: (Closest b radix (y*((powerRZ radix s)+1))%R p').
Hypothesis B2: (Closest b radix (y-p')%R q').
Hypothesis B3: (Closest b radix (q'+p')%R hy).
Hypothesis B4: (Closest b radix (y-hy)%R ty).
Hypothesis C1: (Closest b radix (hx*hy)%R x1y1).
Hypothesis C2: (Closest b radix (hx*ty)%R x1y2).
Hypothesis C3: (Closest b radix (tx*hy)%R x2y1).
Hypothesis C4: (Closest b radix (tx*ty)%R x2y2).
Hypothesis D1: (Closest b radix (x*y)%R r).
Hypothesis D2: (Closest b radix (r-x1y1)%R t1).
Hypothesis D3: (Closest b radix (t1-x1y2)%R t2).
Hypothesis D4: (Closest b radix (t2-x2y1)%R t3).
Hypothesis D5: (Closest b radix (t3-x2y2)%R t4).
Theorem dExpPrim: (dExp b < dExp b')%Z.
Theorem dExpPrimEq: (Z_of_N (Ndouble (dExp b) + Npos (xO (P_of_succ_nat t)))
=2*(dExp b)+2*t+2)%Z.
Theorem NormalbPrim: forall (f:float), Fcanonic radix b f -> (FtoRradix f <>0) ->
(exists f':float, (Fnormal radix b' f') /\ FtoRradix f'=f /\ (-t-dExp b <= Fexp f')%Z).
Theorem Dekker2_aux:
(FtoRradix x <>0) -> (FtoRradix y <>0) ->
(radix=2)%Z \/ (even t) -> (Rabs (x*y-(r-t4)) <= (7/2)*powerRZ radix (-(dExp b)))%R.
Theorem Dekker2:
(radix=2)%Z \/ (even t) -> (Rabs (x*y-(r-t4)) <= (7/2)*powerRZ radix (-(dExp b)))%R.
End Algo2.
Section AlgoT.
Variable radix : Z.
Variable b : Fbound.
Variables t:nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Let radixMoreThanZERO := Zlt_1_O _ (Zlt_le_weak _ _ radixMoreThanOne).
Hint Resolve radixMoreThanZERO: zarith.
Hypothesis pGivesBound: Zpos (vNum b)=(Zpower_nat radix t).
Hypotheses pGe: (4 <= t).
Variables x y p q hx tx p' q' hy ty x1y1 x1y2 x2y1 x2y2 r t1 t2 t3 t4:float.
Hypothesis Cx: (Fcanonic radix b x).
Hypothesis Cy: (Fcanonic radix b y).
Let s:= t- div2 t.
Hypothesis A1: (Closest b radix (x*((powerRZ radix s)+1))%R p).
Hypothesis A2: (Closest b radix (x-p)%R q).
Hypothesis A3: (Closest b radix (q+p)%R hx).
Hypothesis A4: (Closest b radix (x-hx)%R tx).
Hypothesis B1: (Closest b radix (y*((powerRZ radix s)+1))%R p').
Hypothesis B2: (Closest b radix (y-p')%R q').
Hypothesis B3: (Closest b radix (q'+p')%R hy).
Hypothesis B4: (Closest b radix (y-hy)%R ty).
Hypothesis C1: (Closest b radix (hx*hy)%R x1y1).
Hypothesis C2: (Closest b radix (hx*ty)%R x1y2).
Hypothesis C3: (Closest b radix (tx*hy)%R x2y1).
Hypothesis C4: (Closest b radix (tx*ty)%R x2y2).
Hypothesis D1: (Closest b radix (x*y)%R r).
Hypothesis D2: (Closest b radix (-r+x1y1)%R t1).
Hypothesis D3: (Closest b radix (t1+x1y2)%R t2).
Hypothesis D4: (Closest b radix (t2+x2y1)%R t3).
Hypothesis D5: (Closest b radix (t3+x2y2)%R t4).
Hypothesis dExpPos: ~(Z_of_N (dExp b)=0)%Z.
Theorem Dekker: (radix=2)%Z \/ (even t) ->
((-dExp b <= Fexp x+Fexp y)%Z -> (x*y=r+t4)%R) /\
(Rabs (x*y-(r+t4)) <= (7/2)*powerRZ radix (-(dExp b)))%R.
End AlgoT.