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.