End Double_round_sqrt_beta_ge_4_FLX.
Section Double_round_sqrt_beta_ge_4_FLT.
Variable emin prec : Z.
Variable emin' prec' : Z.
Context { prec_gt_0_ : Prec_gt_0 prec }.
Context { prec_gt_0_' : Prec_gt_0 prec' }.

(* Specifications: *)
Lemma FLT_double_round_sqrt_beta_ge_4_hyp :
(emin <= 0)%Z ->
((emin' <= emin - prec - 1)%Z
\/ (2 * emin' <= emin - 4 * prec)%Z) ->
(2 * prec + 1 <= prec')%Z ->
double_round_sqrt_beta_ge_4_hyp (FLT_exp emin prec) (FLT_exp emin' prec').
Theorem double_round_sqrt_beta_ge_4_FLT :
(4 <= beta)%Z ->
forall choice1 choice2,
(emin <= 0)%Z ->
((emin' <= emin - prec - 1)%Z
\/ (2 * emin' <= emin - 4 * prec)%Z) ->
(2 * prec + 1 <= prec')%Z ->
forall x,
FLT_format beta emin prec x ->
double_round_eq (FLT_exp emin prec) (FLT_exp emin' prec')
choice1 choice2 (sqrt x).
Lemma FLT_double_round_sqrt_beta_ge_4_hyp :
(emin <= 0)%Z ->
((emin' <= emin - prec - 1)%Z
\/ (2 * emin' <= emin - 4 * prec)%Z) ->
(2 * prec + 1 <= prec')%Z ->
double_round_sqrt_beta_ge_4_hyp (FLT_exp emin prec) (FLT_exp emin' prec').
Theorem double_round_sqrt_beta_ge_4_FLT :
(4 <= beta)%Z ->
forall choice1 choice2,
(emin <= 0)%Z ->
((emin' <= emin - prec - 1)%Z
\/ (2 * emin' <= emin - 4 * prec)%Z) ->
(2 * prec + 1 <= prec')%Z ->
forall x,
FLT_format beta emin prec x ->
double_round_eq (FLT_exp emin prec) (FLT_exp emin' prec')
choice1 choice2 (sqrt x).