Fop.v
(****************************************************************************
IEEE754 : Fop
Laurent Thery
*****************************************************************************
*)
Require Import Float.
Require Import Fcomp.
Section operations.
Variable radix:nat.
Local FtoRradix := (FtoR radix).
Coercion FtoRradix : float >-> R.
Hypothesis radixNotZero:~ radix=O.
Definition
Fplus :=
[x, y:float]
(Float
(Zplus
(Zmult
(Fnum x)
(Zpower_nat
(inject_nat radix)
(absolu (Zminus (Fexp x) (Zmin (Fexp x) (Fexp y))))))
(Zmult
(Fnum y)
(Zpower_nat
(inject_nat radix)
(absolu (Zminus (Fexp y) (Zmin (Fexp x) (Fexp y)))))))
(Zmin (Fexp x) (Fexp y))).
Theorem
Fplus_correct: (x, y:float)<R> (Fplus x y)==(Rplus x y).
Definition
Fopp := [x:float](Float (Zopp (Fnum x)) (Fexp x)).
Theorem
Fopp_correct: (x:float)<R> (Fopp x)==(Ropp x).
Theorem
Fopp_Fopp: (p:float)(Fopp (Fopp p))=p.
Theorem
Fzero_opp: (f:float) ~ (is_Fzero f) ->~ (is_Fzero (Fopp f)).
Theorem
Fdigit_opp: (x:float)(Fdigit radix (Fopp x))=(Fdigit radix x).
Definition
Fabs := [x:float](Float (Zabs (Fnum x)) (Fexp x)).
Theorem
Fabs_correct1: (x:float) (Rle R0 (FtoR radix x)) -><R> (Fabs x)==x.
Theorem
Fabs_correct2:
(x:float) (Rle (FtoR radix x) R0) -><R> (Fabs x)==(Ropp x).
Theorem
Fabs_correct: (x:float)<R> (Fabs x)==(Rabsolu x).
Theorem
RleFexpFabs:
(p:float) ~ <R> p==R0 ->(Rle (Float (1) (Fexp p)) (Fabs p)).
Theorem
Fabs_Fzero: (x:float) ~ (is_Fzero x) ->~ (is_Fzero (Fabs x)).
Theorem
Fdigit_abs: (x:float)(Fdigit radix (Fabs x))=(Fdigit radix x).
Definition
Fminus := [x, y:float](Fplus x (Fopp y)).
Theorem
Fminus_correct: (x, y:float)<R> (Fminus x y)==(Rminus x y).
Theorem
Fopp_Fminus: (p, q:float)(Fopp (Fminus p q))=(Fminus q p).
Theorem
Fopp_Fminus_dist:
(p, q:float)(Fopp (Fminus p q))=(Fminus (Fopp p) (Fopp q)).
Theorem
minusSameExp:
(x, y:float) (Fexp x)=(Fexp y) ->
(Fminus x y)=(Float (Zminus (Fnum x) (Fnum y)) (Fexp x)).
Definition
Fmult :=
[x, y:float](Float (Zmult (Fnum x) (Fnum y)) (Zplus (Fexp x) (Fexp y))).
Definition
Fmult_correct: (x, y:float)<R> (Fmult x y)==(Rmult x y).
Theorem
oneZplus:
(x, y:Z)(Float (1) (Zplus x y))=(Fmult (Float (1) x) (Float (1) y)).
End operations.
30/05/01, 18:09