Library ThreeSumProps
Require Export ThreeSum2.
Section F2.
Variable b : Fbound.
Variable precision : nat.
Let radix := 2%Z.
Let TMTO : (1 < radix)%Z := TwoMoreThanOne.
Hint Resolve TMTO: zarith.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis precisionNotZero : 1 < precision.
Hypothesis pGivesBound : Zpos (vNum b) = Zpower_nat radix precision.
Variables (p : float) (q : float) (r : float) (u : float) (
v : float) (w : float) (p' : float) (q' : float) (
r' : float).
Hypothesis Fp : Fbounded b p.
Hypothesis Fq : Fbounded b q.
Hypothesis Fr : Fbounded b r.
Hypothesis Fu : Fbounded b u.
Hypothesis Fv : Fbounded b v.
Hypothesis Fw : Fbounded b w.
Hypothesis Fp' : Fbounded b p'.
Hypothesis Fq' : Fbounded b q'.
Hypothesis Fr' : Fbounded b r'.
Hypothesis epq : (Fexp q <= Fexp p)%Z.
Hypothesis eqr : (Fexp r <= Fexp q)%Z.
Hypothesis uDef : Closest b radix (q + r) u.
Hypothesis vDef : v = (q + r - u)%R :>R.
Hypothesis p'Def : Closest b radix (p + u) p'.
Hypothesis wDef : w = (p + u - p')%R :>R.
Hypothesis q'Def : Closest b radix (w + v) q'.
Hypothesis r'Def : r' = (w + v - q')%R :>R.
Hypothesis Ngd : (1 <= pPred (vNum b) * (1 - / radix))%R.
Hypothesis
Hplus :
(p = 0%R :>R \/ q = 0%R :>R \/ r = 0%R :>R) \/
(Rabs q <= pPred (vNum b) * (Float 1%nat (Fexp p) - Float 1%nat (Fexp r)))%R.
Hypothesis Ngd2 : (6%nat <= pPred (vNum b) * (1 - / radix * / radix))%R.
Theorem FTS :
(Rabs q <= pPred (vNum b) * (Float 1%nat (Fexp p) - Float 1%nat (Fexp r)))%R ->
exists u'' : float,
FtoRradix u'' = u /\ Fbounded b u'' /\ (Fexp u'' <= Fexp p)%Z.
Theorem FTSinSum3_allcases :
p <> 0%R :>R ->
exists u'' : float, u'' = u :>R /\ Fbounded b u'' /\ (Fexp u'' <= Fexp p)%Z.
Theorem PuissLessThanHalf :
forall z : Z, (Float 1%nat z * / radix <= Float 1%nat z)%R.
Theorem Rle_Rminus_ZERO : forall r1 r2 : R, (r2 <= r1)%R -> (0 <= r1 - r2)%R.
Theorem ThreeSumLoop :
exists p'' : float,
(exists q'' : float,
(exists r'' : float,
(Fbounded b p'' /\ Fbounded b q'' /\ Fbounded b r'') /\
((p'' = p' :>R /\ q'' = q' :>R /\ r'' = r' :>R) /\
(Fexp r <= Fexp r'')%Z /\
((Fexp r'' <= Fexp q'')%Z /\ (Fexp q'' <= Fexp p'')%Z) /\
Fexp r'' = Fexp r) /\
(r' = 0%R :>R /\
(p'' = 0%R :>R \/
(Rabs q'' <=
pPred (vNum b) * (Float 1%nat (Fexp p'') - Float 1%nat (Fexp r)))%R) \/
r' <> 0%R :>R /\
(Rabs r'' <=
pPred (vNum b) * (Float 1%nat (Fexp q'') - Float 1%nat (Fexp r)))%R))).
End F2.