Library FIA64elem
IEEE754 : FIA64elem
Copyright Sylvie Boldo 2002 Theorems based on "IA 64 and elementary function" by Markstein 2000.
Require Export AllFloat.
Section FulpRinv.
Variable b : Fbound.
Variable radix : Z.
Variable precision : nat.
Let FtoRradix := FtoR radix.
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne : (1 < radix)%Z.
Hypothesis precisionGreaterThanOne : 1 < precision.
Hypothesis pGivesBound : Zpos (vNum b) = Zpower_nat radix precision.
Theorem Fabs_Fexp : forall f : float, Fexp f = Fexp (Fabs f).
Theorem Fulp_pow :
forall (f : float) (n : Z),
(- dExp b <= n + Zsucc (- precision))%Z ->
Fbounded b f ->
Rabs f = powerRZ radix n :>R ->
Fulp b radix precision f = powerRZ radix (n + Zsucc (- precision)).
Theorem Fulp_R1 :
forall f : float,
(- dExp b <= Zsucc (- precision))%Z ->
Fbounded b f ->
f = 1%R :>R ->
Fulp b radix precision f = powerRZ radix (Zsucc (- precision)).
Result to complete cases of Theorem 6.8 defined p. 92
Theorem FulpRinv_div :
forall P (f u : float) (n : Z),
RoundedModeP b radix P ->
Fbounded b f ->
Fbounded b u ->
P (/ f)%R u ->
Rabs f = powerRZ radix n :>R ->
(- dExp b + Zpred precision <= n)%Z ->
(n <= dExp b + Zsucc (- precision))%Z ->
(Fulp b radix precision f * Fulp b radix precision u)%R =
Rsqr (powerRZ radix (Zsucc (- precision))).
Theorem boundedNorMinGivesExp2 :
forall (x : Z) (p : float),
Fbounded b p ->
(- dExp b <= x)%Z ->
(Float (nNormMin radix precision) x <= Rabs p)%R ->
(Rabs p <= Float (pPred (vNum b)) x)%R ->
Fexp (Fnormalize radix b precision p) = x :>Z.
Theorem 6.9 defined p. 93, used for example p. 121 and p. 131
Theorem FulpRinv_div_not :
forall P (f u : float),
RoundedModeP b radix P ->
Fbounded b f ->
Fbounded b u ->
f <> 0%R :>R ->
P (/ f)%R u ->
(forall n : Z, Rabs f <> powerRZ radix n :>R) ->
Fnormal radix b f ->
(- dExp b <= 1 + (- Fexp f + (- precision + - precision)))%Z ->
(radix * (Fulp b radix precision f * Fulp b radix precision u))%R =
Rsqr (powerRZ radix (Zsucc (- precision))).
End FulpRinv.