Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
This file is part of the Flocq formalization of floating-point arithmetic in Coq: http://flocq.gforge.inria.fr/
Copyright (C) 2010-2018 Sylvie Boldo
Copyright (C) 2010-2018 Guillaume Melquiond
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the COPYING file for more details.

IEEE-754 arithmetic

From Coq Require Import Psatz.
Require Import Core Digits Round Bracket Operations Div Sqrt Relative SpecFloatCompat.

Definition SF2R beta x :=
  match x with
  | S754_finite s m e => F2R (Float beta (cond_Zopp s (Zpos m)) e)
  | _ => 0%R
  end.

Class Prec_lt_emax prec emax := prec_lt_emax : (prec < emax)%Z.
Arguments prec_lt_emax prec emax {Prec_lt_emax}.

Section Binary.
prec is the number of bits of the mantissa including the implicit one; emax is the exponent of the infinities. For instance, binary32 is defined by prec = 24 and emax = 128.
Variable prec emax : Z.
Context (prec_gt_0_ : Prec_gt_0 prec).
Context (prec_lt_emax_ : Prec_lt_emax prec emax).

Notation emin := (emin prec emax).
Notation fexp := (fexp prec emax).
Instance fexp_correct : Valid_exp fexp := FLT_exp_valid emin prec.
Instance fexp_monotone : Monotone_exp fexp := FLT_exp_monotone emin prec.

Notation canonical_mantissa := (canonical_mantissa prec emax).

Notation bounded := (bounded prec emax).

Notation valid_binary := (valid_binary prec emax).
Basic type used for representing binary FP numbers. Note that there is exactly one such object per FP datum.
Inductive binary_float :=
  | B754_zero (s : bool)
  | B754_infinity (s : bool)
  | B754_nan : binary_float
  | B754_finite (s : bool) (m : positive) (e : Z) :
    bounded m e = true -> binary_float.

Definition SF2B x :=
  match x as x return valid_binary x = true -> binary_float with
  | S754_finite s m e => B754_finite s m e
  | S754_infinity s => fun _ => B754_infinity s
  | S754_zero s => fun _ => B754_zero s
  | S754_nan => fun _ => B754_nan
  end.

Definition B2SF x :=
  match x with
  | B754_finite s m e _ => S754_finite s m e
  | B754_infinity s => S754_infinity s
  | B754_zero s => S754_zero s
  | B754_nan => S754_nan
  end.

Definition B2R f :=
  match f with
  | B754_finite s m e _ => F2R (Float radix2 (cond_Zopp s (Zpos m)) e)
  | _ => 0%R
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, SF2R radix2 (B2SF x) = B2R x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, SF2R radix2 (B2SF x) = B2R x
now intros [sx|sx| |sx mx ex Hx]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), B2SF (SF2B x Hx) = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), B2SF (SF2B x Hx) = x
now intros [sx|sx| |sx mx ex] Hx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, valid_binary (B2SF x) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, valid_binary (B2SF x) = true
now intros [sx|sx| |sx mx ex Hx]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : binary_float) (H : valid_binary (B2SF x) = true), SF2B (B2SF x) H = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : binary_float) (H : valid_binary (B2SF x) = true), SF2B (B2SF x) H = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:valid_binary (B2SF (B754_finite sx mx ex Hx)) = true

SF2B (B2SF (B754_finite sx mx ex Hx)) H = B754_finite sx mx ex Hx
apply f_equal, eqbool_irrelevance. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, SF2B (B2SF x) (valid_binary_B2SF x) = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, SF2B (B2SF x) (valid_binary_B2SF x) = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float

SF2B (B2SF x) (valid_binary_B2SF x) = x
apply SF2B_B2SF. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), B2R (SF2B x Hx) = SF2R radix2 x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), B2R (SF2B x Hx) = SF2R radix2 x
now intros [sx|sx| |sx mx ex] Hx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (T : Type) (fz fi : bool -> T) (fn : T) (ff : bool -> positive -> Z -> T) (x : spec_float) (Hx : valid_binary x = true), match SF2B x Hx with | B754_zero sx => fz sx | B754_infinity sx => fi sx | B754_nan => fn | B754_finite sx mx ex _ => ff sx mx ex end = match x with | S754_zero sx => fz sx | S754_infinity sx => fi sx | S754_nan => fn | S754_finite sx mx ex => ff sx mx ex end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (T : Type) (fz fi : bool -> T) (fn : T) (ff : bool -> positive -> Z -> T) (x : spec_float) (Hx : valid_binary x = true), match SF2B x Hx with | B754_zero sx => fz sx | B754_infinity sx => fi sx | B754_nan => fn | B754_finite sx mx ex _ => ff sx mx ex end = match x with | S754_zero sx => fz sx | S754_infinity sx => fi sx | S754_nan => fn | S754_finite sx mx ex => ff sx mx ex end
now intros T fz fi fn ff [sx|sx| |sx mx ex] Hx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (sx : bool) (mx : positive) (ex : Z), canonical_mantissa mx ex = true -> canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (sx : bool) (mx : positive) (ex : Z), canonical_mantissa mx ex = true -> canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
H:canonical_mantissa mx ex = true

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
H:canonical_mantissa mx ex = true
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

cexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

cexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = ex
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

cexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = fexp (Z.pos (digits2_pos mx) + ex)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

mag radix2 (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = (Z.pos (digits2_pos mx) + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

(Zdigits radix2 (cond_Zopp sx (Z.pos mx)) + ex)%Z = (Z.pos (digits2_pos mx) + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex
cond_Zopp sx (Z.pos mx) <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

(Zdigits radix2 (Z.abs (cond_Zopp sx (Z.pos mx))) + ex)%Z = (Z.pos (digits2_pos mx) + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex
cond_Zopp sx (Z.pos mx) <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

(Zdigits radix2 (Z.abs (cond_Zopp sx (Z.pos mx))) + ex)%Z = (Zdigits radix2 (Z.pos mx) + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex
cond_Zopp sx (Z.pos mx) <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:fexp (Z.pos (digits2_pos mx) + ex) = ex

cond_Zopp sx (Z.pos mx) <> 0%Z
now case sx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, generic_format radix2 fexp (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, generic_format radix2 fexp (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

generic_format radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

canonical_mantissa mx ex = true
now destruct (andb_prop _ _ Hx) as (H, _). Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, FLT_format radix2 emin prec (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, FLT_format radix2 emin prec (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float

FLT_format radix2 emin prec (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float

generic_format radix2 (FLT_exp emin prec) (B2R x)
apply generic_format_B2R. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, B2SF x = B2SF y -> x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, B2SF x = B2SF y -> x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx, sy:bool

B2SF (B754_zero sx) = B2SF (B754_zero sy) -> B754_zero sx = B754_zero sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx, sy:bool
B2SF (B754_infinity sx) = B2SF (B754_infinity sy) -> B754_infinity sx = B754_infinity sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx, sy:bool
H:B2SF (B754_zero sx) = B2SF (B754_zero sy)

B754_zero sx = B754_zero sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx, sy:bool
B2SF (B754_infinity sx) = B2SF (B754_infinity sy) -> B754_infinity sx = B754_infinity sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx, sy:bool

B2SF (B754_infinity sx) = B2SF (B754_infinity sy) -> B754_infinity sx = B754_infinity sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx, sy:bool
H:B2SF (B754_infinity sx) = B2SF (B754_infinity sy)

B754_infinity sx = B754_infinity sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H:B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy)

B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H:B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy)
H1:sx = sy
H2:mx = my
H3:ex = ey

B754_finite sy mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:sx = sy
H2:mx = my
H3:ex = ey

B754_finite sy mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:sx = sy
H2:mx = my
H3:ex = ey

forall Hx : bounded mx ex = true, B754_finite sy mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:sx = sy
H2:mx = my
H3:ex = ey

forall Hx : bounded my ey = true, B754_finite sy my ey Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:sx = sy
H2:mx = my
H3:ex = ey
Hx:bounded my ey = true

B754_finite sy my ey Hx = B754_finite sy my ey Hy
apply f_equal, eqbool_irrelevance. Qed. Definition is_finite_strict f := match f with | B754_finite _ _ _ _ => true | _ => false end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, B2R x <> 0%R -> is_finite_strict x = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, B2R x <> 0%R -> is_finite_strict x = true
now intros [sx|sx| | sx mx ex Bx] Hx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, is_finite_strict x = true -> is_finite_strict y = true -> B2R x = B2R y -> x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, is_finite_strict x = true -> is_finite_strict y = true -> B2R x = B2R y -> x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

is_finite_strict (B754_finite sx mx ex Hx) = true -> is_finite_strict (B754_finite sy my ey Hy) = true -> B2R (B754_finite sx mx ex Hx) = B2R (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

true = true -> true = true -> F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}

B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}

sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |} -> False
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < R0)%R
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
(R0 < F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

(R0 < F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} > F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} > R0)%R
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
(R0 > F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

(R0 > F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

mx = my /\ ex = ey
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

{| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> mx = my /\ ex = ey
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

{| Fnum := cond_Zopp sy (Z.pos mx); Fexp := ex |} = {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> mx = my /\ ex = ey
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

canonical_mantissa mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy

canonical_mantissa my ey = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey

B754_finite sx mx ex Hx = B754_finite sy my ey Hy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey

forall Hx : bounded mx ex = true, B754_finite sx mx ex Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey

forall Hx : bounded my ey = true, B754_finite sy my ey Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
Hx:bounded my ey = true

B754_finite sy my ey Hx = B754_finite sy my ey Hy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Heq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
Hs:sx = sy
H:mx = my /\ ex = ey
Hx:bounded my ey = true

Hx = Hy
apply eqbool_irrelevance. Qed. Definition Bsign x := match x with | B754_nan => false | B754_zero s => s | B754_infinity s => s | B754_finite s _ _ _ => s end. Definition sign_SF x := match x with | S754_nan => false | S754_zero s => s | S754_infinity s => s | S754_finite s _ _ => s end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (H : valid_binary x = true), Bsign (SF2B x H) = sign_SF x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (H : valid_binary x = true), Bsign (SF2B x H) = sign_SF x
now intros [sx|sx| |sx mx ex] H. Qed. Definition is_finite f := match f with | B754_finite _ _ _ _ => true | B754_zero _ => true | _ => false end. Definition is_finite_SF f := match f with | S754_finite _ _ _ => true | S754_zero _ => true | _ => false end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), is_finite (SF2B x Hx) = is_finite_SF x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), is_finite (SF2B x Hx) = is_finite_SF x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite_SF (B2SF x) = is_finite x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite_SF (B2SF x) = is_finite x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, is_finite x = true -> is_finite y = true -> B2R x = B2R y -> Bsign x = Bsign y -> x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, is_finite x = true -> is_finite y = true -> B2R x = B2R y -> Bsign x = Bsign y -> x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x, y:binary_float
H:is_finite x = true
H0:is_finite y = true
H1:B2R x = B2R y
H2:Bsign x = Bsign y

x = y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
H:is_finite (B754_zero s) = true
H0:is_finite (B754_zero s0) = true
H1:B2R (B754_zero s) = B2R (B754_zero s0)
H2:Bsign (B754_zero s) = Bsign (B754_zero s0)

B754_zero s = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:B2R (B754_zero s) = B2R (B754_finite s0 m e e0)
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)
B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:B2R (B754_finite s m e e0) = B2R (B754_zero s0)
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)
B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
H:is_finite (B754_zero s) = true
H0:is_finite (B754_zero s0) = true
H1:B2R (B754_zero s) = B2R (B754_zero s0)
H2:Bsign (B754_zero s) = Bsign (B754_zero s0)

B754_zero s = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
H:is_finite (B754_zero s) = true
H0:is_finite (B754_zero s0) = true
H1:B2R (B754_zero s) = B2R (B754_zero s0)
H2:s = s0

B754_zero s = B754_zero s0
congruence.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:B2R (B754_zero s) = B2R (B754_finite s0 m e e0)
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:B2R (B754_finite s0 m e e0) = B2R (B754_zero s)
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:IZR (Fnum {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%R \/ bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:IZR (Fnum {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)
B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:Fnum {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |} = 0%Z
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)
B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)
H3:(0 < bpow radix2 e)%R

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)
H3:(0 < 0)%R

B754_zero s = B754_finite s0 m e e0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
H:is_finite (B754_zero s) = true
H0:is_finite (B754_finite s0 m e e0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)
H3:False

B754_zero s = B754_finite s0 m e e0
destruct H3.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:B2R (B754_finite s m e e0) = B2R (B754_zero s0)
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:IZR (Fnum {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%R \/ bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:IZR (Fnum {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)
B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:Fnum {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = 0%Z
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)
B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)
H3:(0 < bpow radix2 e)%R

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)
H3:(0 < 0)%R

B754_finite s m e e0 = B754_zero s0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
H:is_finite (B754_finite s m e e0) = true
H0:is_finite (B754_zero s0) = true
H1:bpow radix2 e = 0%R
H2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)
H3:False

B754_finite s m e e0 = B754_zero s0
destruct H3. Qed. Definition is_nan f := match f with | B754_nan => true | _ => false end. Definition is_nan_SF f := match f with | S754_nan => true | _ => false end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), is_nan (SF2B x Hx) = is_nan_SF x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : spec_float) (Hx : valid_binary x = true), is_nan (SF2B x Hx) = is_nan_SF x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan_SF (B2SF x) = is_nan x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan_SF (B2SF x) = is_nan x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float

binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float

binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool

binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:bounded m e = true
binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool

binary_float
exact (B754_zero s).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool

binary_float
exact (B754_infinity s).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

binary_float
exact B754_nan.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:bounded m e = true

binary_float
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:bounded m e = true

bounded m e = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:true = true

true = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:false = true
false = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:false = true

false = true
exact H. Defined.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, erase x = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, erase x = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:bounded m e = true

B754_finite s m e ((if bounded m e as b return (b = true -> b = true) then fun _ : true = true => eq_refl else fun H0 : false = true => H0) H) = B754_finite s m e H
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:bounded m e = true

B754_finite s m e ((if bounded m e as b return (b = true -> b = true) then fun _ : true = true => eq_refl else fun H0 : false = true => H0) H) = B754_finite s m e H
apply f_equal, eqbool_irrelevance. Qed.
Opposite
Definition Bopp x :=
  match x with
  | B754_nan => x
  | B754_infinity sx => B754_infinity (negb sx)
  | B754_finite sx mx ex Hx => B754_finite (negb sx) mx ex Hx
  | B754_zero sx => B754_zero (negb sx)
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, Bopp (Bopp x) = x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, Bopp (Bopp x) = x
now intros [sx|sx| |sx mx ex Hx] ; simpl ; try rewrite Bool.negb_involutive. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, B2R (Bopp x) = (- B2R x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, B2R (Bopp x) = (- B2R x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

(- B2R (B754_finite sx mx ex Hx))%R = B2R (Bopp (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

(- F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})%R = F2R {| Fnum := cond_Zopp (negb sx) (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

F2R (Fopp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := cond_Zopp (negb sx) (Z.pos mx); Fexp := ex |}
now case sx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite (Bopp x) = is_finite x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite (Bopp x) = is_finite x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite_strict (Bopp x) = is_finite_strict x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite_strict (Bopp x) = is_finite_strict x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Bsign (Bopp x) = negb (Bsign x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Bsign (Bopp x) = negb (Bsign x)
now intros [s|s| |s m e H]. Qed.
Absolute value
Definition Babs (x : binary_float) : binary_float :=
  match x with
  | B754_nan => x
  | B754_infinity sx => B754_infinity false
  | B754_finite sx mx ex Hx => B754_finite false mx ex Hx
  | B754_zero sx => B754_zero false
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, B2R (Babs x) = Rabs (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, B2R (Babs x) = Rabs (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

Rabs (B2R (B754_finite sx mx ex Hx)) = B2R (Babs (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

F2R (Fabs {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := Z.pos mx; Fexp := ex |}
now destruct sx. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite (Babs x) = is_finite x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite (Babs x) = is_finite x
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Bsign (Babs x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Bsign (Babs x) = false
now intros [| | |]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Babs (Babs x) = Babs x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Babs (Babs x) = Babs x
now intros [sx|sx| |sx mx ex Hx]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Babs (Bopp x) = Babs x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_nan x = false -> Babs (Bopp x) = Babs x
now intros [| | |]. Qed.
Comparison
Some c means ordered as per c; None means unordered.
Definition Bcompare (f1 f2 : binary_float) : option comparison :=
  SFcompare (B2SF f1) (B2SF f2).

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall f1 f2 : binary_float, is_finite f1 = true -> is_finite f2 = true -> Bcompare f1 f2 = Some (Rcompare (B2R f1) (B2R f2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall f1 f2 : binary_float, is_finite f1 = true -> is_finite f2 = true -> Bcompare f1 f2 = Some (Rcompare (B2R f1) (B2R f2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall f1 f2 : binary_float, is_finite f1 = true -> is_finite f2 = true -> Bcompare f1 f2 = Some (Rcompare (B2R f1) (B2R f2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f1, f2:binary_float
H1:is_finite f1 = true
H2:is_finite f2 = true

match B2SF f1 with | S754_zero _ => match B2SF f2 with | S754_zero _ => Some Eq | S754_nan => None | S754_infinity s | S754_finite s _ _ => Some (if s then Gt else Lt) end | S754_infinity s => match B2SF f2 with | S754_infinity s0 => Some (if s then if s0 then Eq else Lt else if s0 then Gt else Eq) | S754_nan => None | _ => Some (if s then Lt else Gt) end | S754_nan => None | S754_finite s1 m1 e1 => match B2SF f2 with | S754_zero _ => Some (if s1 then Lt else Gt) | S754_infinity s => Some (if s then Gt else Lt) | S754_nan => None | S754_finite s2 m2 e2 => Some (if s1 then if s2 then match (e1 ?= e2)%Z with | Eq => CompOpp (Pos.compare_cont Eq m1 m2) | Lt => Gt | Gt => Lt end else Lt else if s2 then Gt else match (e1 ?= e2)%Z with | Eq => Pos.compare_cont Eq m1 m2 | Lt => Lt | Gt => Gt end) end end = Some (Rcompare (B2R f1) (B2R f2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool

Eq = Rcompare (B2R (B754_zero s)) (B2R (B754_zero s0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true
(if s0 then Gt else Lt) = Rcompare (B2R (B754_zero s)) (B2R (B754_finite s0 m e e0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s, s0:bool
m:positive
e:Z
e0:bounded m e = true

(if s0 then Gt else Lt) = Rcompare (B2R (B754_zero s)) (B2R (B754_finite s0 m e e0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true

(B2R (B754_finite true m e e0) < B2R (B754_zero s))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
(B2R (B754_zero s) < B2R (B754_finite false m e e0))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true

(B2R (B754_zero s) < B2R (B754_finite false m e e0))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool

(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:positive
e:Z
e0:bounded m e = true
s0:bool

(B2R (B754_finite true m e e0) < B2R (B754_zero s0))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:positive
e:Z
e0:bounded m e = true
s0:bool
(B2R (B754_zero s0) < B2R (B754_finite false m e e0))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:positive
e:Z
e0:bounded m e = true
s0:bool

(B2R (B754_zero s0) < B2R (B754_finite false m e e0))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_finite s0 m0 e1 e2))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
e0:bounded m e = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |}
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
e2:bounded m0 e1 = true

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |}
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |}
H2:(e1 <=? emax - prec)%Z = true

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z

forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z

forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
m1, m2:positive
e0, e2:Z
x:=(IZR (Z.pos m1) * bpow radix2 e0)%R:R
y:=(IZR (Z.pos m2) * bpow radix2 e2)%R:R
H4:(cexp radix2 fexp x < cexp radix2 fexp y)%Z
H5:(mag radix2 y <= mag radix2 x)%Z

False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
m1, m2:positive
e0, e2:Z
x:=(IZR (Z.pos m1) * bpow radix2 e0)%R:R
y:=(IZR (Z.pos m2) * bpow radix2 e2)%R:R
H4:(cexp radix2 fexp x < cexp radix2 fexp y)%Z
H5:(y <= x)%R
(0 < y)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
m1, m2:positive
e0, e2:Z
x:=(IZR (Z.pos m1) * bpow radix2 e0)%R:R
y:=(IZR (Z.pos m2) * bpow radix2 e2)%R:R
H4:(cexp radix2 fexp x < cexp radix2 fexp y)%Z
H5:(mag radix2 y <= mag radix2 x)%Z

(cexp radix2 fexp y <= cexp radix2 fexp x)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
m1, m2:positive
e0, e2:Z
x:=(IZR (Z.pos m1) * bpow radix2 e0)%R:R
y:=(IZR (Z.pos m2) * bpow radix2 e2)%R:R
H4:(cexp radix2 fexp x < cexp radix2 fexp y)%Z
H5:(y <= x)%R
(0 < y)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
m1, m2:positive
e0, e2:Z
x:=(IZR (Z.pos m1) * bpow radix2 e0)%R:R
y:=(IZR (Z.pos m2) * bpow radix2 e2)%R:R
H4:(cexp radix2 fexp x < cexp radix2 fexp y)%Z
H5:(y <= x)%R

(0 < y)%R
now apply (F2R_gt_0 _ (Float radix2 (Zpos m2) e2)).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R

forall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
H5:forall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%R
(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R

forall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m3 m4 : positive) (e3 e4 : Z), let x := (IZR (Z.pos m3) * bpow radix2 e3)%R in let y := (IZR (Z.pos m4) * bpow radix2 e4)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
m1, m2:positive
e0, e2:Z

(IZR (- Z.pos m1) * bpow radix2 e0 < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m3 m4 : positive) (e3 e4 : Z), let x := (IZR (Z.pos m3) * bpow radix2 e3)%R in let y := (IZR (Z.pos m4) * bpow radix2 e4)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
m1, m2:positive
e0, e2:Z
(0 < IZR (Z.pos m2) * bpow radix2 e2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m3 m4 : positive) (e3 e4 : Z), let x := (IZR (Z.pos m3) * bpow radix2 e3)%R in let y := (IZR (Z.pos m4) * bpow radix2 e4)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
m1, m2:positive
e0, e2:Z

(0 < IZR (Z.pos m2) * bpow radix2 e2)%R
now apply (F2R_gt_0 _ (Float radix2 (Zpos m2) e2)).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
H5:forall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%R

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) (F2R {| Fnum := cond_Zopp s0 (Z.pos m0); Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e:Z
H:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})
H0:(e <=? emax - prec)%Z = true
s0:bool
m0:positive
e1:Z
H1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})
H2:(e1 <=? emax - prec)%Z = true
H3:Zcompare_prop e e1 (e ?= e1)%Z
H4:forall (m1 m2 : positive) (e0 e2 : Z), let x := (IZR (Z.pos m1) * bpow radix2 e0)%R in let y := (IZR (Z.pos m2) * bpow radix2 e2)%R in (cexp radix2 fexp x < cexp radix2 fexp y)%Z -> (x < y)%R
H5:forall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%R

(if s then if s0 then match (e ?= e1)%Z with | Eq => CompOpp (Pos.compare_cont Eq m m0) | Lt => Gt | Gt => Lt end else Lt else if s0 then Gt else match (e ?= e1)%Z with | Eq => Pos.compare_cont Eq m m0 | Lt => Lt | Gt => Gt end) = Rcompare (IZR (cond_Zopp s (Z.pos m)) * bpow radix2 e) (IZR (cond_Zopp s0 (Z.pos m0)) * bpow radix2 e1)
destruct s, s0; try (now apply_Rcompare; apply H5); inversion H3; try (apply_Rcompare; apply H4; rewrite H, H1 in H7; assumption); try (apply_Rcompare; do 2 rewrite opp_IZR, Ropp_mult_distr_l_reverse; apply Ropp_lt_contravar; apply H4; rewrite H, H1 in H7; assumption); rewrite H7, Rcompare_mult_r, Rcompare_IZR by (apply bpow_gt_0); reflexivity. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, Bcompare y x = match Bcompare x y with | Some c => Some (CompOpp c) | None => None end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x y : binary_float, Bcompare y x = match Bcompare x y with | Some c => Some (CompOpp c) | None => None end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x, y:binary_float

Bcompare y x = match Bcompare x y with | Some c => Some (CompOpp c) | None => None end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x, y:binary_float

SFcompare (B2SF y) (B2SF x) = match SFcompare (B2SF x) (B2SF y) with | Some c => Some (CompOpp c) | None => None end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match (ey ?= ex)%Z with | Eq => CompOpp (Pos.compare_cont Eq my mx) | Lt => Gt | Gt => Lt end = Some (CompOpp match (ex ?= ey)%Z with | Eq => CompOpp (Pos.compare_cont Eq mx my) | Lt => Gt | Gt => Lt end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true
Some match (ey ?= ex)%Z with | Eq => Pos.compare_cont Eq my mx | Lt => Lt | Gt => Gt end = Some (CompOpp match (ex ?= ey)%Z with | Eq => Pos.compare_cont Eq mx my | Lt => Lt | Gt => Gt end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match (ey ?= ex)%Z with | Eq => CompOpp (Pos.compare_cont Eq my mx) | Lt => Gt | Gt => Lt end = Some (CompOpp match (ex ?= ey)%Z with | Eq => CompOpp (Pos.compare_cont Eq mx my) | Lt => Gt | Gt => Lt end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match CompOpp (ex ?= ey)%Z with | Eq => CompOpp (Pos.compare_cont Eq my mx) | Lt => Gt | Gt => Lt end = Some (CompOpp match (ex ?= ey)%Z with | Eq => CompOpp (Pos.compare_cont Eq mx my) | Lt => Gt | Gt => Lt end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match CompOpp Eq with | Eq => CompOpp (Pos.compare_cont Eq my mx) | Lt => Gt | Gt => Lt end = Some (CompOpp (CompOpp (Pos.compare_cont Eq mx my)))
now rewrite (Pcompare_antisym mx my).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match (ey ?= ex)%Z with | Eq => Pos.compare_cont Eq my mx | Lt => Lt | Gt => Gt end = Some (CompOpp match (ex ?= ey)%Z with | Eq => Pos.compare_cont Eq mx my | Lt => Lt | Gt => Gt end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match CompOpp (ex ?= ey)%Z with | Eq => Pos.compare_cont Eq my mx | Lt => Lt | Gt => Gt end = Some (CompOpp match (ex ?= ey)%Z with | Eq => Pos.compare_cont Eq mx my | Lt => Lt | Gt => Gt end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
my:positive
ey:Z
By:bounded my ey = true

Some match CompOpp Eq with | Eq => Pos.compare_cont Eq my mx | Lt => Lt | Gt => Gt end = Some (CompOpp (Pos.compare_cont Eq mx my))
now rewrite Pcompare_antisym. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:canonical_mantissa mx ex = true
H2:(ex <=? emax - prec)%Z = true

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:canonical_mantissa mx ex = true
H2:(ex <=? emax - prec)%Z = true

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <=? emax - prec)%Z = true

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <=? emax - prec)%Z = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <=? emax - prec)%Z = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(ex <= emax - prec)%Z -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(ex <= emax - prec)%Z -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z

(Z.pos mx <> 0%Z -> mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.pos mx <> 0%Z -> Build_mag_prop radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) e' Ex = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} * bpow radix2 (- ex) < bpow radix2 e' * bpow radix2 (- ex))%R -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R

(IZR (Z.pos mx) * bpow radix2 (ex + - ex) < bpow radix2 (e' + - ex))%R -> (IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R

(IZR (Z.pos mx) * bpow radix2 (ex + - ex) < bpow radix2 (Zdigits radix2 (Z.pos mx) + ex + - ex))%R -> (IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R

(IZR (Z.pos mx) < bpow radix2 (Zdigits radix2 (Z.pos mx)))%R -> (IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) < IZR (radix2 ^ Zdigits radix2 (Z.pos mx)))%R

(IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(Z.succ (Z.pos mx) <= radix2 ^ Zdigits radix2 (Z.pos mx))%Z

(IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(Z.succ (Z.pos mx) <= radix2 ^ Zdigits radix2 (Z.pos mx))%Z

(IZR (Z.succ (Z.pos mx)) <= IZR (radix2 ^ Zdigits radix2 (Z.pos mx)))%R -> (IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) + 1 <= IZR (radix2 ^ Zdigits radix2 (Z.pos mx)))%R

(IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) + 1 + -1 <= IZR (radix2 ^ Zdigits radix2 (Z.pos mx)) + -1)%R

(IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(IZR (Z.pos mx) <= IZR (radix2 ^ Zdigits radix2 (Z.pos mx)) - 1)%R -> (IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R

(IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R

(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R -> (IZR (Z.pos mx) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R

((bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R

(bpow radix2 (Zdigits radix2 (Z.pos mx) + ex) - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex

(bpow radix2 (Zdigits radix2 (Z.pos mx) + ex) - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex

(Z.pos (digits2_pos mx) + ex - prec <= Z.max (Z.pos (digits2_pos mx) + ex - prec) emin)%Z -> (bpow radix2 (Zdigits radix2 (Z.pos mx) + ex) - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Z.pos (digits2_pos mx) + ex - prec <= ex)%Z

(bpow radix2 (Zdigits radix2 (Z.pos mx) + ex) - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Z.pos (digits2_pos mx) + ex - prec <= ex)%Z

(Z.pos (digits2_pos mx) + ex <= ex + prec)%Z -> (bpow radix2 (Zdigits radix2 (Z.pos mx) + ex) - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(bpow radix2 (Zdigits radix2 (Z.pos mx) + ex) - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(bpow radix2 (ex + prec) + - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(bpow radix2 (ex + prec) + - bpow radix2 ex <= bpow radix2 (emax - prec - ex + (ex + prec)) - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(bpow radix2 (ex + prec) + - bpow radix2 ex <= bpow radix2 (emax - prec - ex + (ex + prec)) - bpow radix2 (emax - prec - ex + ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(bpow radix2 (ex + prec) + - bpow radix2 ex <= bpow radix2 (emax - prec - ex) * bpow radix2 (ex + prec) - bpow radix2 (emax - prec - ex) * bpow radix2 ex)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(bpow radix2 (ex + prec) + - bpow radix2 ex <= bpow radix2 (emax - prec - ex) * (bpow radix2 (ex + prec) - bpow radix2 ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(1 * (bpow radix2 (ex + prec) + - bpow radix2 ex) <= bpow radix2 (emax - prec - ex) * (bpow radix2 (ex + prec) - bpow radix2 ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(0 <= bpow radix2 (ex + prec) - bpow radix2 ex)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z
(1 <= bpow radix2 (emax - prec - ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(0 <= bpow radix2 (ex + prec) - bpow radix2 ex)%R
apply Rle_0_minus, bpow_le; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Ex:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%R
H':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%R
H1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex
H1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z

(1 <= bpow radix2 (emax - prec - ex))%R
change 1%R with (bpow radix2 0); apply bpow_le; lia. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:canonical_mantissa mx ex = true
H2:(ex <=? emax - prec)%Z = true

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:canonical_mantissa mx ex = true
H2:(ex <=? emax - prec)%Z = true

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <=? emax - prec)%Z = true

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <=? emax - prec)%Z = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <=? emax - prec)%Z = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(ex <= emax - prec)%Z -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(ex <= emax - prec)%Z -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z

(Z.pos mx <> 0%Z -> mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.pos mx <> 0%Z -> Build_mag_prop radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) e' Ex = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
(bpow radix2 e' <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(F2R {| Fnum := Z.abs (Z.pos mx); Fexp := ex |} < bpow radix2 e')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
(bpow radix2 e' <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
(bpow radix2 e' <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
(bpow radix2 e' <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(F2R {| Fnum := Z.pos mx; Fexp := ex |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
(bpow radix2 e' <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(bpow radix2 e' <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(e' <= emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(Zdigits radix2 (Z.pos mx) + ex <= emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(Zdigits radix2 (Z.pos mx) + ex <= emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H2:(ex <= emax - prec)%Z
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Z
prec, emax:Z
mx:positive
ex:Z
H2:(ex <= emax - prec)%Z

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Z
prec, emax:Z
mx:positive
ex:Z
H2:(ex <= emax - prec)%Z

fexp (Zdigits radix2 (Z.pos mx) + ex) = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Z
prec, emax:Z
mx:positive
ex:Z
H2:(ex <= emax - prec)%Z

Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) emin = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Z
intros ; zify ; omega. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), bounded mx ex = true -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), bounded mx ex = true -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:canonical_mantissa mx ex = true

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex

(Z.pos mx <> 0%Z -> mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.pos mx <> 0%Z -> Build_mag_prop radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) e' Ex = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z) -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

(bpow radix2 emin <= bpow radix2 (e' - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z
F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

(bpow radix2 emin <= bpow radix2 (e' - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

(emin <= e' - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:fexp (Z.pos (digits2_pos mx) + ex) = ex
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

(emin <= Zdigits radix2 (Z.pos mx) + ex - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

fexp (Z.pos (digits2_pos mx) + ex) = ex -> (emin <= Zdigits radix2 (Z.pos mx) + ex - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

fexp (Zdigits radix2 (Z.pos mx) + ex) = ex -> (emin <= Zdigits radix2 (Z.pos mx) + ex - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

forall z : Z, (0 < z)%Z -> fexp (z + ex) = ex -> (emin <= z + ex - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Hx:bounded mx ex = true
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%R
H:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z
H0:Z.pos mx <> 0%Z

forall z : Z, (0 < z)%Z -> Z.max (z + ex - prec) emin = ex -> (emin <= z + ex - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
ex:Z

forall z : Z, (0 < z)%Z -> Z.max (z + ex - prec) emin = ex -> (emin <= z + ex - 1)%Z
prec, emax:Z
prec_gt_0_:(0 < prec)%Z
ex:Z

forall z : Z, (0 < z)%Z -> Z.max (z + ex - prec) emin = ex -> (emin <= z + ex - 1)%Z
intros ; zify ; omega. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, (Rabs (B2R x) <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, (Rabs (B2R x) <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

(Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) <= bpow radix2 emax - bpow radix2 (emax - prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

(F2R {| Fnum := Z.abs (Z.pos mx); Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%R
now apply bounded_le_emax_minus_prec. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, (Rabs (B2R x) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, (Rabs (B2R x) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

(Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

(F2R {| Fnum := Z.abs (Z.pos mx); Fexp := ex |} < bpow radix2 emax)%R
now apply bounded_lt_emax. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite_strict x = true -> (bpow radix2 emin <= Rabs (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite_strict x = true -> (bpow radix2 emin <= Rabs (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

true = true -> (bpow radix2 emin <= Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.neg mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true
(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.neg mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= IZR (Z.pos mx) * Rabs (bpow radix2 ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= IZR (Z.pos mx) * bpow radix2 ex)%R
now apply bounded_ge_emin.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= IZR (Z.pos mx) * Rabs (bpow radix2 ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H:true = true

(bpow radix2 emin <= IZR (Z.pos mx) * bpow radix2 ex)%R
now apply bounded_ge_emin. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |} -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R -> bounded mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |} -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R -> bounded mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

bounded mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

canonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

canonical_mantissa mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) (cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (fexp (Zdigits radix2 (Z.pos mx) + ex)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

Zeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (fexp (Zdigits radix2 (Z.pos mx) + ex)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

(ex <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

(ex <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

(ex <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

(cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

(Z.max (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - prec) emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.max (Build_mag_prop radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) e' Ex - prec) emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(Z.max (e' - prec) emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(e' - prec <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(e' - 1 < emax)%Z -> (e' - prec <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(e' - 1 < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(e' - 1 < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(bpow radix2 (e' - 1) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(bpow radix2 (e' - 1) <= F2R {| Fnum := Z.abs (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R
(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(3 - emax - prec <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Cx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
e':Z
Ex:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%R

(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec <= emax - prec)%Z
clear ; lia. Qed.
Truncation
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : Z) (l : location), shr_m (shr_record_of_loc m l) = m
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : Z) (l : location), shr_m (shr_record_of_loc m l) = m
now intros m [|[| |]]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : Z) (l : location), loc_of_shr_record (shr_record_of_loc m l) = l
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : Z) (l : location), loc_of_shr_record (shr_record_of_loc m l) = l
now intros m [|[| |]]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : R) (mrs : shr_record) (e : Z), (0 <= shr_m mrs)%Z -> inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : R) (mrs : shr_record) (e : Z), (0 <= shr_m mrs)%Z -> inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + 2 * bpow radix2 e) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
(0 < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
(0 <= (if shr_r (shr_1 mrs) then 1 else 0) < 2)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + 2 * bpow radix2 e) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
(0 <= (if shr_r (shr_1 mrs) then 1 else 0) < 2)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + 2 * bpow radix2 e) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + bpow radix2 1 * bpow radix2 e) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + bpow radix2 (1 + e)) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + F2R {| Fnum := 1; Fexp := e + 1 |}) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween_float radix2 (shr_m (shr_1 mrs)) (e + 1) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (Fnum {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) * bpow radix2 (Fexp {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |})) (IZR (Fnum {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) * bpow radix2 (Fexp {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) + IZR (Fnum {| Fnum := 1; Fexp := e + 1 |}) * bpow radix2 (Fexp {| Fnum := 1; Fexp := e + 1 |})) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween (IZR (Fnum {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |}) * bpow radix2 (Fexp {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |})) (IZR (Fnum {| Fnum := shr_m (shr_1 mrs) + 1; Fexp := e + 1 |}) * bpow radix2 (Fexp {| Fnum := shr_m (shr_1 mrs) + 1; Fexp := e + 1 |})) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1)) (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1) + 1 * bpow radix2 (e + 1)) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1)) (IZR (shr_m (shr_1 mrs) + 1) * bpow radix2 (e + 1)) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1)) (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1) + 1 * bpow radix2 (e + 1)) x (Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)) -> inbetween (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1)) (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1) + 1 * bpow radix2 (e + 1)) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1)) (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1) + 1 * bpow radix2 (e + 1)) x (loc_of_shr_record (shr_1 mrs)) -> inbetween (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1)) (IZR (shr_m (shr_1 mrs)) * bpow radix2 (e + 1) + 1 * bpow radix2 (e + 1)) x (loc_of_shr_record (shr_1 mrs))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
loc_of_shr_record (shr_1 mrs) = Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

loc_of_shr_record (shr_1 mrs) = Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
mrs:shr_record
Hm:(0 <= shr_m mrs)%Z

loc_of_shr_record (shr_1 mrs) = Bracket.new_location_even 2 (if shr_r (shr_1 mrs) then 1%Z else 0%Z) (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
m:Z
r, s:bool
Hm:(0 <= shr_m {| shr_m := m; shr_r := r; shr_s := s |})%Z

loc_of_shr_record (shr_1 {| shr_m := m; shr_r := r; shr_s := s |}) = Bracket.new_location_even 2 (if shr_r (shr_1 {| shr_m := m; shr_r := r; shr_s := s |}) then 1%Z else 0%Z) (loc_of_shr_record {| shr_m := m; shr_r := r; shr_s := s |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs); Fexp := e + 1 |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
(e <= e + 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (F2R {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |} + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (F2R {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |} + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (Fnum {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |}) * bpow radix2 (Fexp {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |}) + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (IZR (Fnum {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |}) * bpow radix2 (Fexp {| Fnum := shr_m (shr_1 mrs) * radix2 ^ (e + 1 - e); Fexp := e |}) + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e)) * bpow radix2 e + IZR (if shr_r (shr_1 mrs) then 1%Z else 0%Z) * bpow radix2 e) (IZR (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e)) * bpow radix2 e + IZR ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e) + (if shr_r (shr_1 mrs) then 1%Z else 0%Z)) * bpow radix2 e) (IZR (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e) + ((if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1)) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e) + (if shr_r (shr_1 mrs) then 1%Z else 0%Z)) * bpow radix2 e) (IZR (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e) + (if shr_r (shr_1 mrs) then 1%Z else 0%Z) + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

inbetween (IZR (shr_m mrs) * bpow radix2 e) (IZR (shr_m mrs + 1) * bpow radix2 e) x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)
shr_m mrs = (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e) + (if shr_r (shr_1 mrs) then 1 else 0))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

shr_m mrs = (shr_m (shr_1 mrs) * 2 ^ (e + 1 - e) + (if shr_r (shr_1 mrs) then 1 else 0))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

shr_m mrs = (shr_m (shr_1 mrs) * 2 ^ 1 + (if shr_r (shr_1 mrs) then 1 else 0))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

shr_m mrs = (shr_m (shr_1 mrs) * 2 + (if shr_r (shr_1 mrs) then 1 else 0))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
mrs:shr_record
e:Z
Hm:(0 <= shr_m mrs)%Z
Hl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)

shr_m mrs = (2 * shr_m (shr_1 mrs) + (if shr_r (shr_1 mrs) then 1 else 0))%Z
mrs:shr_record
Hm:(0 <= shr_m mrs)%Z

shr_m mrs = (2 * shr_m (shr_1 mrs) + (if shr_r (shr_1 mrs) then 1 else 0))%Z
m:Z
r, s:bool
Hm:(0 <= shr_m {| shr_m := m; shr_r := r; shr_s := s |})%Z

shr_m {| shr_m := m; shr_r := r; shr_s := s |} = (2 * shr_m (shr_1 {| shr_m := m; shr_r := r; shr_s := s |}) + (if shr_r (shr_1 {| shr_m := m; shr_r := r; shr_s := s |}) then 1 else 0))%Z
now destruct m as [|[m|m|]|m] ; try (now elim Hm) ; destruct r as [|] ; destruct s as [|]. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : R) (m e : Z) (l : location) (n : Z), (0 <= m)%Z -> inbetween_float radix2 m e x l -> let '(mrs, e') := shr (shr_record_of_loc m l) e n in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (x : R) (m e : Z) (l : location) (n : Z), (0 <= m)%Z -> inbetween_float radix2 m e x l -> let '(mrs, e') := shr (shr_record_of_loc m l) e n in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:Z
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

let '(mrs, e') := shr (shr_record_of_loc m l) e n in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

let '(mrs, e') := shr (shr_record_of_loc m l) e 0 in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
let '(mrs, e') := shr (shr_record_of_loc m l) e (Z.pos n) in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
let '(mrs, e') := shr (shr_record_of_loc m l) e (Z.neg n) in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

let '(mrs, e') := shr (shr_record_of_loc m l) e (Z.pos n) in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
let '(mrs, e') := shr (shr_record_of_loc m l) e (Z.neg n) in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

let '(mrs, e') := shr (shr_record_of_loc m l) e (Z.pos n) in inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

inbetween_float radix2 (shr_m (iter_pos shr_1 n (shr_record_of_loc m l))) (e + Z.pos n) x (loc_of_shr_record (iter_pos shr_1 n (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

inbetween_float radix2 (shr_m (iter_nat shr_1 (Pos.to_nat n) (shr_record_of_loc m l))) (e + Z.pos n) x (loc_of_shr_record (iter_nat shr_1 (Pos.to_nat n) (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

inbetween_float radix2 (shr_m (iter_nat shr_1 (Pos.to_nat n) (shr_record_of_loc m l))) (e + Z.of_nat (Pos.to_nat n)) x (loc_of_shr_record (iter_nat shr_1 (Pos.to_nat n) (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

inbetween_float radix2 (shr_m (iter_nat shr_1 0 (shr_record_of_loc m l))) (e + Z.of_nat 0) x (loc_of_shr_record (iter_nat shr_1 0 (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))
inbetween_float radix2 (shr_m (iter_nat shr_1 (S n0) (shr_record_of_loc m l))) (e + Z.of_nat (S n0)) x (loc_of_shr_record (iter_nat shr_1 (S n0) (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

inbetween_float radix2 (shr_m (shr_record_of_loc m l)) (e + 0) x (loc_of_shr_record (shr_record_of_loc m l))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))
inbetween_float radix2 (shr_m (iter_nat shr_1 (S n0) (shr_record_of_loc m l))) (e + Z.of_nat (S n0)) x (loc_of_shr_record (iter_nat shr_1 (S n0) (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l

inbetween_float radix2 (shr_m (shr_record_of_loc m l)) e x (loc_of_shr_record (shr_record_of_loc m l))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))
inbetween_float radix2 (shr_m (iter_nat shr_1 (S n0) (shr_record_of_loc m l))) (e + Z.of_nat (S n0)) x (loc_of_shr_record (iter_nat shr_1 (S n0) (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))

inbetween_float radix2 (shr_m (iter_nat shr_1 (S n0) (shr_record_of_loc m l))) (e + Z.of_nat (S n0)) x (loc_of_shr_record (iter_nat shr_1 (S n0) (shr_record_of_loc m l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))

inbetween_float radix2 (shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l)))) (e + Z.of_nat (S n0)) x (loc_of_shr_record (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))

inbetween_float radix2 (shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l)))) (e + Z.succ (Z.of_nat n0)) x (loc_of_shr_record (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))

inbetween_float radix2 (shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l)))) (e + (Z.of_nat n0 + 1)) x (loc_of_shr_record (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat
IHn0:inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l)))

inbetween_float radix2 (shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l)))) (e + Z.of_nat n0 + 1) x (loc_of_shr_record (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat

inbetween_float radix2 (shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l))) (e + Z.of_nat n0) x (loc_of_shr_record (iter_nat shr_1 n0 (shr_record_of_loc m l))) -> inbetween_float radix2 (shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l)))) (e + Z.of_nat n0 + 1) x (loc_of_shr_record (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:R
m, e:Z
l:location
n:positive
Hm:(0 <= m)%Z
Hl:inbetween_float radix2 m e x l
n0:nat

(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Z
m:Z
l:location
Hm:(0 <= m)%Z
n0:nat

(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Z
m:Z
l:location
Hm:(0 <= m)%Z

(0 <= shr_m (iter_nat shr_1 0 (shr_record_of_loc m l)))%Z
m:Z
l:location
Hm:(0 <= m)%Z
n0:nat
IHn0:(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Z
(0 <= shr_m (iter_nat shr_1 (S n0) (shr_record_of_loc m l)))%Z
m:Z
l:location
Hm:(0 <= m)%Z
n0:nat
IHn0:(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Z

(0 <= shr_m (iter_nat shr_1 (S n0) (shr_record_of_loc m l)))%Z
m:Z
l:location
Hm:(0 <= m)%Z
n0:nat
IHn0:(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Z

(0 <= shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))%Z
m:Z
l:location
Hm:(0 <= m)%Z
n0:nat

(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Z -> (0 <= shr_m (shr_1 (iter_nat shr_1 n0 (shr_record_of_loc m l))))%Z
m:Z
l:location
Hm:(0 <= m)%Z
n0:nat

forall s : shr_record, (0 <= shr_m s)%Z -> (0 <= shr_m (shr_1 s))%Z

forall s : shr_record, (0 <= shr_m s)%Z -> (0 <= shr_m (shr_1 s))%Z
m:Z
r, s:bool
Hm:(0 <= shr_m {| shr_m := m; shr_r := r; shr_s := s |})%Z

(0 <= shr_m (shr_1 {| shr_m := m; shr_r := r; shr_s := s |}))%Z
now destruct m as [|[m|m|]|m] ; try (now elim Hm) ; destruct r as [|] ; destruct s as [|]. Qed. Notation shr_fexp := (shr_fexp prec emax).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m e : Z) (l : location), (0 <= m)%Z -> shr_fexp m e l = (let '(m', e', l') := truncate radix2 fexp (m, e, l) in (shr_record_of_loc m' l', e'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m e : Z) (l : location), (0 <= m)%Z -> shr_fexp m e l = (let '(m', e', l') := truncate radix2 fexp (m, e, l) in (shr_record_of_loc m' l', e'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z

shr_fexp m e l = (let '(m', e', l') := truncate radix2 fexp (m, e, l) in (shr_record_of_loc m' l', e'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z

forall (p : Z * Z) (l0 : location), truncate radix2 fexp (m, e, l) = (p, l0) -> shr_fexp m e l = (let '(m', e') := p in (shr_record_of_loc m' l0, e'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr_fexp m e l = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (fexp (Zdigits2 m + e) - e) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location

(fexp (Zdigits radix2 m + e) - e)%Z = 0%Z -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e 0 = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
He:(fexp (Zdigits radix2 m + e) - e)%Z = 0%Z

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e 0 = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
He:(fexp (Zdigits radix2 m + e) - e)%Z = 0%Z

(if (0 <? fexp (Zdigits radix2 m + e) - e)%Z then truncate_aux radix2 (m, e, l) (fexp (Zdigits radix2 m + e) - e) else (m, e, l)) = (m', e', l') -> shr (shr_record_of_loc m l) e 0 = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
He:(fexp (Zdigits radix2 m + e) - e)%Z = 0%Z

(if (0 <? 0)%Z then truncate_aux radix2 (m, e, l) 0 else (m, e, l)) = (m', e', l') -> shr (shr_record_of_loc m l) e 0 = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
He:(fexp (Zdigits radix2 m + e) - e)%Z = 0%Z

(m, e, l) = (m', e', l') -> (shr_record_of_loc m l, e) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
He:(fexp (Zdigits radix2 m + e) - e)%Z = 0%Z
H:(m, e, l) = (m', e', l')

(shr_record_of_loc m l, e) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location

forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p

(e <= fexp (Zdigits radix2 m + e))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l

(let '(mrs, e'0) := shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) in inbetween_float radix2 (shr_m mrs) e'0 x (loc_of_shr_record mrs)) -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l

(0 <= x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
(let '(mrs, e'0) := shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) in inbetween_float radix2 (shr_m mrs) e'0 x (loc_of_shr_record mrs)) -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l

(0 <= F2R {| Fnum := m; Fexp := e |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
(F2R {| Fnum := m; Fexp := e |} <= x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
(let '(mrs, e'0) := shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) in inbetween_float radix2 (shr_m mrs) e'0 x (loc_of_shr_record mrs)) -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l

(F2R {| Fnum := m; Fexp := e |} <= x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
(let '(mrs, e'0) := shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) in inbetween_float radix2 (shr_m mrs) e'0 x (loc_of_shr_record mrs)) -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R

(let '(mrs, e'0) := shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) in inbetween_float radix2 (shr_m mrs) e'0 x (loc_of_shr_record mrs)) -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R

forall (s : shr_record) (z : Z), shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (s, z) -> inbetween_float radix2 (shr_m s) z x (loc_of_shr_record s) -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')

shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')

(let '(m'0, e'0, l'0) := truncate radix2 fexp (m, e, l) in inbetween_float radix2 m'0 e'0 x l'0 /\ (e'0 = cexp radix2 fexp x \/ l'0 = loc_Exact /\ generic_format radix2 fexp x)) -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')

inbetween_float radix2 m' e' x l' /\ (e' = cexp radix2 fexp x \/ l' = loc_Exact /\ generic_format radix2 fexp x) -> shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'

shr (shr_record_of_loc m l) e (Z.pos p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'

(mrs, e'') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'

e'' = e'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
(mrs, e'') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'

snd (mrs, e'') = snd (fst (m', e', l'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
(mrs, e'') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'

snd (shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e)) = snd (fst (truncate radix2 fexp (m, e, l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
(mrs, e'') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'

snd (shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e)) = snd (fst (if (0 <? fexp (Zdigits radix2 m + e) - e)%Z then truncate_aux radix2 (m, e, l) (fexp (Zdigits radix2 m + e) - e) else (m, e, l)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
(mrs, e'') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e'' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'

(mrs, e'') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'

(mrs, e') = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'

mrs = shr_record_of_loc m' l'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
H5:m' = shr_m mrs
H6:l' = loc_of_shr_record mrs

mrs = shr_record_of_loc m' l'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
H5:m' = shr_m mrs
H6:l' = loc_of_shr_record mrs

mrs = shr_record_of_loc (shr_m mrs) (loc_of_shr_record mrs)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p
He:(e <= fexp (Zdigits radix2 m + e))%Z
x:R
Hx:inbetween_float radix2 m e x l
Hx0:(0 <= x)%R
mrs:shr_record
e'':Z
H3:shr (shr_record_of_loc m l) e (fexp (Zdigits radix2 m + e) - e) = (mrs, e'')
H4:inbetween_float radix2 (shr_m mrs) e' x (loc_of_shr_record mrs)
H1:truncate radix2 fexp (m, e, l) = (m', e', l')
H2:inbetween_float radix2 m' e' x l'
H:e'' = e'
H5:m' = shr_m mrs
H6:l' = loc_of_shr_record mrs

forall (shr_m : Z) (shr_r shr_s : bool), {| shr_m := shr_m; shr_r := shr_r; shr_s := shr_s |} = shr_record_of_loc (SpecFloatCopy.shr_m {| shr_m := shr_m; shr_r := shr_r; shr_s := shr_s |}) (loc_of_shr_record {| shr_m := shr_m; shr_r := shr_r; shr_s := shr_s |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location

forall p : positive, (fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p -> truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p

truncate radix2 fexp (m, e, l) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p

(if (0 <? fexp (Zdigits radix2 m + e) - e)%Z then truncate_aux radix2 (m, e, l) (fexp (Zdigits radix2 m + e) - e) else (m, e, l)) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p

(if (0 <? Z.neg p)%Z then truncate_aux radix2 (m, e, l) (Z.neg p) else (m, e, l)) = (m', e', l') -> shr (shr_record_of_loc m l) e (Z.neg p) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p

(m, e, l) = (m', e', l') -> (shr_record_of_loc m l, e) = (shr_record_of_loc m' l', e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m, e:Z
l:location
Hm:(0 <= m)%Z
m', e':Z
l':location
p:positive
Hp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg p
H:(m, e, l) = (m', e', l')

(shr_record_of_loc m l, e) = (shr_record_of_loc m' l', e')
now inversion H. Qed.
Rounding modes
Inductive mode := mode_NE | mode_ZR | mode_DN | mode_UP | mode_NA.

Definition round_mode m :=
  match m with
  | mode_NE => ZnearestE
  | mode_ZR => Ztrunc
  | mode_DN => Zfloor
  | mode_UP => Zceil
  | mode_NA => ZnearestA
  end.

Definition choice_mode m sx mx lx :=
  match m with
  | mode_NE => cond_incr (round_N (negb (Z.even mx)) lx) mx
  | mode_ZR => mx
  | mode_DN => cond_incr (round_sign_DN sx lx) mx
  | mode_UP => cond_incr (round_sign_UP sx lx) mx
  | mode_NA => cond_incr (round_N true lx) mx
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall m : mode, Valid_rnd (round_mode m)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall m : mode, Valid_rnd (round_mode m)
destruct m ; unfold round_mode ; auto with typeclass_instances. Qed. Definition overflow_to_inf m s := match m with | mode_NE => true | mode_NA => true | mode_ZR => false | mode_UP => negb s | mode_DN => s end. Definition binary_overflow m s := if overflow_to_inf m s then S754_infinity s else S754_finite s (Z.to_pos (Zpower 2 prec - 1)%Z) (emax - prec).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (s : bool), valid_binary (binary_overflow m s) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (s : bool), valid_binary (binary_overflow m s) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

valid_binary (binary_overflow m s) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

valid_binary (if overflow_to_inf m s then S754_infinity s else S754_finite s (Z.to_pos (2 ^ prec - 1)) (emax - prec)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

valid_binary (S754_infinity s) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
valid_binary (S754_finite s (Z.to_pos (2 ^ prec - 1)) (emax - prec)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

valid_binary (S754_finite s (Z.to_pos (2 ^ prec - 1)) (emax - prec)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

(canonical_mantissa (Z.to_pos (2 ^ prec - 1)) (emax - prec) && (emax - prec <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

(canonical_mantissa (Z.to_pos (2 ^ prec - 1)) (emax - prec) && true)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

canonical_mantissa (Z.to_pos (2 ^ prec - 1)) (emax - prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

fexp (Z.pos (digits2_pos (Z.to_pos (2 ^ prec - 1))) + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

fexp (Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1))) + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

fexp (prec + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
prec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

Z.max (prec + (emax - prec) - prec) (3 - emax - prec) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
prec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

(0 < prec)%Z -> (prec < emax)%Z -> Z.max (prec + (emax - prec) - prec) (3 - emax - prec) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
prec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

prec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

prec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

(0 < radix2 ^ prec - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z
prec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool

(Z.succ 0 < radix2 ^ prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z
prec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

prec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

prec = Zdigits radix2 (radix2 ^ prec - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(prec <= Zdigits radix2 (radix2 ^ prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z
(Zdigits radix2 (radix2 ^ prec - 1) <= prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(prec <= Zdigits radix2 (radix2 ^ prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(Z.pred prec < Zdigits radix2 (radix2 ^ prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(radix2 ^ Z.pred prec <= Z.abs (radix2 ^ prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(radix2 ^ Z.pred prec <= radix2 ^ prec - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(radix2 ^ Z.pred prec < radix2 ^ prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(0 <= prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z
(Z.pred prec < prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(Z.pred prec < prec)%Z
apply Z.lt_pred_l.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(Zdigits radix2 (radix2 ^ prec - 1) <= prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(Z.abs (radix2 ^ prec - 1) < radix2 ^ prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
s:bool
H:(0 < radix2 ^ prec - 1)%Z

(radix2 ^ prec - 1 < radix2 ^ prec)%Z
apply Z.lt_pred_l. Qed. Definition binary_fit_aux mode sx mx ex := if Zle_bool ex (emax - prec) then S754_finite sx mx ex else binary_overflow mode sx.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mode0 : mode) (sx : bool) (mx : positive) (ex : Z), canonical_mantissa mx ex = true -> let x := SF2R radix2 (S754_finite sx mx ex) in let z := binary_fit_aux mode0 sx mx ex in valid_binary z = true /\ (if Rlt_bool (Rabs x) (bpow radix2 emax) then SF2R radix2 z = x /\ is_finite_SF z = true /\ sign_SF z = sx else z = binary_overflow mode0 sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mode0 : mode) (sx : bool) (mx : positive) (ex : Z), canonical_mantissa mx ex = true -> let x := SF2R radix2 (S754_finite sx mx ex) in let z := binary_fit_aux mode0 sx mx ex in valid_binary z = true /\ (if Rlt_bool (Rabs x) (bpow radix2 emax) then SF2R radix2 z = x /\ is_finite_SF z = true /\ sign_SF z = sx else z = binary_overflow mode0 sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true

let x := SF2R radix2 (S754_finite sx mx ex) in let z := binary_fit_aux m sx mx ex in valid_binary z = true /\ (if Rlt_bool (Rabs x) (bpow radix2 emax) then SF2R radix2 z = x /\ is_finite_SF z = true /\ sign_SF z = sx else z = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true

valid_binary (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ (if Rlt_bool (Rabs (SF2R radix2 (S754_finite sx mx ex))) (bpow radix2 emax) then SF2R radix2 (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = SF2R radix2 (S754_finite sx mx ex) /\ is_finite_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ sign_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = sx else (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true

valid_binary (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})) (bpow radix2 emax) then SF2R radix2 (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} /\ is_finite_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ sign_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = sx else (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true

valid_binary (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ (if Rlt_bool (Rabs (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ sign_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = sx else (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true

valid_binary (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |})) (bpow radix2 emax) then SF2R radix2 (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ sign_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = sx else (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true

valid_binary (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = true /\ sign_SF (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = sx else (if (ex <=? emax - prec)%Z then S754_finite sx mx ex else binary_overflow m sx) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true

valid_binary (S754_finite sx mx ex) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (S754_finite sx mx ex) = true /\ sign_SF (S754_finite sx mx ex) = sx else S754_finite sx mx ex = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
valid_binary (binary_overflow m sx) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_overflow m sx) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (binary_overflow m sx) = true /\ sign_SF (binary_overflow m sx) = sx else binary_overflow m sx = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true

valid_binary (S754_finite sx mx ex) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (S754_finite sx mx ex) = true /\ sign_SF (S754_finite sx mx ex) = sx else S754_finite sx mx ex = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true

bounded mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true
valid_binary (S754_finite sx mx ex) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (S754_finite sx mx ex) = true /\ sign_SF (S754_finite sx mx ex) = sx else S754_finite sx mx ex = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true

bounded mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true

(canonical_mantissa mx ex && (ex <=? emax - prec)%Z)%bool = true
now rewrite Cx.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true

valid_binary (S754_finite sx mx ex) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (S754_finite sx mx ex) = true /\ sign_SF (S754_finite sx mx ex) = sx else S754_finite sx mx ex = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true

if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (S754_finite sx mx ex) = true /\ sign_SF (S754_finite sx mx ex) = sx else S754_finite sx mx ex = binary_overflow m sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true

SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (S754_finite sx mx ex) = true /\ sign_SF (S754_finite sx mx ex) = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true
(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true

SF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true
(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = true
Hb:bounded mx ex = true

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
now apply bounded_lt_emax.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

valid_binary (binary_overflow m sx) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos mx; Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_overflow m sx) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) /\ is_finite_SF (binary_overflow m sx) = true /\ sign_SF (binary_overflow m sx) = sx else binary_overflow m sx = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

valid_binary (binary_overflow m sx) = true /\ binary_overflow m sx = binary_overflow m sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
(bpow radix2 emax <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

valid_binary (binary_overflow m sx) = true /\ binary_overflow m sx = binary_overflow m sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

valid_binary (binary_overflow m sx) = true
apply binary_overflow_correct.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

(bpow radix2 emax <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

~ (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
Hx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
Hx:bounded mx ex = true

False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
Hx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

bounded mx ex = true -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
Hx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false

(canonical_mantissa mx ex && (ex <=? emax - prec)%Z)%bool = true -> False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
Hx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Cx:canonical_mantissa mx ex = true
He:(ex <=? emax - prec)%Z = false
Hx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R

canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
now apply (canonical_canonical_mantissa false). Qed. Definition binary_round_aux mode sx mx ex lx := let '(mrs', e') := shr_fexp mx ex lx in let '(mrs'', e'') := shr_fexp (choice_mode mode sx (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | Z0 => S754_zero sx | Zpos m => binary_fit_aux mode sx m e'' | _ => S754_nan end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mode0 : mode) (x : R) (mx ex : Z) (lx : location), x <> 0%R -> inbetween_float radix2 mx ex (Rabs x) lx -> (ex <= cexp radix2 fexp x)%Z -> let z := binary_round_aux mode0 (Rlt_bool x 0) mx ex lx in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode mode0) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode0) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow mode0 (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mode0 : mode) (x : R) (mx ex : Z) (lx : location), x <> 0%R -> inbetween_float radix2 mx ex (Rabs x) lx -> (ex <= cexp radix2 fexp x)%Z -> let z := binary_round_aux mode0 (Rlt_bool x 0) mx ex lx in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode mode0) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode0) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow mode0 (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
z:=binary_round_aux m (Rlt_bool x 0) mx ex lx:spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
z:=let '(mrs', e') := shr_fexp mx ex lx in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end:spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z

let z := let '(mrs', e') := shr_fexp mx ex lx in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z

let z := let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z

round radix2 fexp (round_mode m) x = (let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m' l'); Fexp := e' |}) -> valid_binary (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z

round radix2 fexp (round_mode m) x = (let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m' l'); Fexp := e' |}) -> valid_binary (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z

(let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in inbetween_float radix2 m' e' (Rabs x) l' /\ e' = cexp radix2 fexp (Rabs x)) -> round radix2 fexp (round_mode m) x = (let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m' l'); Fexp := e' |}) -> valid_binary (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location

inbetween_float radix2 m1 e1 (Rabs x) l1 /\ e1 = cexp radix2 fexp (Rabs x) -> round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m1 l1); Fexp := e1 |} -> valid_binary (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location

inbetween_float radix2 m1 e1 (Rabs x) l1 /\ e1 = cexp radix2 fexp (Rabs x) -> round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m1 l1); Fexp := e1 |} -> valid_binary (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z

inbetween_float radix2 m1 e1 (Rabs x) l1 /\ e1 = cexp radix2 fexp (Rabs x) -> round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} -> valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

(m1 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

(m1 <= match m with | mode_NE => if round_N (negb (Z.even m1)) l1 then m1 + 1 else m1 | mode_ZR => m1 | mode_DN => if round_sign_DN (Rlt_bool x 0) l1 then m1 + 1 else m1 | mode_UP => if round_sign_UP (Rlt_bool x 0) l1 then m1 + 1 else m1 | mode_NA => if round_N true l1 then m1 + 1 else m1 end)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs m1'; Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs (cond_Zopp (Rlt_bool x 0) m1'); Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 <= m1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 < Z.succ m1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 < F2R {| Fnum := Z.succ m1; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(Rabs x < F2R {| Fnum := Z.succ m1; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}

inbetween_float radix2 m1' e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
Br:inbetween_float radix2 m1' e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
Br:inbetween_float radix2 m1' e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* . m1' = 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
(0 <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(let '(m', _, _) := truncate radix2 fexp (0%Z, e1, loc_Exact) in m' = 0%Z) -> valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location

m2 = 0%Z -> valid_binary match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location

m2 = 0%Z -> valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

valid_binary (S754_zero (Rlt_bool x 0)) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0 else S754_zero (Rlt_bool x 0) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0 else S754_zero (Rlt_bool x 0) = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z
(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z
(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} = SF2R radix2 (S754_zero (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z
(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* . 0 < m1' *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(e1 <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
Z.pos m1' <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(e1 <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(cexp radix2 fexp (Rabs x) <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(cexp radix2 fexp x <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(cexp radix2 fexp x <= cexp radix2 fexp (round radix2 fexp (round_mode m) x))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

round radix2 fexp (round_mode m) x <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

F2R {| Fnum := cond_Zopp true (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(F2R {| Fnum := cond_Zopp true (Z.pos m1'); Fexp := e1 |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
(0 < Rabs (round radix2 fexp (round_mode m) x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
Z.pos m1' <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
(0 <= Z.pos m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2, e2:Z
l2:location

F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m2; Fexp := e2 |} /\ e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}) -> inbetween_float radix2 m2 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2 /\ e2 = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x)) -> valid_binary match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2, e2:Z
l2:location

F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m2; Fexp := e2 |} /\ e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}) -> inbetween_float radix2 m2 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2 /\ e2 = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x)) -> valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2, e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 m2 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := 0; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 0 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary (S754_zero (Rlt_bool x 0)) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0 else S754_zero (Rlt_bool x 0) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := 0; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 0 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.pos m1'; Fexp := e1 |} > F2R {| Fnum := 0; Fexp := e2 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := 0; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 0 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.pos m1'; Fexp := e1 |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

canonical_mantissa m2 e2 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

fexp (Z.pos (digits2_pos m2) + e2) = e2
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

fexp (Zdigits radix2 (Z.pos m2) + e2) = e2
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

fexp (mag radix2 (F2R {| Fnum := Z.pos m2; Fexp := e2 |})) = e2
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)

valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)

if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true

(if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true

(if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m2); Fexp := e2 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m2); Fexp := e2 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true

(if Rlt_bool (Rabs (cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m2; Fexp := e2 |}))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m2; Fexp := e2 |}) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.pos m1'; Fexp := e1 |} > F2R {| Fnum := Z.neg m2; Fexp := e2 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.neg m2; Fexp := e2 |} < R0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
(R0 < F2R {| Fnum := Z.pos m1'; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(R0 < F2R {| Fnum := Z.pos m1'; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

generic_format radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

generic_format radix2 fexp (round radix2 fexp (round_mode m) x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* . not m1' < 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(Rabs (round radix2 fexp (round_mode m) x) > F2R {| Fnum := Z.neg m1'; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(F2R {| Fnum := Z.neg m1'; Fexp := e1 |} < R0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
(R0 <= Rabs (round radix2 fexp (round_mode m) x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(R0 <= Rabs (round radix2 fexp (round_mode m) x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp (Rabs x))%Z

(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z

forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
(* all the modes are valid *)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode m x = cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NE x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NE (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_ZR x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_ZR (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_DN x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_DN (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_ZR x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_ZR (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_DN x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_DN (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_DN x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_DN (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z
(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:inbetween_float radix2 mx ex (Rabs x) lx
Ex:(ex <= cexp radix2 fexp x)%Z

(0 <= mx)%Z
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%R
Ex:(ex <= cexp radix2 fexp x)%Z

(0 <= mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%R
Ex:(ex <= cexp radix2 fexp x)%Z

(0 < Z.succ mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%R
Ex:(ex <= cexp radix2 fexp x)%Z

(0 < F2R {| Fnum := Z.succ mx; Fexp := ?e |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx, ex:Z
lx:location
Px:x <> 0%R
Bx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%R
Ex:(ex <= cexp radix2 fexp x)%Z

(0 <= Rabs x)%R
apply Rabs_pos. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mode0 : mode) (x : R) (mx : positive) (ex : Z) (lx : location), inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx -> (ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z -> let z := binary_round_aux mode0 (Rlt_bool x 0) (Z.pos mx) ex lx in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode mode0) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode0) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow mode0 (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mode0 : mode) (x : R) (mx : positive) (ex : Z) (lx : location), inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx -> (ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z -> let z := binary_round_aux mode0 (Rlt_bool x 0) (Z.pos mx) ex lx in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode mode0) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode0) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow mode0 (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
z:=binary_round_aux m (Rlt_bool x 0) (Z.pos mx) ex lx:spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
z:=let '(mrs', e') := shr_fexp (Z.pos mx) ex lx in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end:spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

let z := let '(mrs', e') := shr_fexp (Z.pos mx) ex lx in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

let z := let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 <= Z.pos mx)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

let z := let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool x 0 else z = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

round radix2 fexp (round_mode m) x = (let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m' l'); Fexp := e' |}) -> valid_binary (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in inbetween_float radix2 m' e' (Rabs x) l' /\ e' = cexp radix2 fexp (Rabs x)) -> round radix2 fexp (round_mode m) x = (let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m' l'); Fexp := e' |}) -> valid_binary (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs', e') := let '(m', e', l') := truncate radix2 fexp (Z.pos mx, ex, lx) in (shr_record_of_loc m' l', e') in let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m mrs') (loc_of_shr_record mrs')) e' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location

inbetween_float radix2 m1 e1 (Rabs x) l1 /\ e1 = cexp radix2 fexp (Rabs x) -> round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m1 l1); Fexp := e1 |} -> valid_binary (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) (shr_m (shr_record_of_loc m1 l1)) (loc_of_shr_record (shr_record_of_loc m1 l1))) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location

inbetween_float radix2 m1 e1 (Rabs x) l1 /\ e1 = cexp radix2 fexp (Rabs x) -> round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m1 l1); Fexp := e1 |} -> valid_binary (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (choice_mode m (Rlt_bool x 0) m1 l1) e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z

inbetween_float radix2 m1 e1 (Rabs x) l1 /\ e1 = cexp radix2 fexp (Rabs x) -> round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} -> valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = round radix2 fexp (round_mode m) x /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

(m1 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}

(m1 <= match m with | mode_NE => if round_N (negb (Z.even m1)) l1 then m1 + 1 else m1 | mode_ZR => m1 | mode_DN => if round_sign_DN (Rlt_bool x 0) l1 then m1 + 1 else m1 | mode_UP => if round_sign_UP (Rlt_bool x 0) l1 then m1 + 1 else m1 | mode_NA => if round_N true l1 then m1 + 1 else m1 end)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs m1'; Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs (cond_Zopp (Rlt_bool x 0) m1'); Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

Rabs (round radix2 fexp (round_mode m) x) = Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 <= m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 <= m1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 < Z.succ m1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(0 < F2R {| Fnum := Z.succ m1; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z

(Rabs x < F2R {| Fnum := Z.succ m1; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}

inbetween_float radix2 m1' e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
Br:inbetween_float radix2 m1' e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':=choice_mode m (Rlt_bool x 0) m1 l1:Z
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |}
Hm:(m1 <= m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}
Br:inbetween_float radix2 m1' e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp m1' e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp 0 e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* . m1' = 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
(0 <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(let '(m', _, _) := truncate radix2 fexp (0%Z, e1, loc_Exact) in m' = 0%Z) -> valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (0%Z, e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location

m2 = 0%Z -> valid_binary match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location

m2 = 0%Z -> valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

valid_binary (S754_zero (Rlt_bool x 0)) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0 else S754_zero (Rlt_bool x 0) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0 else S754_zero (Rlt_bool x 0) = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z
(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z
(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} = SF2R radix2 (S754_zero (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z
(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}
Hm:(m1 <= 0)%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := 0; Fexp := e1 |}
Br:inbetween_float radix2 0 e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
m2, e2:Z
l2:location
Hm2:m2 = 0%Z

(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* . 0 < m1' *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(e1 <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
Z.pos m1' <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(e1 <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(cexp radix2 fexp (Rabs x) <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(cexp radix2 fexp x <= fexp (mag radix2 (round radix2 fexp (round_mode m) x)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(cexp radix2 fexp x <= cexp radix2 fexp (round radix2 fexp (round_mode m) x))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

round radix2 fexp (round_mode m) x <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

F2R {| Fnum := cond_Zopp true (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(F2R {| Fnum := cond_Zopp true (Z.pos m1'); Fexp := e1 |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(F2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
(0 < Rabs (round radix2 fexp (round_mode m) x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
Z.pos m1' <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.pos m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
(0 <= Z.pos m1')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

(let '(m', e', _) := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m'; Fexp := e' |} /\ e' = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})) -> (let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in inbetween_float radix2 m' e' (Rabs (round radix2 fexp (round_mode m) x)) l' /\ e' = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))) -> valid_binary (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := let '(m', e', l') := truncate radix2 fexp (Z.pos m1', e1, loc_Exact) in (shr_record_of_loc m' l', e') in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2, e2:Z
l2:location

F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m2; Fexp := e2 |} /\ e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}) -> inbetween_float radix2 m2 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2 /\ e2 = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x)) -> valid_binary match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match shr_m (shr_record_of_loc m2 l2) with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2, e2:Z
l2:location

F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m2; Fexp := e2 |} /\ e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}) -> inbetween_float radix2 m2 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2 /\ e2 = cexp radix2 fexp (Rabs (round radix2 fexp (round_mode m) x)) -> valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2, e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 m2 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = true /\ sign_SF match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = Rlt_bool x 0 else match m2 with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e2 | Z.neg _ => S754_nan end = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := 0; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 0 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary (S754_zero (Rlt_bool x 0)) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (S754_zero (Rlt_bool x 0)) = true /\ sign_SF (S754_zero (Rlt_bool x 0)) = Rlt_bool x 0 else S754_zero (Rlt_bool x 0) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := 0; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 0 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.pos m1'; Fexp := e1 |} > F2R {| Fnum := 0; Fexp := e2 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := 0; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 0 e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.pos m1'; Fexp := e1 |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

canonical_mantissa m2 e2 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

fexp (Z.pos (digits2_pos m2) + e2) = e2
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

fexp (Zdigits radix2 (Z.pos m2) + e2) = e2
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

fexp (mag radix2 (F2R {| Fnum := Z.pos m2; Fexp := e2 |})) = e2
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)

valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true
H6:if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)

if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true

(if Rlt_bool (Rabs (SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = SF2R radix2 (S754_finite (Rlt_bool x 0) m2 e2) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true

(if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m2); Fexp := e2 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m2); Fexp := e2 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.pos m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.pos m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true

(if Rlt_bool (Rabs (cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m2; Fexp := e2 |}))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m2; Fexp := e2 |}) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}))) (bpow radix2 emax) then SF2R radix2 (binary_fit_aux m (Rlt_bool x 0) m2 e2) = cond_Ropp (Rlt_bool x 0) (F2R {| Fnum := Z.pos m1'; Fexp := e1 |}) /\ is_finite_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = true /\ sign_SF (binary_fit_aux m (Rlt_bool x 0) m2 e2) = Rlt_bool x 0 else binary_fit_aux m (Rlt_bool x 0) m2 e2 = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

valid_binary S754_nan = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 S754_nan = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} /\ is_finite_SF S754_nan = true /\ sign_SF S754_nan = Rlt_bool x 0 else S754_nan = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.pos m1'; Fexp := e1 |} > F2R {| Fnum := Z.neg m2; Fexp := e2 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(F2R {| Fnum := Z.neg m2; Fexp := e2 |} < R0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2
(R0 < F2R {| Fnum := Z.pos m1'; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
m2:positive
e2:Z
l2:location
H3:F2R {| Fnum := Z.pos m1'; Fexp := e1 |} = F2R {| Fnum := Z.neg m2; Fexp := e2 |}
H4:e2 = cexp radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
H2:inbetween_float radix2 (Z.neg m2) e2 (Rabs (round radix2 fexp (round_mode m) x)) l2

(R0 < F2R {| Fnum := Z.pos m1'; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z
generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

generic_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

generic_format radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |}
Hm:(m1 <= Z.pos m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.pos m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.pos m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
He:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z

generic_format radix2 fexp (round radix2 fexp (round_mode m) x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

valid_binary (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |})) (bpow radix2 emax) then SF2R radix2 (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |} /\ is_finite_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = true /\ sign_SF (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = Rlt_bool x 0 else (let '(mrs'', e'') := shr_fexp (Z.neg m1') e1 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (Rlt_bool x 0) | Z.pos m0 => binary_fit_aux m (Rlt_bool x 0) m0 e'' | Z.neg _ => S754_nan end) = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* . not m1' < 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(Rabs (round radix2 fexp (round_mode m) x) > F2R {| Fnum := Z.neg m1'; Fexp := e1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(F2R {| Fnum := Z.neg m1'; Fexp := e1 |} < R0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact
(R0 <= Rabs (round radix2 fexp (round_mode m) x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
m1, e1:Z
l1:location
m1':positive
H1a:inbetween_float radix2 m1 e1 (Rabs x) l1
H1b:e1 = cexp radix2 fexp (Rabs x)
H1c:round radix2 fexp (round_mode m) x = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.neg m1'); Fexp := e1 |}
Hm:(m1 <= Z.neg m1')%Z
Hr:Rabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.neg m1'; Fexp := e1 |}
Br:inbetween_float radix2 (Z.neg m1') e1 (Rabs (round radix2 fexp (round_mode m) x)) loc_Exact

(R0 <= Rabs (round radix2 fexp (round_mode m) x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(0 < Rabs x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:R
mx:positive
ex:Z
lx:location
Bx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lx
Ex:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

forall (x0 : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x0) l -> round_mode m x0 = cond_Zopp (Rlt_bool x0 0) (choice_mode m (Rlt_bool x0 0) m0 l)
(* all the modes are valid *)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode m x = cond_Zopp (Rlt_bool x 0) (choice_mode m (Rlt_bool x 0) m0 l)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NE x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NE (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_ZR x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_ZR (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_DN x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_DN (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_ZR x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_ZR (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_DN x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_DN (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_DN x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_DN (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_UP x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_UP (Rlt_bool x 0) m0 l)
m:mode
forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
m:mode

forall (x : R) (m0 : Z) (l : location), inbetween_int m0 (Rabs x) l -> round_mode mode_NA x = cond_Zopp (Rlt_bool x 0) (choice_mode mode_NA (Rlt_bool x 0) m0 l)
exact inbetween_int_NA_sign. Qed.
Multiplication
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (sx : bool) (mx : positive) (ex : Z), bounded mx ex = true -> forall (sy : bool) (my : positive) (ey : Z), bounded my ey = true -> let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let y := F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in let z := binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (x * y))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (x * y) /\ is_finite_SF z = true /\ sign_SF z = xorb sx sy else z = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (sx : bool) (mx : positive) (ex : Z), bounded mx ex = true -> forall (sy : bool) (my : positive) (ey : Z), bounded my ey = true -> let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let y := F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in let z := binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (x * y))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (x * y) /\ is_finite_SF z = true /\ sign_SF z = xorb sx sy else z = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

let z := binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (x * y))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (x * y) /\ is_finite_SF z = true /\ sign_SF z = xorb sx sy else z = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy else binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R (Fmult {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R (Fmult {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) /\ is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy else binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy else binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

valid_binary (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) /\ is_finite_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0) (Z.pos (mx * my)) (ex + ey) loc_Exact) = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 else binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

inbetween_float radix2 (Z.pos (mx * my)) (ex + ey) (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |})) loc_Exact
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) = F2R {| Fnum := Z.pos (mx * my); Fexp := ex + ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

F2R (Fabs {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) = F2R {| Fnum := Z.pos (mx * my); Fexp := ex + ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Z.abs (cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my)) = Z.pos (mx * my)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(Z.abs (cond_Zopp sx (Z.pos mx)) * Z.abs (cond_Zopp sy (Z.pos my)))%Z = Z.pos (mx * my)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e
(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z

forall (m : positive) (e : Z), bounded m e = true -> fexp (Zdigits radix2 (Z.pos m) + e) = e
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e
(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
m:positive
e:Z
Hb:bounded m e = true

fexp (Zdigits radix2 (Z.pos m) + e) = e
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e
(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
m:positive
e:Z
Hb:bounded m e = true
H:canonical_mantissa m e = true

fexp (Zdigits radix2 (Z.pos m) + e) = e
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e
(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
m:positive
e:Z
Hb:bounded m e = true
H:canonical_mantissa m e = true

Zeq_bool (fexp (Zdigits radix2 (Z.pos m) + e)) e = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e
(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e

(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
H:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = e

fexp (Zdigits radix2 (Z.pos mx) + ex) = ex -> fexp (Zdigits radix2 (Z.pos my) + ey) = ey -> (ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey:Z

fexp (Zdigits radix2 (Z.pos mx) + ex) = ex -> fexp (Zdigits radix2 (Z.pos my) + ey) = ey -> (ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey:Z

Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) emin = ex -> Z.max (Zdigits radix2 (Z.pos my) + ey - prec) emin = ey -> (ex + ey <= Z.max (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey) - prec) emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey:Z

(Zdigits radix2 (Z.pos mx) + Zdigits radix2 (Z.pos my) - 1 <= Zdigits radix2 (Z.pos mx * Z.pos my))%Z -> Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) emin = ex -> Z.max (Zdigits radix2 (Z.pos my) + ey - prec) emin = ey -> (ex + ey <= Z.max (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey) - prec) emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey:Z

(0 < Zdigits radix2 (Z.pos mx))%Z -> (0 < Zdigits radix2 (Z.pos my))%Z -> (Zdigits radix2 (Z.pos mx) + Zdigits radix2 (Z.pos my) - 1 <= Zdigits radix2 (Z.pos mx * Z.pos my))%Z -> Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) emin = ex -> Z.max (Zdigits radix2 (Z.pos my) + ey - prec) emin = ey -> (ex + ey <= Z.max (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey) - prec) emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey:Z

forall z z0 z1 : Z, (0 < z)%Z -> (0 < z0)%Z -> (z + z0 - 1 <= z1)%Z -> Z.max (z + ex - prec) emin = ex -> Z.max (z0 + ey - prec) emin = ey -> (ex + ey <= Z.max (z1 + (ex + ey) - prec) emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey, dx, dy, dxy:Z
Hx:(0 < dx)%Z
Hy:(0 < dy)%Z
Hxy:(dx + dy - 1 <= dxy)%Z

Z.max (dx + ex - prec) emin = ex -> Z.max (dy + ey - prec) emin = ey -> (ex + ey <= Z.max (dxy + (ex + ey) - prec) emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey, dx, dy, dxy:Z
Hx:(0 < dx)%Z
Hy:(0 < dy)%Z
Hxy:(dx + dy - 1 <= dxy)%Z

Z.max (dx + ex - prec) (3 - emax - prec) = ex -> Z.max (dy + ey - prec) (3 - emax - prec) = ey -> (ex + ey <= Z.max (dxy + (ex + ey) - prec) (3 - emax - prec))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
my:positive
ey, dx, dy, dxy:Z
Hx:(0 < dx)%Z
Hy:(0 < dy)%Z
Hxy:(dx + dy - 1 <= dxy)%Z

(prec < emax)%Z -> Z.max (dx + ex - prec) (3 - emax - prec) = ex -> Z.max (dy + ey - prec) (3 - emax - prec) = ey -> (ex + ey <= Z.max (dxy + (ex + ey) - prec) (3 - emax - prec))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb true true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb true false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(0 <= F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb true false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb true false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
y:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |})%R
now apply F2R_ge_0. Qed. Definition Bmult m x y := match x, y with | B754_nan, _ | _, B754_nan => B754_nan | B754_infinity sx, B754_infinity sy => B754_infinity (xorb sx sy) | B754_infinity sx, B754_finite sy _ _ _ => B754_infinity (xorb sx sy) | B754_finite sx _ _ _, B754_infinity sy => B754_infinity (xorb sx sy) | B754_infinity _, B754_zero _ => B754_nan | B754_zero _, B754_infinity _ => B754_nan | B754_finite sx _ _ _, B754_zero sy => B754_zero (xorb sx sy) | B754_zero sx, B754_finite sy _ _ _ => B754_zero (xorb sx sy) | B754_zero sx, B754_zero sy => B754_zero (xorb sx sy) | B754_finite sx mx ex Hx, B754_finite sy my ey Hy => SF2B _ (proj1 (Bmult_correct_aux m sx mx ex Hx sy my ey Hy)) end. (* TODO: lemme d'equivalence *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x * B2R y))) (bpow radix2 emax) then B2R (Bmult m x y) = round radix2 fexp (round_mode m) (B2R x * B2R y) /\ is_finite (Bmult m x y) = (is_finite x && is_finite y)%bool /\ (is_nan (Bmult m x y) = false -> Bsign (Bmult m x y) = xorb (Bsign x) (Bsign y)) else B2SF (Bmult m x y) = binary_overflow m (xorb (Bsign x) (Bsign y))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x * B2R y))) (bpow radix2 emax) then B2R (Bmult m x y) = round radix2 fexp (round_mode m) (B2R x * B2R y) /\ is_finite (Bmult m x y) = (is_finite x && is_finite y)%bool /\ (is_nan (Bmult m x y) = false -> Bsign (Bmult m x y) = xorb (Bsign x) (Bsign y)) else B2SF (Bmult m x y) = binary_overflow m (xorb (Bsign x) (Bsign y))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) * B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bmult m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) * B2R (B754_finite sy my ey Hy)) /\ is_finite (Bmult m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = (is_finite (B754_finite sx mx ex Hx) && is_finite (B754_finite sy my ey Hy))%bool /\ (is_nan (Bmult m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = false -> Bsign (Bmult m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = xorb (Bsign (B754_finite sx mx ex Hx)) (Bsign (B754_finite sy my ey Hy))) else B2SF (Bmult m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (xorb (Bsign (B754_finite sx mx ex Hx)) (Bsign (B754_finite sy my ey Hy)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (Bmult_correct_aux m sx mx ex Hx sy my ey Hy))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (Bmult_correct_aux m sx mx ex Hx sy my ey Hy))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (Bmult_correct_aux m sx mx ex Hx sy my ey Hy))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (Bmult_correct_aux m sx mx ex Hx sy my ey Hy))) = xorb sx sy) else B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (Bmult_correct_aux m sx mx ex Hx sy my ey Hy))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

forall (e : valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true) (y : if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy else binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy)), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj e y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj e y))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj e y))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj e y))) = xorb sx sy) else B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj e y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true

forall y : if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy else binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = xorb sx sy) else B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true

forall y : SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true /\ sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy, B2R (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy

B2R (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy

B2R (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy
is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy

is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy

is_finite (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy
is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy

is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:SF2R radix2 (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy

is_nan (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true

forall y : binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy), B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
H1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = true
H2:binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact = binary_overflow m (xorb sx sy)

B2SF (SF2B (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) (proj1 (conj H1 H2))) = binary_overflow m (xorb sx sy)
now rewrite B2SF_SF2B. Qed.
Normalization and rounding
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex ex' : Z), let (mx', ex'') := shl_align mx ex ex' in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex ex' : Z), let (mx', ex'') := shl_align mx ex ex' in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z

let (mx', ex'') := shl_align mx ex ex' in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z

let (mx', ex'') := match (ex' - ex)%Z with | Z.neg d => (shift_pos d mx, ex') | _ => (mx, ex) end in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z

(ex' - ex)%Z = 0%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
(* d = 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
H:(ex' - ex)%Z = 0%Z

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
H:(ex' - ex)%Z = 0%Z

(ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
H:(ex' - ex)%Z = 0%Z

(ex <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z

forall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
(* d > 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.pos d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.pos d

(ex <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.pos d

(ex <= ex' - ex + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.pos d

(ex <= Z.pos d + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.pos d

(0 + ex <= Z.pos d + ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z

forall p : positive, (ex' - ex)%Z = Z.neg p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos p mx); Fexp := ex' |} /\ (ex' <= ex')%Z
(* d < 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos d mx); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * Z.pow_pos 2 d; Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ Z.pos d; Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (- Z.neg d); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (- (ex' - ex)); Fexp := ex' |} /\ (ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (- (ex' - ex)); Fexp := ex' |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d
(ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (ex - ex'); Fexp := ex' |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d
(ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

(ex' <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d
(ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

(0 <= ex - ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d
(ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

(0 <= - (ex' - ex))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d
(ex' <= ex')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
d:positive
Hd:(ex' - ex)%Z = Z.neg d

(ex' <= ex')%Z
apply Z.le_refl. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex ex' : Z), (ex' <= ex)%Z -> snd (shl_align mx ex ex') = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex ex' : Z), (ex' <= ex)%Z -> snd (shl_align mx ex ex') = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z

snd (shl_align mx ex ex') = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z

snd match (ex' - ex)%Z with | Z.neg d => (shift_pos d mx, ex') | _ => (mx, ex) end = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z

(ex' - ex)%Z = 0%Z -> ex = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
forall p : positive, (ex' - ex)%Z = Z.pos p -> ex = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
H:(ex' - ex)%Z = 0%Z

ex = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
forall p : positive, (ex' - ex)%Z = Z.pos p -> ex = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z

forall p : positive, (ex' - ex)%Z = Z.pos p -> ex = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
p:positive

(ex' - ex)%Z = Z.pos p -> ex = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
forall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z

forall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex, ex':Z
He:(ex' <= ex)%Z
p:positive
H:(ex' - ex)%Z = Z.neg p

ex' = ex'
apply refl_equal. Qed. Definition shl_align_fexp mx ex := shl_align mx ex (fexp (Zpos (digits2_pos mx) + ex)).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), let (mx', ex') := shl_align_fexp mx ex in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (mx : positive) (ex : Z), let (mx', ex') := shl_align_fexp mx ex in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z

let (mx', ex') := shl_align_fexp mx ex in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z

let (mx', ex') := shl_align mx ex (fexp (Z.pos (digits2_pos mx) + ex)) in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z

(let (mx', ex'') := shl_align mx ex (fexp (Z.pos (digits2_pos mx) + ex)) in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= fexp (Z.pos (digits2_pos mx) + ex))%Z) -> let (mx', ex') := shl_align mx ex (fexp (Z.pos (digits2_pos mx) + ex)) in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z

(let (mx', ex'') := shl_align mx ex (fexp (Zdigits radix2 (Z.pos mx) + ex)) in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z) -> let (mx', ex') := shl_align mx ex (fexp (Zdigits radix2 (Z.pos mx) + ex)) in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z

forall (p : positive) (z : Z), F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos p; Fexp := z |} /\ (z <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos p; Fexp := z |} /\ (z <= fexp (Zdigits radix2 (Z.pos p) + z))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
(ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(ex' <= fexp (mag radix2 (F2R {| Fnum := Z.pos mx'; Fexp := ex' |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z
Z.pos mx' <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(ex' <= fexp (mag radix2 (F2R {| Fnum := Z.pos mx'; Fexp := ex' |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
mx':positive
ex':Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}
H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z

(ex' <= fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
now rewrite mag_F2R_Zdigits. Qed. (* TODO: lemme equivalence pour le cas mode_NE *) Definition binary_round m sx mx ex := let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Zpos mz) ez loc_Exact.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (sx : bool) (mx : positive) (ex : Z), let z := binary_round m sx mx ex in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = sx else z = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (sx : bool) (mx : positive) (ex : Z), let z := binary_round m sx mx ex in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = sx else z = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z

let z := binary_round m sx mx ex in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = sx else z = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z

valid_binary (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite_SF (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ sign_SF (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = sx else (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z

(let (mx', ex') := shl_align_fexp mx ex in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Z) -> valid_binary (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite_SF (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ sign_SF (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = sx else (let '(mz, ez) := shl_align_fexp mx ex in binary_round_aux m sx (Z.pos mz) ez loc_Exact) = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z

F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |} /\ (ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z -> valid_binary (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite_SF (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ sign_SF (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = sx else binary_round_aux m sx (Z.pos mz) ez loc_Exact = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z

valid_binary (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite_SF (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ sign_SF (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = sx else binary_round_aux m sx (Z.pos mz) ez loc_Exact = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

valid_binary (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = round radix2 fexp (round_mode m) x /\ is_finite_SF (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = true /\ sign_SF (binary_round_aux m sx (Z.pos mz) ez loc_Exact) = sx else binary_round_aux m sx (Z.pos mz) ez loc_Exact = binary_overflow m sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

valid_binary (binary_round_aux m (Rlt_bool x 0) (Z.pos mz) ez loc_Exact) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (Rlt_bool x 0) (Z.pos mz) ez loc_Exact) = round radix2 fexp (round_mode m) x /\ is_finite_SF (binary_round_aux m (Rlt_bool x 0) (Z.pos mz) ez loc_Exact) = true /\ sign_SF (binary_round_aux m (Rlt_bool x 0) (Z.pos mz) ez loc_Exact) = Rlt_bool x 0 else binary_round_aux m (Rlt_bool x 0) (Z.pos mz) ez loc_Exact = binary_overflow m (Rlt_bool x 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool x 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

inbetween_float radix2 (Z.pos mz) ez (Rabs x) loc_Exact
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool x 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

Rabs x = F2R {| Fnum := Z.pos mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool x 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := Z.pos mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool x 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool x 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

Rlt_bool x 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) 0 = sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
mz:positive
ez:Z
H1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}
H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%R
now apply F2R_ge_0. Qed. (* TODO: lemme equivalence pour le cas mode_NE *) Definition binary_normalize mode m e szero := match m with | Z0 => B754_zero szero | Zpos m => SF2B _ (proj1 (binary_round_correct mode false m e)) | Zneg m => SF2B _ (proj1 (binary_round_correct mode true m e)) end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (mx ex : Z) (szero : bool), let x := F2R {| Fnum := mx; Fexp := ex |} in let z := binary_normalize m mx ex szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then B2R z = round radix2 fexp (round_mode m) x /\ is_finite z = true /\ Bsign z = match Rcompare x 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (mx ex : Z) (szero : bool), let x := F2R {| Fnum := mx; Fexp := ex |} in let z := binary_normalize m mx ex szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then B2R z = round radix2 fexp (round_mode m) x /\ is_finite z = true /\ Bsign z = match Rcompare x 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx, ez:Z
szero:bool

let x := F2R {| Fnum := mx; Fexp := ez |} in let z := binary_normalize m mx ez szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then B2R z = round radix2 fexp (round_mode m) x /\ is_finite z = true /\ Bsign z = match Rcompare x 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z = binary_overflow m (Rlt_bool x 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := 0; Fexp := ez |}))) (bpow radix2 emax) then 0%R = round radix2 fexp (round_mode m) (F2R {| Fnum := 0; Fexp := ez |}) /\ true = true /\ szero = match Rcompare (F2R {| Fnum := 0; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else S754_zero szero = binary_overflow m (Rlt_bool (F2R {| Fnum := 0; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool

0%R = 0%R /\ true = true /\ szero = match Rcompare 0 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool

true = true /\ szero = match Rcompare 0 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool

szero = match Rcompare 0 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
ez:Z
szero:bool

(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 (binary_round_correct m false mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
(* . mz > 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

forall a : let z := binary_round m false mz ez in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = false else z = binary_overflow m false), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 a)) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 a)) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 a)) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

forall a : valid_binary (binary_round m false mz ez) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite_SF (binary_round m false mz ez) = true /\ sign_SF (binary_round m false mz ez) = false else binary_round m false mz ez = binary_overflow m false), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m false mz ez) (proj1 a)) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 a)) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 a)) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})) < bpow radix2 emax)%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite_SF (binary_round m false mz ez) = true /\ sign_SF (binary_round m false mz ez) = false, B2R (SF2B (binary_round m false mz ez) (proj1 a)) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 a)) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 a)) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

B2R (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

B2R (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false
is_finite (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

is_finite (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true /\ Bsign (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

is_finite (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false
Bsign (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

Bsign (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

false = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

(0 < F2R {| Fnum := Z.pos mz; Fexp := ez |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

(0 < Fnum {| Fnum := Z.pos mz; Fexp := ez |})%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m false mz ez) = true
Rz:SF2R radix2 (binary_round m false mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m false mz ez) = true
Rz'':sign_SF (binary_round m false mz ez) = false

(0 < Z.pos mz)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m false mz ez) = true /\ binary_round m false mz ez = binary_overflow m false, B2SF (SF2B (binary_round m false mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m false mz ez) = true
Rz:binary_round m false mz ez = binary_overflow m false

B2SF (SF2B (binary_round m false mz ez) (proj1 (conj Vz Rz))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m false mz ez) = true
Rz:binary_round m false mz ez = binary_overflow m false

binary_overflow m false = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m false mz ez) = true
Rz:binary_round m false mz ez = binary_overflow m false

false = Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m false mz ez) = true
Rz:binary_round m false mz ez = binary_overflow m false

Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m false mz ez) = true
Rz:binary_round m false mz ez = binary_overflow m false

(0 <= F2R {| Fnum := Z.pos mz; Fexp := ez |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 (binary_round_correct m true mz ez))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
(* . mz < 0 *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

forall a : let z := binary_round m true mz ez in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) x /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow m true), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 a)) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 a)) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 a)) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

forall a : valid_binary (binary_round m true mz ez) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite_SF (binary_round m true mz ez) = true /\ sign_SF (binary_round m true mz ez) = true else binary_round m true mz ez = binary_overflow m true), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (SF2B (binary_round m true mz ez) (proj1 a)) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 a)) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 a)) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})) < bpow radix2 emax)%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite_SF (binary_round m true mz ez) = true /\ sign_SF (binary_round m true mz ez) = true, B2R (SF2B (binary_round m true mz ez) (proj1 a)) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 a)) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 a)) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

B2R (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |}) /\ is_finite (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

B2R (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true
is_finite (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

is_finite (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true /\ Bsign (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

is_finite (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true
Bsign (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

Bsign (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

true = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

(F2R {| Fnum := Z.neg mz; Fexp := ez |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

(Fnum {| Fnum := Z.neg mz; Fexp := ez |} < 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Vz:valid_binary (binary_round m true mz ez) = true
Rz:SF2R radix2 (binary_round m true mz ez) = round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})
Rz':is_finite_SF (binary_round m true mz ez) = true
Rz'':sign_SF (binary_round m true mz ez) = true

(Z.neg mz < 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool

(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R -> forall a : valid_binary (binary_round m true mz ez) = true /\ binary_round m true mz ez = binary_overflow m true, B2SF (SF2B (binary_round m true mz ez) (proj1 a)) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m true mz ez) = true
Rz:binary_round m true mz ez = binary_overflow m true

B2SF (SF2B (binary_round m true mz ez) (proj1 (conj Vz Rz))) = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m true mz ez) = true
Rz:binary_round m true mz ez = binary_overflow m true

binary_overflow m true = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m true mz ez) = true
Rz:binary_round m true mz ez = binary_overflow m true

true = Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m true mz ez) = true
Rz:binary_round m true mz ez = binary_overflow m true

Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mz:positive
ez:Z
szero:bool
Hz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%R
Vz:valid_binary (binary_round m true mz ez) = true
Rz:binary_round m true mz ez = binary_overflow m true

(F2R {| Fnum := Z.neg mz; Fexp := ez |} < 0)%R
now apply F2R_lt_0. Qed.
Addition
Definition Bplus m x y :=
  match x, y with
  | B754_nan, _ | _, B754_nan => B754_nan
  | B754_infinity sx, B754_infinity sy => if Bool.eqb sx sy then x else B754_nan
  | B754_infinity _, _ => x
  | _, B754_infinity _ => y
  | B754_zero sx, B754_zero sy =>
    if Bool.eqb sx sy then x else
    match m with mode_DN => B754_zero true | _ => B754_zero false end
  | B754_zero _, _ => y
  | _, B754_zero _ => x
  | B754_finite sx mx ex Hx, B754_finite sy my ey Hy =>
    let ez := Z.min ex ey in
    binary_normalize m (Zplus (cond_Zopp sx (Zpos (fst (shl_align mx ex ez)))) (cond_Zopp sy (Zpos (fst (shl_align my ey ez)))))
      ez (match m with mode_DN => true | _ => false end)
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), is_finite x = true -> is_finite y = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + B2R y))) (bpow radix2 emax) then B2R (Bplus m x y) = round radix2 fexp (round_mode m) (B2R x + B2R y) /\ is_finite (Bplus m x y) = true /\ Bsign (Bplus m x y) = match Rcompare (B2R x + B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign y)%bool | _ => (Bsign x && Bsign y)%bool end | Lt => true | Gt => false end else B2SF (Bplus m x y) = binary_overflow m (Bsign x) /\ Bsign x = Bsign y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), is_finite x = true -> is_finite y = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + B2R y))) (bpow radix2 emax) then B2R (Bplus m x y) = round radix2 fexp (round_mode m) (B2R x + B2R y) /\ is_finite (Bplus m x y) = true /\ Bsign (Bplus m x y) = match Rcompare (B2R x + B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign y)%bool | _ => (Bsign x && Bsign y)%bool end | Lt => true | Gt => false end else B2SF (Bplus m x y) = binary_overflow m (Bsign x) /\ Bsign x = Bsign y
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_zero sx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_zero sy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_zero sy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true

B2R (Bplus m (B754_zero sx) (B754_zero sy)) = 0%R /\ is_finite (Bplus m (B754_zero sx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_zero sy)) = match Rcompare (B2R (B754_zero sx)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true

B2R (if Bool.eqb sx sy then B754_zero sx else match m with | mode_DN => B754_zero true | _ => B754_zero false end) = 0%R /\ is_finite (if Bool.eqb sx sy then B754_zero sx else match m with | mode_DN => B754_zero true | _ => B754_zero false end) = true /\ Bsign (if Bool.eqb sx sy then B754_zero sx else match m with | mode_DN => B754_zero true | _ => B754_zero false end) = match Rcompare 0 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true

B2R (if Bool.eqb sx sy then B754_zero sx else match m with | mode_DN => B754_zero true | _ => B754_zero false end) = 0%R /\ is_finite (if Bool.eqb sx sy then B754_zero sx else match m with | mode_DN => B754_zero true | _ => B754_zero false end) = true /\ Bsign (if Bool.eqb sx sy then B754_zero sx else match m with | mode_DN => B754_zero true | _ => B754_zero false end) = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_zero sy) = true

(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_zero sx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_zero sx)) /\ Bsign (B754_zero sx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

B2R (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = B2R (B754_finite sy my ey Hy) /\ is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

is_finite (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

Bsign (Bplus m (B754_zero sx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_zero sx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_zero sx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

sy = match Rcompare (F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

sy = match Rcompare (IZR (Fnum {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) * bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

sy = match Rcompare (IZR (Fnum {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

sy = match (Fnum {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} ?= 0)%Z with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_zero sx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

generic_format radix2 fexp (B2R (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_zero sy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_zero sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

B2R (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = B2R (B754_finite sx mx ex Hx) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_zero sy)) = match Rcompare (B2R (B754_finite sx mx ex Hx)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_zero sy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_zero sy))%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

sx = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

sx = match Rcompare (IZR (Fnum {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) * bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

sx = match Rcompare (IZR (Fnum {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

sx = match (Fnum {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} ?= 0)%Z with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true
generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_zero sy) = true

generic_format radix2 fexp (B2R (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
(* *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) + B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (B754_finite sy my ey Hy))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (B754_finite sy my ey Hy))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (B754_finite sy my ey Hy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = true /\ Bsign (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) szero) = true /\ Bsign (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez)))) ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez)))) ez szero) = true /\ Bsign (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez)))) ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez)))) ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

(cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

(let (mx', ex'') := shl_align mx ex ez in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

(let (mx', ex'') := shl_align my ey ez in F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (let (mx', ex'') := shl_align mx ex ez in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

snd (shl_align mx ex ez) = ez -> (let (mx', ex'') := shl_align my ey ez in F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (let (mx', ex'') := shl_align mx ex ez in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

snd (shl_align my ey ez) = ez -> snd (shl_align mx ex ez) = ez -> (let (mx', ex'') := shl_align my ey ez in F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (let (mx', ex'') := shl_align mx ex ez in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z

snd (shl_align my ey ez) = ez -> snd (mx', ex') = ez -> (let (mx'0, ex'') := shl_align my ey ez in F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos mx'0; Fexp := ex'' |} /\ (ex'' <= ez)%Z) -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= ez)%Z -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

snd (my', ey') = ez -> snd (mx', ex') = ez -> F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ey' |} /\ (ey' <= ez)%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= ez)%Z -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

ey' = ez -> ex' = ez -> F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ey' |} /\ (ey' <= ez)%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= ez)%Z -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z
H1:ey' = ez
H2:ex' = ez

F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ey' |} /\ (ey' <= ez)%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= ez)%Z -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z
H1:ey' = ez
H2:ex' = ez

F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ez |} /\ (ez <= ez)%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ez |} /\ (ez <= ez)%Z -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ez |} /\ (ez <= ez)%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ez |} /\ (ez <= ez)%Z -> (cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z
H1:F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ez |}
H2:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ez |}

(cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my; Fexp := ey |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z
H1:F2R {| Fnum := Z.pos my; Fexp := ey |} = F2R {| Fnum := Z.pos my'; Fexp := ez |}
H2:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ez |}

(cond_Ropp sx (F2R {| Fnum := Z.pos mx'; Fexp := ez |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my'; Fexp := ez |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

(cond_Ropp sx (F2R {| Fnum := Z.pos mx'; Fexp := ez |}) + cond_Ropp sy (F2R {| Fnum := Z.pos my'; Fexp := ez |}))%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

(F2R {| Fnum := cond_Zopp sx (Z.pos mx'); Fexp := ez |} + F2R {| Fnum := cond_Zopp sy (Z.pos my'); Fexp := ez |})%R = F2R {| Fnum := mz; Fexp := ez |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

(IZR (Fnum {| Fnum := cond_Zopp sx (Z.pos mx'); Fexp := ez |}) * bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx'); Fexp := ez |}) + IZR (Fnum {| Fnum := cond_Zopp sy (Z.pos my'); Fexp := ez |}) * bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my'); Fexp := ez |}))%R = (IZR (Fnum {| Fnum := mz; Fexp := ez |}) * bpow radix2 (Fexp {| Fnum := mz; Fexp := ez |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mx':positive
ex':Z
my':positive
ey':Z
mz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Z

(IZR (cond_Zopp sx (Z.pos mx')) * bpow radix2 ez + IZR (cond_Zopp sy (Z.pos my')) * bpow radix2 ez)%R = (IZR mz * bpow radix2 ez)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}

(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}

(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R -> sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R

sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
(* .. *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

sy = Rlt_bool (F2R {| Fnum := cond_Zopp sy (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

Rlt_bool (F2R {| Fnum := cond_Zopp sy (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0 + 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(0 + 0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy
(0 <= F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx = sy

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy

sx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
(* .. *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R -> (F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R -> canonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = true -> canonical_mantissa my ey = true /\ (ey <=? emax - prec)%Z = true -> (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Hx':canonical_mantissa mx ex = true
Hy':canonical_mantissa my ey = true

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Bz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%R
Hs:sx <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Hx':canonical_mantissa mx ex = true
Hy':canonical_mantissa my ey = true

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} -> canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:sx <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} -> canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:sx <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:true <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
(* ... *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Hs:true <> true
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Hs:true <> false
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Hs:true <> false
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} <= round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < - F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} <= round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} <= round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

generic_format radix2 fexp (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} <= F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} <= F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + 0 <= F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) <= F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

generic_format radix2 fexp (F2R {| Fnum := Z.pos my; Fexp := ey |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |} <= F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |} <= F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |} <= 0 + F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
Hs:false <> sy
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
(* ... *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Hs:false <> true
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Hs:false <> false
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Hs:false <> true
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(- bpow radix2 emax < - F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

generic_format radix2 fexp (F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(0 + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}
(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |} + 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
m:mode
mx:positive
ex:Z
my:positive
ey:Z
Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
By:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%R
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Cy:canonical radix2 fexp {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}

(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
(* . *)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy

(let x := F2R {| Fnum := mz; Fexp := ez |} in let z := binary_normalize m mz ez szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then B2R z = round radix2 fexp (round_mode m) x /\ is_finite z = true /\ Bsign z = match Rcompare x 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z = binary_overflow m (Rlt_bool x 0)) -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy

(if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)) -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}))) (bpow radix2 emax) then B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R

B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end -> B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end

B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |}) /\ is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end

is_finite (binary_normalize m mz ez szero) = true /\ Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end

Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end

match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end | Lt => true | Gt => false end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end

F2R {| Fnum := mz; Fexp := ez |} = 0%R -> szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = 0%R
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = (- F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})%R
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:{| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:{| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
H0:cond_Zopp sy (Z.pos my) = (- cond_Zopp sx (Z.pos mx))%Z
H4:ey = ex

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
m:mode
sx:bool
mx:positive
sy:bool
my:positive
szero:=match m with | mode_DN => true | _ => false end:bool
H0:cond_Zopp sy (Z.pos my) = (- cond_Zopp sx (Z.pos mx))%Z

szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical_mantissa my ey = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:canonical_mantissa my ey = true /\ (ey <=? emax - prec)%Z = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical_mantissa my ey = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R
canonical radix2 fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical radix2 fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical radix2 fexp {| Fnum := cond_Zopp (negb sx) (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical_mantissa mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:canonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = F2R {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%R
H1:B2R (binary_normalize m mz ez szero) = round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})
H2:is_finite (binary_normalize m mz ez szero) = true
H3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false end
Hz':F2R {| Fnum := mz; Fexp := ez |} = 0%R

canonical_mantissa mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R

B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) -> B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R -> sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)

B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)

B2SF (binary_normalize m mz ez szero) = binary_overflow m sx /\ sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)

B2SF (binary_normalize m mz ez szero) = binary_overflow m sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)
sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)

binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0) = binary_overflow m sx
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)
sx = sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
szero:=match m with | mode_DN => true | _ => false end:bool
ez:=Z.min ex ey:Z
mz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Z
Hp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = F2R {| Fnum := mz; Fexp := ez |}
Sz:sx = Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0 /\ sx = sy
Hz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%R
Vz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)

sx = sy
apply Sz. Qed.
Subtraction
Definition Bminus m x y :=
  match x, y with
  | B754_nan, _ | _, B754_nan => B754_nan
  | B754_infinity sx, B754_infinity sy =>
    if Bool.eqb sx (negb sy) then x else B754_nan
  | B754_infinity _, _ => x
  | _, B754_infinity sy => B754_infinity (negb sy)
  | B754_zero sx, B754_zero sy =>
    if Bool.eqb sx (negb sy) then x else
    match m with mode_DN => B754_zero true | _ => B754_zero false end
  | B754_zero _, B754_finite sy my ey Hy => B754_finite (negb sy) my ey Hy
  | _, B754_zero _ => x
  | B754_finite sx mx ex Hx, B754_finite sy my ey Hy =>
    let ez := Z.min ex ey in
    binary_normalize m (Zminus (cond_Zopp sx (Zpos (fst (shl_align mx ex ez)))) (cond_Zopp sy (Zpos (fst (shl_align my ey ez)))))
      ez (match m with mode_DN => true | _ => false end)
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), is_finite x = true -> is_finite y = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), is_finite x = true -> is_finite y = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true

(is_finite (Bopp y) = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + B2R (Bopp y)))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + B2R (Bopp y)) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + B2R (Bopp y)) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)) -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true

(is_finite y = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)) -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:is_finite y = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || negb (Bsign y))%bool | _ => (Bsign x && negb (Bsign y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x - B2R y))) (bpow radix2 emax) then B2R (Bminus m x y) = round radix2 fexp (round_mode m) (B2R x - B2R y) /\ is_finite (Bminus m x y) = true /\ Bsign (Bminus m x y) = match Rcompare (B2R x - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bminus m x y) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)
Bsign (Bopp y) = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + - B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + - B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = match Rcompare (B2R (B754_finite sx mx ex Hx) + - B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (Bopp (B754_finite sy my ey Hy)))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (Bopp (B754_finite sy my ey Hy)))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (Bopp (B754_finite sy my ey Hy))

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) - B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bminus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) - B2R (B754_finite sy my ey Hy)) /\ is_finite (Bminus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = true /\ Bsign (Bminus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = match Rcompare (B2R (B754_finite sx mx ex Hx) - B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (Bopp (B754_finite sy my ey Hy)))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (Bopp (B754_finite sy my ey Hy)))%bool end | Lt => true | Gt => false end else B2SF (Bminus m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (Bopp (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)
Bsign (Bopp y) = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
Fy:is_finite (B754_finite sy my ey Hy) = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + - B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) + - B2R (B754_finite sy my ey Hy)) /\ is_finite (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = true /\ Bsign (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = match Rcompare (B2R (B754_finite sx mx ex Hx) + - B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (Bopp (B754_finite sy my ey Hy)))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (Bopp (B754_finite sy my ey Hy)))%bool end | Lt => true | Gt => false end else B2SF (Bplus m (B754_finite sx mx ex Hx) (Bopp (B754_finite sy my ey Hy))) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (Bopp (B754_finite sy my ey Hy))

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) - B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + - cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) - B2R (B754_finite sy my ey Hy)) /\ is_finite (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + - cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = true /\ Bsign (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + - cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = match Rcompare (B2R (B754_finite sx mx ex Hx) - B2R (B754_finite sy my ey Hy)) 0 with | Eq => match m with | mode_DN => (Bsign (B754_finite sx mx ex Hx) || Bsign (Bopp (B754_finite sy my ey Hy)))%bool | _ => (Bsign (B754_finite sx mx ex Hx) && Bsign (Bopp (B754_finite sy my ey Hy)))%bool end | Lt => true | Gt => false end else B2SF (binary_normalize m (cond_Zopp sx (Z.pos (fst (shl_align mx ex (Z.min ex ey)))) + - cond_Zopp sy (Z.pos (fst (shl_align my ey (Z.min ex ey))))) (Z.min ex ey) match m with | mode_DN => true | _ => false end) = binary_overflow m (Bsign (B754_finite sx mx ex Hx)) /\ Bsign (B754_finite sx mx ex Hx) = Bsign (Bopp (B754_finite sy my ey Hy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)
Bsign (Bopp y) = negb (Bsign y)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
Fx:is_finite x = true
Fy:is_finite y = true
H:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x + - B2R y))) (bpow radix2 emax) then B2R (Bplus m x (Bopp y)) = round radix2 fexp (round_mode m) (B2R x + - B2R y) /\ is_finite (Bplus m x (Bopp y)) = true /\ Bsign (Bplus m x (Bopp y)) = match Rcompare (B2R x + - B2R y) 0 with | Eq => match m with | mode_DN => (Bsign x || Bsign (Bopp y))%bool | _ => (Bsign x && Bsign (Bopp y))%bool end | Lt => true | Gt => false end else B2SF (Bplus m x (Bopp y)) = binary_overflow m (Bsign x) /\ Bsign x = Bsign (Bopp y)

Bsign (Bopp y) = negb (Bsign y)
now destruct y as [ | | | ]. Qed.
Fused Multiply-Add
Definition Bfma_szero m (x y z: binary_float) : bool :=
  let s_xy := xorb (Bsign x) (Bsign y) in  (* sign of product x*y *)
  if Bool.eqb s_xy (Bsign z) then s_xy
  else match m with mode_DN => true | _ => false end.

Definition Bfma m (x y z: binary_float) :=
  match x, y with
  | B754_nan, _ | _, B754_nan
  | B754_infinity _, B754_zero _
  | B754_zero _, B754_infinity _ =>
      (* Multiplication produces NaN *)
      B754_nan
  | B754_infinity sx, B754_infinity sy
  | B754_infinity sx, B754_finite sy _ _ _
  | B754_finite sx _ _ _, B754_infinity sy =>
      let s := xorb sx sy in
      (* Multiplication produces infinity with sign [s] *)
      match z with
      | B754_nan => B754_nan
      | B754_infinity sz => if Bool.eqb s sz then z else B754_nan
      | _ => B754_infinity s
      end
  | B754_finite sx _ _ _, B754_zero sy
  | B754_zero sx, B754_finite sy _ _ _
  | B754_zero sx, B754_zero sy =>
      (* Multiplication produces zero *)
      match z with
      | B754_nan => B754_nan
      | B754_zero _ => B754_zero (Bfma_szero m x y z)
      | _ => z
      end
  | B754_finite sx mx ex _, B754_finite sy my ey _ =>
      (* Multiplication produces a finite, non-zero result *)
      match z with
      | B754_nan => B754_nan
      | B754_infinity sz => z
      | B754_zero _ =>
         let X := Float radix2 (cond_Zopp sx (Zpos mx)) ex in
         let Y := Float radix2 (cond_Zopp sy (Zpos my)) ey in
         let '(Float _ mr er) := Fmult X Y in
         binary_normalize m mr er (Bfma_szero m x y z)
      | B754_finite sz mz ez _ =>
         let X := Float radix2 (cond_Zopp sx (Zpos mx)) ex in
         let Y := Float radix2 (cond_Zopp sy (Zpos my)) ey in
         let Z := Float radix2 (cond_Zopp sz (Zpos mz)) ez in
         let '(Float _ mr er) := Fplus (Fmult X Y) Z in
         binary_normalize m mr er (Bfma_szero m x y z)
      end
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y z : binary_float), let res := (B2R x * B2R y + B2R z)%R in is_finite x = true -> is_finite y = true -> is_finite z = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (Bfma m x y z) = round radix2 fexp (round_mode m) res /\ is_finite (Bfma m x y z) = true /\ Bsign (Bfma m x y z) = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF (Bfma m x y z) = binary_overflow m (Rlt_bool res 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y z : binary_float), let res := (B2R x * B2R y + B2R z)%R in is_finite x = true -> is_finite y = true -> is_finite z = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (Bfma m x y z) = round radix2 fexp (round_mode m) res /\ is_finite (Bfma m x y z) = true /\ Bsign (Bfma m x y z) = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF (Bfma m x y z) = binary_overflow m (Rlt_bool res 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (Bfma m x y z) = round radix2 fexp (round_mode m) res /\ is_finite (Bfma m x y z) = true /\ Bsign (Bfma m x y z) = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF (Bfma m x y z) = binary_overflow m (Rlt_bool res 0)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true

(fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0)) (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop

PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool

PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool

forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool

forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
mr, er:Z
E:F2R {| Fnum := mr; Fexp := er |} = res

PROP (binary_normalize m mr er szero)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
mr, er:Z
E:F2R {| Fnum := mr; Fexp := er |} = res

(let x0 := F2R {| Fnum := mr; Fexp := er |} in let z0 := binary_normalize m mr er szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x0)) (bpow radix2 emax) then B2R z0 = round radix2 fexp (round_mode m) x0 /\ is_finite z0 = true /\ Bsign z0 = match Rcompare x0 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z0 = binary_overflow m (Rlt_bool x0 0)) -> PROP (binary_normalize m mr er szero)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
mr, er:Z
E:F2R {| Fnum := mr; Fexp := er |} = res

(let x0 := F2R {| Fnum := mr; Fexp := er |} in let z0 := binary_normalize m mr er szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x0)) (bpow radix2 emax) then B2R z0 = round radix2 fexp (round_mode m) x0 /\ is_finite z0 = true /\ Bsign z0 = match Rcompare x0 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z0 = binary_overflow m (Rlt_bool x0 0)) -> PROP (binary_normalize m mr er szero)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
mr, er:Z
E:F2R {| Fnum := mr; Fexp := er |} = res

(let x0 := res in let z0 := binary_normalize m mr er szero in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x0)) (bpow radix2 emax) then B2R z0 = round radix2 fexp (round_mode m) x0 /\ is_finite z0 = true /\ Bsign z0 = match Rcompare x0 0 with | Eq => szero | Lt => true | Gt => false end else B2SF z0 = binary_overflow m (Rlt_bool x0 0)) -> PROP (binary_normalize m mr er szero)
tauto.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)

PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float

PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float

B2R x = 0%R \/ B2R y = 0%R -> PROP add_zero
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R x = 0%R \/ B2R y = 0%R -> PROP add_zero
PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float

B2R x = 0%R \/ B2R y = 0%R -> PROP add_zero
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R

PROP add_zero
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R

res = B2R z
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R z
PROP add_zero
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R

res = B2R z
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R

(B2R x * B2R y + B2R z)%R = B2R z
destruct Z as [E|E]; rewrite E, ?Rmult_0_l, ?Rmult_0_r, Rplus_0_l; auto.
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R z

PROP add_zero
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_zero sz)

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (B754_zero szero) = round radix2 fexp (round_mode m) res /\ is_finite (B754_zero szero) = true /\ Bsign (B754_zero szero) = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF (B754_zero szero) = binary_overflow m (Rlt_bool res 0)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (B754_finite sz mz ez Bz) = round radix2 fexp (round_mode m) res /\ is_finite (B754_finite sz mz ez Bz) = true /\ Bsign (B754_finite sz mz ez Bz) = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF (B754_finite sz mz ez Bz) = binary_overflow m (Rlt_bool res 0)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_zero sz)

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (B754_zero szero) = round radix2 fexp (round_mode m) res /\ is_finite (B754_zero szero) = true /\ Bsign (B754_zero szero) = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF (B754_zero szero) = binary_overflow m (Rlt_bool res 0)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

if Rlt_bool (Rabs 0) (bpow radix2 emax) then B2R (B754_zero szero) = 0%R /\ is_finite (B754_zero szero) = true /\ Bsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF (B754_zero szero) = binary_overflow m (Rlt_bool 0 0)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

B2R (B754_zero szero) = 0%R /\ is_finite (B754_zero szero) = true /\ Bsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
(Rabs 0 < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

B2R (B754_zero szero) = 0%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
is_finite (B754_zero szero) = true /\ Bsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
(Rabs 0 < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

is_finite (B754_zero szero) = true /\ Bsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
(Rabs 0 < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

is_finite (B754_zero szero) = true
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
Bsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
(Rabs 0 < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

Bsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
(Rabs 0 < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

Bsign (B754_zero szero) = Bfma_szero m x y (B754_zero sz)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R
(Rabs 0 < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
res:=(B2R x * B2R y + B2R (B754_zero sz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_zero sz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = 0%R

(Rabs 0 < bpow radix2 emax)%R
rewrite Rabs_R0; apply bpow_gt_0.
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R (B754_finite sz mz ez Bz) = round radix2 fexp (round_mode m) res /\ is_finite (B754_finite sz mz ez Bz) = true /\ Bsign (B754_finite sz mz ez Bz) = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF (B754_finite sz mz ez Bz) = binary_overflow m (Rlt_bool res 0)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

B2R (B754_finite sz mz ez Bz) = B2R (B754_finite sz mz ez Bz) /\ is_finite (B754_finite sz mz ez Bz) = true /\ Bsign (B754_finite sz mz ez Bz) = match Rcompare (B2R (B754_finite sz mz ez Bz)) 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

B2R (B754_finite sz mz ez Bz) = B2R (B754_finite sz mz ez Bz)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
is_finite (B754_finite sz mz ez Bz) = true /\ Bsign (B754_finite sz mz ez Bz) = match Rcompare (B2R (B754_finite sz mz ez Bz)) 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

is_finite (B754_finite sz mz ez Bz) = true /\ Bsign (B754_finite sz mz ez Bz) = match Rcompare (B2R (B754_finite sz mz ez Bz)) 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

is_finite (B754_finite sz mz ez Bz) = true
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Bsign (B754_finite sz mz ez Bz) = match Rcompare (B2R (B754_finite sz mz ez Bz)) 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

Bsign (B754_finite sz mz ez Bz) = match Rcompare (B2R (B754_finite sz mz ez Bz)) 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

Bsign (B754_finite sz mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite true mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite true mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite true mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite true mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite true mz ez Bz)

Bsign (B754_finite true mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite true mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)
Bsign (B754_finite false mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite true mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite true mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite true mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite true mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite true mz ez Bz)

Bsign (B754_finite true mz ez Bz) = true
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite true mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite true mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite true mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite true mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite true mz ez Bz)
(F2R {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} < 0)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)
Bsign (B754_finite false mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite true mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite true mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite true mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite true mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite true mz ez Bz)

(F2R {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} < 0)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)
Bsign (B754_finite false mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite true mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite true mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite true mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite true mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite true mz ez Bz)

(Fnum {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} < 0)%Z
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)
Bsign (B754_finite false mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)

Bsign (B754_finite false mz ez Bz) = match Rcompare (F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |}) 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)

Bsign (B754_finite false mz ez Bz) = false
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)
(0 < F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |})%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)

(0 < F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |})%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite false mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite false mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite false mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite false mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite false mz ez Bz)

(0 < Fnum {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |})%Z
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

Valid_rnd (round_mode m)
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)
generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y:binary_float
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
Z:B2R x = 0%R \/ B2R y = 0%R
RES:res = B2R (B754_finite sz mz ez Bz)

generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))
apply generic_format_B2R.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x, y, z:binary_float
res:=(B2R x * B2R y + B2R z)%R:R
H:is_finite x = true
H0:is_finite y = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m x y z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m x y z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R x = 0%R \/ B2R y = 0%R -> PROP add_zero

PROP (Bfma m x y z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
z:binary_float
res:=(B2R (B754_zero sx) * B2R (B754_zero sy) + B2R z)%R:R
H:is_finite (B754_zero sx) = true
H0:is_finite (B754_zero sy) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_zero sx) (B754_zero sy) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_zero sx) (B754_zero sy) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zero

PROP (Bfma m (B754_zero sx) (B754_zero sy) z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
By:bounded my ey = true
z:binary_float
res:=(B2R (B754_zero sx) * B2R (B754_finite sy my ey By) + B2R z)%R:R
H:is_finite (B754_zero sx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_zero sx) (B754_finite sy my ey By) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_zero sx) (B754_finite sy my ey By) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
PROP (Bfma m (B754_zero sx) (B754_finite sy my ey By) z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
z:binary_float
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_zero sy) + B2R z)%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_zero sy) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_zero sy) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_zero sy) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zero
PROP (Bfma m (B754_finite sx mx ex Bx) (B754_zero sy) z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
z:binary_float
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R z)%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
PROP (Bfma m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
z:binary_float
res:=(B2R (B754_zero sx) * B2R (B754_zero sy) + B2R z)%R:R
H:is_finite (B754_zero sx) = true
H0:is_finite (B754_zero sy) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_zero sx) (B754_zero sy) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_zero sx) (B754_zero sy) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zero

PROP (Bfma m (B754_zero sx) (B754_zero sy) z)
apply ADDZERO; auto.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx, sy:bool
my:positive
ey:Z
By:bounded my ey = true
z:binary_float
res:=(B2R (B754_zero sx) * B2R (B754_finite sy my ey By) + B2R z)%R:R
H:is_finite (B754_zero sx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_zero sx) (B754_finite sy my ey By) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_zero sx) (B754_finite sy my ey By) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero

PROP (Bfma m (B754_zero sx) (B754_finite sy my ey By) z)
apply ADDZERO; auto.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
z:binary_float
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_zero sy) + B2R z)%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_zero sy) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_zero sy) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_zero sy) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zero

PROP (Bfma m (B754_finite sx mx ex Bx) (B754_zero sy) z)
apply ADDZERO; auto.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
z:binary_float
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R z)%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite z = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z:bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=match z with | B754_zero _ => B754_zero szero | B754_nan => B754_nan | _ => z end:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero

PROP (Bfma m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero

PROP (let '{| Fnum := mr; Fexp := er |} := Fmult {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
mz:positive
ez:Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
PROP (let '{| Fnum := mr; Fexp := er |} := Fplus (Fmult {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) {| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero

PROP (let '{| Fnum := mr; Fexp := er |} := Fmult {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2

PROP (let '{| Fnum := mr; Fexp := er |} := Fmult X {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2

PROP (let '{| Fnum := mr; Fexp := er |} := Fmult X Y in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
mr, er:Z
FRES:Fmult X Y = {| Fnum := mr; Fexp := er |}

PROP (binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
mr, er:Z
FRES:Fmult X Y = {| Fnum := mr; Fexp := er |}

F2R {| Fnum := mr; Fexp := er |} = res
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
mr, er:Z
FRES:Fmult X Y = {| Fnum := mr; Fexp := er |}

F2R {| Fnum := mr; Fexp := er |} = (B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_zero sz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):bool
BINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_zero szero:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
mr, er:Z
FRES:Fmult X Y = {| Fnum := mr; Fexp := er |}

(F2R X * F2R Y)%R = (B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By))%R
auto.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
mz:positive
ez:Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero

PROP (let '{| Fnum := mr; Fexp := er |} := Fplus (Fmult {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) {| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
mz:positive
ez:Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2

PROP (let '{| Fnum := mr; Fexp := er |} := Fplus (Fmult X {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) {| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:Z
By:bounded my ey = true
sz:bool
mz:positive
ez:Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2

PROP (let '{| Fnum := mr; Fexp := er |} := Fplus (Fmult X Y) {| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |} in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz)))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:BinNums.Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:BinNums.Z
By:bounded my ey = true
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2

PROP (let '{| Fnum := mr; Fexp := er |} := Fplus (Fmult X Y) Z in binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz)))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:BinNums.Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:BinNums.Z
By:bounded my ey = true
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr0 er0 : BinNums.Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2
mr, er:BinNums.Z
FRES:Fplus (Fmult X Y) Z = {| Fnum := mr; Fexp := er |}

PROP (binary_normalize m mr er (Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz)))
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:BinNums.Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:BinNums.Z
By:bounded my ey = true
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr0 er0 : BinNums.Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2
mr, er:BinNums.Z
FRES:Fplus (Fmult X Y) Z = {| Fnum := mr; Fexp := er |}

F2R {| Fnum := mr; Fexp := er |} = res
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:BinNums.Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:BinNums.Z
By:bounded my ey = true
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr0 er0 : BinNums.Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2
mr, er:BinNums.Z
FRES:Fplus (Fmult X Y) Z = {| Fnum := mr; Fexp := er |}

F2R {| Fnum := mr; Fexp := er |} = (B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R
prec, emax:BinNums.Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:BinNums.Z
Bx:bounded mx ex = true
sy:bool
my:positive
ey:BinNums.Z
By:bounded my ey = true
sz:bool
mz:positive
ez:BinNums.Z
Bz:bounded mz ez = true
res:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:R
H:is_finite (B754_finite sx mx ex Bx) = true
H0:is_finite (B754_finite sy my ey By) = true
H1:is_finite (B754_finite sz mz ez Bz) = true
PROP:=fun b : binary_float => if Rlt_bool (Rabs (round radix2 fexp (round_mode m) res)) (bpow radix2 emax) then B2R b = round radix2 fexp (round_mode m) res /\ is_finite b = true /\ Bsign b = match Rcompare res 0 with | Eq => Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz) | Lt => true | Gt => false end else B2SF b = binary_overflow m (Rlt_bool res 0):binary_float -> Prop
szero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):bool
BINORM:forall mr0 er0 : BinNums.Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)
add_zero:=B754_finite sz mz ez Bz:binary_float
ADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zero
X:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2
Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2
Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2
mr, er:BinNums.Z
FRES:Fplus (Fmult X Y) Z = {| Fnum := mr; Fexp := er |}

(F2R X * F2R Y + F2R Z)%R = (B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R
auto. Qed.
Division
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (sx : bool) (mx : positive) (ex : Z) (sy : bool) (my : positive) (ey : Z), let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let y := F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in let z := let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (x / y))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (x / y) /\ is_finite_SF z = true /\ sign_SF z = xorb sx sy else z = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (sx : bool) (mx : positive) (ex : Z) (sy : bool) (my : positive) (ey : Z), let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let y := F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in let z := let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (x / y))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (x / y) /\ is_finite_SF z = true /\ sign_SF z = xorb sx sy else z = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let y := F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} in let z := let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (x / y))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (x / y) /\ is_finite_SF z = true /\ sign_SF z = xorb sx sy else z = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits2 (...) + ex - (Zdigits2 ... + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (...) + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits2 ... + ex - (... + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits2 (...) + ex - (Zdigits2 ... + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits2 ... + ex - (... + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits2 (...) + ex - (Zdigits2 ... + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits2 (Z.pos mx) + ex - (Zdigits2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z

valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits radix2 (...) + ex - (Zdigits radix2 ... + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (...) + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits radix2 ... + ex - (... + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits radix2 (...) + ex - (Zdigits radix2 ... + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits radix2 ... + ex - (... + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits radix2 (...) + ex - (Zdigits radix2 ... + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey)) | Z.neg _ => 0 end (Z.pos my) in (q, Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey), new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z

valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0 end (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0 end (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0 end (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0 end (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl match (ex - ey - e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0 end (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

(let '(m0, l) := Fdiv_core radix2 (Z.pos mx) ex (Z.pos my) ey e' in inbetween_float radix2 m0 e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) l) -> valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

(let '(m0, l) := let (m1', m2') := if (e' <=? ex - ey)%Z then ((Z.pos mx * radix2 ^ (ex - ey - e'))%Z, Z.pos my) else (Z.pos mx, (Z.pos my * radix2 ^ (e' - (ex - ey)))%Z) in let '(q, r) := Z.div_eucl m1' m2' in (q, Bracket.new_location m2' r loc_Exact) in inbetween_float radix2 m0 e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) l) -> valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

(let '(m0, l) := let '(q, r) := Z.div_eucl (Z.pos mx * radix2 ^ (ex - ey - e')) (Z.pos my) in (q, Bracket.new_location (Z.pos my) r loc_Exact) in inbetween_float radix2 m0 e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) l) -> valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

mx' = (Z.pos mx * radix2 ^ (ex - ey - e'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z
(let '(m0, l) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, Bracket.new_location (Z.pos my) r loc_Exact) in inbetween_float radix2 m0 e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) l) -> valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

mx' = (Z.pos mx * radix2 ^ (ex - ey - e'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end = (Z.pos mx * radix2 ^ (ex - ey - e'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=Z.pos mx:Z

Z.pos mx = (Z.pos mx * radix2 ^ 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
p:positive
mx':=Z.shiftl (Z.pos mx) (Z.pos p):Z
Z.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
p:positive
mx':=0%Z:Z
0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
p:positive
mx':=Z.shiftl (Z.pos mx) (Z.pos p):Z

Z.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
p:positive
mx':=0%Z:Z
0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
p:positive
mx':=0%Z:Z

0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Z
easy.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':=match (ex - ey - e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - ey - e') | Z.neg _ => 0%Z end:Z

(let '(m0, l) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, Bracket.new_location (Z.pos my) r loc_Exact) in inbetween_float radix2 m0 e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) l) -> valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx':Z

(let '(m0, l) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, Bracket.new_location (Z.pos my) r loc_Exact) in inbetween_float radix2 m0 e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) l) -> valid_binary (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := let '(q, r) := Z.div_eucl mx' (Z.pos my) in (q, e', new_location (Z.pos my) r) in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z

inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact) -> valid_binary (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = true /\ sign_SF (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = xorb sx sy else binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

valid_binary (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = true /\ sign_SF (binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r)) = xorb sx sy else binary_round_aux m (xorb sx sy) q e' (new_location (Z.pos my) r) = binary_overflow m (xorb sx sy))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

xorb sx sy = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
valid_binary (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = true /\ sign_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 else binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r) = binary_overflow m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

xorb sx sy = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.neg my; Fexp := ey |}) 0 = xorb sx true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := - Z.pos my; Fexp := ey |}) 0 = xorb sx true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / - F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * - / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (- (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = xorb sx true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (- (F2R {| Fnum := Z.neg mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= - (F2R {| Fnum := Z.neg mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= - F2R {| Fnum := Z.neg mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= - F2R {| Fnum := Z.neg mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(0 <= / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= F2R (Fopp {| Fnum := Z.neg mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(0 <= / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})) 0 = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) < - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(0 < / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(F2R {| Fnum := Z.pos my; Fexp := ey |} > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb sx false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb true false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(- F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(- (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) < - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(0 < / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Rlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) 0 = xorb false false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(0 <= / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 <= / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < / F2R {| Fnum := Z.pos my; Fexp := ey |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(0 < F2R {| Fnum := Z.pos my; Fexp := ey |})%R
now apply F2R_gt_0.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

valid_binary (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = true /\ sign_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 else binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r) = binary_overflow m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

valid_binary (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = true /\ sign_SF (binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r)) = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 else binary_round_aux m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0) q e' (new_location (Z.pos my) r) = binary_overflow m (Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
inbetween_float radix2 q e' (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) (new_location (Z.pos my) r)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(e' <= cexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
(/ F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(/ F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
now apply F2R_neq_0 ; case sy.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

inbetween_float radix2 q e' (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) (new_location (Z.pos my) r)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

inbetween_float radix2 q e' (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) * / Rabs (F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) (new_location (Z.pos my) r)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

inbetween_float radix2 q e' (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) * / Rabs (F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})) (new_location (Z.pos my) r)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}) (new_location (Z.pos my) r)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

Bracket.new_location (Z.pos my) r loc_Exact = new_location (Z.pos my) r
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
p:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos p~0) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos p~0; Fexp := ey |}) (Bracket.new_location (Z.pos p~0) r loc_Exact)

Bracket.new_location (Z.pos p~0) r loc_Exact = new_location (Z.pos p~0) r
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
p:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos p~0) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos p~0; Fexp := ey |}) (Bracket.new_location (Z.pos p~0) r loc_Exact)

Bracket.new_location_even (Z.pos p~0) r loc_Exact = new_location_even (Z.pos p~0) r
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
p:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos p~0) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos p~0; Fexp := ey |}) (Bracket.new_location (Z.pos p~0) r loc_Exact)

(if Zeq_bool r 0 then loc_Exact else loc_Inexact match (match r with | 0 => 0 | Z.pos y' => Z.pos y'~0 | Z.neg y' => Z.neg y'~0 end ?= Z.pos p~0)%Z with | Eq => Eq | Lt => Lt | Gt => Gt end) = (if Zeq_bool r 0 then loc_Exact else loc_Inexact (match r with | 0 => 0 | Z.pos y' => Z.pos y'~0 | Z.neg y' => Z.neg y'~0 end ?= Z.pos p~0)%Z)
now case Zeq_bool; [|case r as [|rp|rp]; case Z.compare].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
now apply F2R_neq_0 ; case sy.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(e' <= cexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(e' <= cexp radix2 fexp (Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) * / Rabs (F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(e' <= cexp radix2 fexp (Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * Rabs (/ F2R {| Fnum := Z.pos my; Fexp := ey |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(e' <= cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey)) <= cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

(Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey) <= mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |} * / F2R {| Fnum := Z.pos my; Fexp := ey |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

F2R {| Fnum := Z.pos my; Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)
F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
sy:bool
my:positive
ey:Z
e':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Z
mx', q, r:Z
Bz:inbetween_float radix2 q e' (F2R {| Fnum := Z.pos mx; Fexp := ex |} / F2R {| Fnum := Z.pos my; Fexp := ey |}) (Bracket.new_location (Z.pos my) r loc_Exact)

F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} <> 0%R
now apply F2R_neq_0 ; case sy. Qed. Definition Bdiv m x y := match x, y with | B754_nan, _ | _, B754_nan => B754_nan | B754_infinity sx, B754_infinity sy => B754_nan | B754_infinity sx, B754_finite sy _ _ _ => B754_infinity (xorb sx sy) | B754_finite sx _ _ _, B754_infinity sy => B754_zero (xorb sx sy) | B754_infinity sx, B754_zero sy => B754_infinity (xorb sx sy) | B754_zero sx, B754_infinity sy => B754_zero (xorb sx sy) | B754_finite sx _ _ _, B754_zero sy => B754_infinity (xorb sx sy) | B754_zero sx, B754_finite sy _ _ _ => B754_zero (xorb sx sy) | B754_zero sx, B754_zero sy => B754_nan | B754_finite sx mx ex _, B754_finite sy my ey _ => SF2B _ (proj1 (Bdiv_correct_aux m sx mx ex sy my ey)) end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), B2R y <> 0%R -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x / B2R y))) (bpow radix2 emax) then B2R (Bdiv m x y) = round radix2 fexp (round_mode m) (B2R x / B2R y) /\ is_finite (Bdiv m x y) = is_finite x /\ (is_nan (Bdiv m x y) = false -> Bsign (Bdiv m x y) = xorb (Bsign x) (Bsign y)) else B2SF (Bdiv m x y) = binary_overflow m (xorb (Bsign x) (Bsign y))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x y : binary_float), B2R y <> 0%R -> if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x / B2R y))) (bpow radix2 emax) then B2R (Bdiv m x y) = round radix2 fexp (round_mode m) (B2R x / B2R y) /\ is_finite (Bdiv m x y) = is_finite x /\ (is_nan (Bdiv m x y) = false -> Bsign (Bdiv m x y) = xorb (Bsign x) (Bsign y)) else B2SF (Bdiv m x y) = binary_overflow m (xorb (Bsign x) (Bsign y))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
x:binary_float
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x / B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bdiv m x (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R x / B2R (B754_finite sy my ey Hy)) /\ is_finite (Bdiv m x (B754_finite sy my ey Hy)) = is_finite x /\ (is_nan (Bdiv m x (B754_finite sy my ey Hy)) = false -> Bsign (Bdiv m x (B754_finite sy my ey Hy)) = xorb (Bsign x) (Bsign (B754_finite sy my ey Hy))) else B2SF (Bdiv m x (B754_finite sy my ey Hy)) = binary_overflow m (xorb (Bsign x) (Bsign (B754_finite sy my ey Hy)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R

forall x : binary_float, if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x / B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bdiv m x (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R x / B2R (B754_finite sy my ey Hy)) /\ is_finite (Bdiv m x (B754_finite sy my ey Hy)) = is_finite x /\ (is_nan (Bdiv m x (B754_finite sy my ey Hy)) = false -> Bsign (Bdiv m x (B754_finite sy my ey Hy)) = xorb (Bsign x) (Bsign (B754_finite sy my ey Hy))) else B2SF (Bdiv m x (B754_finite sy my ey Hy)) = binary_overflow m (xorb (Bsign x) (Bsign (B754_finite sy my ey Hy)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R

forall x : binary_float, if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R x * / B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bdiv m x (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R x * / B2R (B754_finite sy my ey Hy)) /\ is_finite (Bdiv m x (B754_finite sy my ey Hy)) = is_finite x /\ (is_nan (Bdiv m x (B754_finite sy my ey Hy)) = false -> Bsign (Bdiv m x (B754_finite sy my ey Hy)) = xorb (Bsign x) (Bsign (B754_finite sy my ey Hy))) else B2SF (Bdiv m x (B754_finite sy my ey Hy)) = binary_overflow m (xorb (Bsign x) (Bsign (B754_finite sy my ey Hy)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) * / B2R (B754_finite sy my ey Hy)))) (bpow radix2 emax) then B2R (Bdiv m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = round radix2 fexp (round_mode m) (B2R (B754_finite sx mx ex Hx) * / B2R (B754_finite sy my ey Hy)) /\ is_finite (Bdiv m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = is_finite (B754_finite sx mx ex Hx) /\ (is_nan (Bdiv m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = false -> Bsign (Bdiv m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = xorb (Bsign (B754_finite sx mx ex Hx)) (Bsign (B754_finite sy my ey Hy))) else B2SF (Bdiv m (B754_finite sx mx ex Hx) (B754_finite sy my ey Hy)) = binary_overflow m (xorb (Bsign (B754_finite sx mx ex Hx)) (Bsign (B754_finite sy my ey Hy)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (Bdiv_correct_aux m sx mx ex sy my ey))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (Bdiv_correct_aux m sx mx ex sy my ey))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (Bdiv_correct_aux m sx mx ex sy my ey))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (Bdiv_correct_aux m sx mx ex sy my ey))) = xorb sx sy) else B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (Bdiv_correct_aux m sx mx ex sy my ey))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

forall (e : valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true) (y : if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy)), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj e y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj e y))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj e y))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj e y))) = xorb sx sy) else B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj e y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true

forall y : if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = xorb sx sy) else B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true

forall y : if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy else (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))) (bpow radix2 emax) then B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = xorb sx sy) else B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true

forall y : SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy, B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy

B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) /\ is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy

B2R (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy
is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy

is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy

is_finite (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy
is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy

is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} * / F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})
H3:is_finite_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy

is_nan (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> sign_SF (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = xorb sx sy
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true

forall y : (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy), B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 y))) = binary_overflow m (xorb sx sy)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sy:bool
my:positive
ey:Z
Hy:bounded my ey = true
Zy:B2R (B754_finite sy my ey Hy) <> 0%R
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = true
H2:(let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) = binary_overflow m (xorb sx sy)

B2SF (SF2B (let '(mz, ez, lz) := SFdiv_core_binary prec emax (Z.pos mx) ex (Z.pos my) ey in binary_round_aux m (xorb sx sy) mz ez lz) (proj1 (conj H1 H2))) = binary_overflow m (xorb sx sy)
now rewrite B2SF_SF2B. Qed.
Square root
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (mx : positive) (ex : Z), bounded mx ex = true -> let x := F2R {| Fnum := Z.pos mx; Fexp := ex |} in let z := let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz in valid_binary z = true /\ SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt x) /\ is_finite_SF z = true /\ sign_SF z = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (mx : positive) (ex : Z), bounded mx ex = true -> let x := F2R {| Fnum := Z.pos mx; Fexp := ex |} in let z := let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz in valid_binary z = true /\ SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt x) /\ is_finite_SF z = true /\ sign_SF z = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true

let x := F2R {| Fnum := Z.pos mx; Fexp := ex |} in let z := let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz in valid_binary z = true /\ SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt x) /\ is_finite_SF z = true /\ sign_SF z = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true

valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 (...) + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 ... + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 (...) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 ... + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits2 (...) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true

valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 (...) + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 ... + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 (...) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 ... + ex + 1))) (Z.div2 ex))%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * Z.min (fexp (Z.div2 (Zdigits radix2 (...) + ex + 1))) (Z.div2 ex)) | Z.neg _ => 0 end in (q, Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex), if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z

valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z

(2 * e' <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z

(2 * e' <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
H:(e' <= Z.div2 ex)%Z

(2 * e' <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
H:(e' <= Z.div2 ex)%Z

(2 * e' <= 2 * Z.div2 ex + (if Z.odd ex then 1 else 0))%Z
destruct Z.odd ; omega.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z

valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z

(let '(m0, l) := Fsqrt_core radix2 (Z.pos mx) ex e' in inbetween_float radix2 m0 e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) l) -> valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z

(let '(m0, l) := let (q, r) := Z.sqrtrem (Z.pos mx * radix2 ^ (ex - 2 * e')) in (q, if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float radix2 m0 e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) l) -> valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem match (ex - 2 * e')%Z with | 0 => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0 end in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end:Z

(let '(m0, l) := let (q, r) := Z.sqrtrem (Z.pos mx * radix2 ^ (ex - 2 * e')) in (q, if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float radix2 m0 e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) l) -> valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end:Z

mx' = (Z.pos mx * radix2 ^ (ex - 2 * e'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end:Z
(let '(m0, l) := let (q, r) := Z.sqrtrem mx' in (q, if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float radix2 m0 e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) l) -> valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end:Z

mx' = (Z.pos mx * radix2 ^ (ex - 2 * e'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end:Z

match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end = (Z.pos mx * radix2 ^ (ex - 2 * e'))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=Z.pos mx:Z

Z.pos mx = (Z.pos mx * radix2 ^ 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
p:positive
mx':=Z.shiftl (Z.pos mx) (Z.pos p):Z
Z.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
p:positive
mx':=0%Z:Z
0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
p:positive
mx':=Z.shiftl (Z.pos mx) (Z.pos p):Z

Z.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
p:positive
mx':=0%Z:Z
0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
p:positive
mx':=0%Z:Z

0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Z
easy.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':=match (ex - 2 * e')%Z with | 0%Z => Z.pos mx | Z.pos _ => Z.shiftl (Z.pos mx) (ex - 2 * e') | Z.neg _ => 0%Z end:Z

(let '(m0, l) := let (q, r) := Z.sqrtrem mx' in (q, if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float radix2 m0 e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) l) -> valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx':Z

(let '(m0, l) := let (q, r) := Z.sqrtrem mx' in (q, if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float radix2 m0 e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) l) -> valid_binary (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ SF2R radix2 (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := let (q, r) := Z.sqrtrem mx' in (q, e', if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in binary_round_aux m false mz ez lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z

inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) (if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt)) -> valid_binary (binary_round_aux m false mz e' (if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt))) = true /\ SF2R radix2 (binary_round_aux m false mz e' (if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' (if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt))) = true /\ sign_SF (binary_round_aux m false mz e' (if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:=if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt):location

inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location

inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
inbetween_float radix2 mz e' (Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) lz
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(e' <= cexp radix2 fexp (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

inbetween_float radix2 mz e' (Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) lz
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(e' <= cexp radix2 fexp (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(e' <= cexp radix2 fexp (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(e' <= cexp radix2 fexp (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(e' <= cexp radix2 fexp (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1)) <= cexp radix2 fexp (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1) <= mag radix2 (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1) <= Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(let z := binary_round_aux m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0) mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0 else z = binary_overflow m (Rlt_bool (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) 0))) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(let z := binary_round_aux m false mz e' lz in valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = false else z = binary_overflow m false)) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(let z := binary_round_aux m false mz e' lz in valid_binary z = true /\ SF2R radix2 z = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF z = true /\ sign_SF z = false) -> valid_binary (binary_round_aux m false mz e' lz) = true /\ SF2R radix2 (binary_round_aux m false mz e' lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (binary_round_aux m false mz e' lz) = true /\ sign_SF (binary_round_aux m false mz e' lz) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(Rabs (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(exists eps : R, (Rabs eps < bpow radix2 (- prec + 1))%R /\ round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R) -> (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(exists eps : R, (Rabs eps < bpow radix2 (- prec + 1))%R /\ round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R) -> (round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(Rabs eps < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(bpow radix2 (- prec + 1) <= 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(bpow radix2 (- prec + 1) <= bpow radix2 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(- prec + 1 <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R

(0 < prec)%Z -> (- prec + 1 <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

((sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))² < (bpow radix2 emax)²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

((sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))² < (bpow radix2 emax)²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

((sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))² * (1 + eps)² < (bpow radix2 emax)²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} * (1 + eps)² < (bpow radix2 emax)²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} * (1 + eps)² < (bpow radix2 emax)²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} * ((1 + eps) * (1 + eps)) < bpow radix2 emax * bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

((1 + eps) * (1 + eps) >= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(bpow radix2 emax > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
((1 + eps) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 <= (1 + eps) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(bpow radix2 emax > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
((1 + eps) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(bpow radix2 emax > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
((1 + eps) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
((1 + eps) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

((1 + eps) * (1 + eps) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

((1 + eps) * (1 + eps) < 4)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(1 + eps < 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(eps < R1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(1 + - (1) <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(- (1) <= eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(- (1) < eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 <= 2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(4 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(bpow radix2 2 <= bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(2 <= emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 < prec)%Z -> (prec < emax)%Z -> (2 <= emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R
(0 <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(0 <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(1 + - (1) <= 1 + eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(- (1) <= eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
eps:R
Heps:(Rabs eps < bpow radix2 (- prec + 1))%R
Hr:round radix2 (FLT_exp emin prec) (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%R
Heps':(Rabs eps < 1)%R

(- (1) < eps)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(bpow radix2 (emin + prec - 1) <= Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(bpow radix2 (emin + prec - 1) <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(bpow radix2 (emin + prec - 1) <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

((bpow radix2 (emin + prec - 1))² <= (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= bpow radix2 (emin + prec - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

((bpow radix2 (emin + prec - 1))² <= (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

((bpow radix2 (emin + prec - 1))² <= (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))²)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

((bpow radix2 (emin + prec - 1))² <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

((bpow radix2 (emin + prec - 1))² <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

((bpow radix2 (emin + prec - 1))² <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(bpow radix2 (emin + prec - 1) * bpow radix2 (emin + prec - 1) <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(bpow radix2 (emin + prec - 1 + (emin + prec - 1)) <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(emin + prec - 1 + (emin + prec - 1) <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(3 - emax - prec + prec - 1 + (3 - emax - prec + prec - 1) <= 3 - emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(prec < emax)%Z -> (3 - emax - prec + prec - 1 + (3 - emax - prec + prec - 1) <= 3 - emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

forall e : Z, (emin <= fexp e)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
e:Z

(emin <= fexp e)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

canonical_mantissa mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(0 <= round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

generic_format radix2 fexp 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz
(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
mx:positive
ex:Z
Hx:bounded mx ex = true
e':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z
He:(2 * e' <= ex)%Z
mx', mz, r:Z
lz:location
Bz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz

(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
apply sqrt_ge_0. Qed. Definition Bsqrt m x := match x with | B754_nan => B754_nan | B754_infinity false => x | B754_infinity true => B754_nan | B754_finite true _ _ _ => B754_nan | B754_zero _ => x | B754_finite sx mx ex Hx => SF2B _ (proj1 (Bsqrt_correct_aux m mx ex Hx)) end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x : binary_float), B2R (Bsqrt m x) = round radix2 fexp (round_mode m) (sqrt (B2R x)) /\ is_finite (Bsqrt m x) = match x with | B754_zero _ | B754_finite false _ _ _ => true | _ => false end /\ (is_nan (Bsqrt m x) = false -> Bsign (Bsqrt m x) = Bsign x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (x : binary_float), B2R (Bsqrt m x) = round radix2 fexp (round_mode m) (sqrt (B2R x)) /\ is_finite (Bsqrt m x) = match x with | B754_zero _ | B754_finite false _ _ _ => true | _ => false end /\ (is_nan (Bsqrt m x) = false -> Bsign (Bsqrt m x) = Bsign x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

B2R (Bsqrt m (B754_finite sx mx ex Hx)) = round radix2 fexp (round_mode m) (sqrt (B2R (B754_finite sx mx ex Hx))) /\ is_finite (Bsqrt m (B754_finite sx mx ex Hx)) = (if sx then false else true) /\ (is_nan (Bsqrt m (B754_finite sx mx ex Hx)) = false -> Bsign (Bsqrt m (B754_finite sx mx ex Hx)) = Bsign (B754_finite sx mx ex Hx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

B2R (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (Bsqrt_correct_aux m mx ex Hx))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})) /\ is_finite (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (Bsqrt_correct_aux m mx ex Hx))) = (if sx then false else true) /\ (is_nan (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (Bsqrt_correct_aux m mx ex Hx))) = false -> Bsign (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (Bsqrt_correct_aux m mx ex Hx))) = sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true

forall (e : valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true) (a : SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true /\ sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false), B2R (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj e a))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})) /\ is_finite (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj e a))) = (if sx then false else true) /\ (is_nan (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj e a))) = false -> Bsign (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj e a))) = sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

B2R (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})) /\ is_finite (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = (if sx then false else true) /\ (is_nan (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (if sx then B754_nan else SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

B2R B754_nan = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |})) /\ is_finite B754_nan = false /\ (is_nan B754_nan = false -> Bsign B754_nan = true)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

B2R B754_nan = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |})) = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

round radix2 fexp (round_mode m) match Rcase_abs (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) with | left _ => 0 | right a => Rsqrt {| nonneg := F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}; cond_nonneg := Rge_le (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 a |} end = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%R -> round radix2 fexp (round_mode m) 0 = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
forall r : (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R, round radix2 fexp (round_mode m) (Rsqrt {| nonneg := F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}; cond_nonneg := Rge_le (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 r |}) = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

round radix2 fexp (round_mode m) 0 = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
forall r : (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R, round radix2 fexp (round_mode m) (Rsqrt {| nonneg := F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}; cond_nonneg := Rge_le (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 r |}) = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

Valid_rnd (round_mode m)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
forall r : (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R, round radix2 fexp (round_mode m) (Rsqrt {| nonneg := F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}; cond_nonneg := Rge_le (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 r |}) = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

forall r : (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R, round radix2 fexp (round_mode m) (Rsqrt {| nonneg := F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}; cond_nonneg := Rge_le (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 r |}) = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
H:(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R

round radix2 fexp (round_mode m) (Rsqrt {| nonneg := F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}; cond_nonneg := Rge_le (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 H |}) = B2R B754_nan
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
H:(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R

(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

is_nan B754_nan = false -> Bsign B754_nan = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})) /\ is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

B2R (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ (is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

is_finite (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false
is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

is_nan (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false -> Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
H1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H2:SF2R radix2 (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))
H3:is_finite_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = true
H4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = false

Bsign (SF2B (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false
now rewrite Bsign_SF2B. Qed.
A few values
Definition Bone := SF2B _ (proj1 (binary_round_correct mode_NE false 1 0)).

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

B2R Bone = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

B2R Bone = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

B2R (SF2B (binary_round mode_NE false 1 0) (proj1 (binary_round_correct mode_NE false 1 0))) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hr:=binary_round_correct mode_NE false 1 0:let z := binary_round mode_NE false 1 0 in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp false 1; Fexp := 0 |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode_NE) x /\ is_finite_SF z = true /\ sign_SF z = false else z = binary_overflow mode_NE false)

B2R (SF2B (binary_round mode_NE false 1 0) (proj1 Hr)) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hr:=binary_round_correct mode_NE false 1 0:let z := binary_round mode_NE false 1 0 in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp false 1; Fexp := 0 |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode_NE) x /\ is_finite_SF z = true /\ sign_SF z = false else z = binary_overflow mode_NE false)

SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true
Hr:let x := F2R {| Fnum := cond_Zopp false 1; Fexp := 0 |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) x)) (bpow radix2 emax) then SF2R radix2 (binary_round mode_NE false 1 0) = round radix2 fexp (round_mode mode_NE) x /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false else binary_round mode_NE false 1 0 = binary_overflow mode_NE false

SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(let x := F2R {| Fnum := cond_Zopp false 1; Fexp := 0 |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) x)) (bpow radix2 emax) then SF2R radix2 (binary_round mode_NE false 1 0) = round radix2 fexp (round_mode mode_NE) x /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false else binary_round mode_NE false 1 0 = binary_overflow mode_NE false) -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(if Rlt_bool (Rabs (round radix2 fexp ZnearestE (F2R {| Fnum := 1; Fexp := 0 |}))) (bpow radix2 emax) then SF2R radix2 (binary_round mode_NE false 1 0) = round radix2 fexp ZnearestE (F2R {| Fnum := 1; Fexp := 0 |}) /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false else binary_round mode_NE false 1 0 = binary_overflow mode_NE false) -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(if Rlt_bool (Rabs (F2R {| Fnum := 1; Fexp := 0 |})) (bpow radix2 emax) then SF2R radix2 (binary_round mode_NE false 1 0) = F2R {| Fnum := 1; Fexp := 0 |} /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false else binary_round mode_NE false 1 0 = binary_overflow mode_NE false) -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true
generic_format radix2 fexp (F2R {| Fnum := 1; Fexp := 0 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(if Rlt_bool (Rabs (F2R {| Fnum := 1; Fexp := 0 |})) (bpow radix2 emax) then SF2R radix2 (binary_round mode_NE false 1 0) = F2R {| Fnum := 1; Fexp := 0 |} /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false else binary_round mode_NE false 1 0 = binary_overflow mode_NE false) -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(if Rlt_bool (Rabs 1) (bpow radix2 emax) then SF2R radix2 (binary_round mode_NE false 1 0) = 1%R /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false else binary_round mode_NE false 1 0 = binary_overflow mode_NE false) -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

SF2R radix2 (binary_round mode_NE false 1 0) = 1%R /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true
(Rabs 1 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

SF2R radix2 (binary_round mode_NE false 1 0) = 1%R /\ is_finite_SF (binary_round mode_NE false 1 0) = true /\ sign_SF (binary_round mode_NE false 1 0) = false -> SF2R radix2 (binary_round mode_NE false 1 0) = 1%R
now intros (Hr, Hr'); rewrite Hr.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(Rabs 1 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(1 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(0 < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(0 < prec)%Z -> (prec < emax)%Z -> (0 < emax)%Z
lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

generic_format radix2 fexp (F2R {| Fnum := 1; Fexp := 0 |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(cexp radix2 fexp (F2R {| Fnum := 1; Fexp := 0 |}) <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(Z.max (1 - prec) emin <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(Z.max (1 - prec) (3 - emax - prec) <= 0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Vz:valid_binary (binary_round mode_NE false 1 0) = true

(0 < prec)%Z -> (prec < emax)%Z -> (Z.max (1 - prec) (3 - emax - prec) <= 0)%Z
lia. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

is_finite Bone = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

is_finite Bone = true
generalize Bone_correct; case Bone; simpl; try (intros; reflexivity); intros; exfalso; lra. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

Bsign Bone = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

Bsign Bone = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s':bool
m:positive
e:Z

F2R {| Fnum := cond_Zopp s' (Z.pos m); Fexp := e |} = 1%R -> s' = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s':bool
m:positive
e:Z

(IZR (Z.neg m) * bpow radix2 e)%R = 1%R -> true = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s':bool
m:positive
e:Z

(IZR (Z.neg m) * bpow radix2 e <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s':bool
m:positive
e:Z

(0 <= - (IZR (Z.neg m) * bpow radix2 e))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s':bool
m:positive
e:Z

(0 <= - IZR (Z.neg m))%R
unfold IZR; rewrite <-INR_IPR; generalize (INR_pos m); lra. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

valid_binary (S754_finite false (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

valid_binary (S754_finite false (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

canonical_mantissa (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
(emax - prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

canonical_mantissa (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

fexp (Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)) + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

fexp (p + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

p = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
H:p = prec
fexp (p + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

p = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

Zdigits radix2 (Z.pos (shift_pos (Z.to_pos prec) 1) - 1) = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
(1 < shift_pos (Z.to_pos prec) 1)%positive
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

Zdigits radix2 (Z.pos (shift_pos (Z.to_pos prec) 1) - 1) = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

Zdigits radix2 (Z.pow_pos 2 (Z.to_pos prec) - 1) = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(0 <= 2 ^ prec - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z
Zdigits radix2 (Z.pow_pos 2 (Z.to_pos prec) - 1) = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(0 <= 2 ^ prec - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(1 <= 2 ^ prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

((radix2 : Z) ^ 0 <= (radix2 : Z) ^ prec)%Z
apply Zpower_le; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

Zdigits radix2 (Z.pow_pos 2 (Z.to_pos prec) - 1) = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(2 ^ (prec - 1) <= Z.abs (2 ^ prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z
(Z.abs (2 ^ prec - 1) < 2 ^ prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(2 ^ (prec - 1) <= Z.abs (2 ^ prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(2 ^ (prec - 1) <= 2 ^ prec - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(2 ^ (prec - 1) <= 2 ^ (prec - 1 + 1) - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(2 ^ (prec - 1) <= 2 ^ (prec - 1) * 2 ^ 1 - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(2 ^ (prec - 1) <= 2 ^ (prec - 1) * 2 - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(1 <= 2 ^ (prec - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

((radix2 : Z) ^ 0 <= (radix2 : Z) ^ (prec - (radix2 : Z) ^ 0))%Z
apply Zpower_le; simpl; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
P2pm1:(0 <= 2 ^ prec - 1)%Z

(Z.abs (2 ^ prec - 1) < 2 ^ prec)%Z
now rewrite Z.abs_eq; [lia|].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(1 < shift_pos (Z.to_pos prec) 1)%positive
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(1 < Z.pos (shift_pos (Z.to_pos prec) 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(1 < 2 ^ Z.pos (Z.to_pos prec))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

(1 < 2 ^ prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z

((radix2 : Z) ^ 0 < (radix2 : Z) ^ prec)%Z
apply Zpower_lt; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
H:p = prec

fexp (p + (emax - prec)) = (emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
H:p = prec

(emin <= prec + (emax - prec) - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
H:p = prec

(3 - emax - prec <= prec + (emax - prec) - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
p:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z
H:p = prec

(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec <= prec + (emax - prec) - prec)%Z
lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(emax - prec <=? emax - prec)%Z = true
apply Zle_bool_true; unfold emin; unfold Prec_gt_0 in prec_gt_0_; lia. Qed. Definition Bmax_float := SF2B _ Bmax_float_proof.
Extraction/modification of mantissa/exponent
Definition Bnormfr_mantissa x := SFnormfr_mantissa prec (B2SF x).

Definition Bldexp mode f e :=
  match f with
  | B754_finite sx mx ex _ =>
    SF2B _ (proj1 (binary_round_correct mode sx mx (ex+e)))
  | _ => f
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (f : binary_float) (e : Z), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R f * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m f e) = round radix2 fexp (round_mode m) (B2R f * bpow radix2 e) /\ is_finite (Bldexp m f e) = is_finite f /\ Bsign (Bldexp m f e) = Bsign f else B2SF (Bldexp m f e) = binary_overflow m (Bsign f)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (m : mode) (f : binary_float) (e : Z), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R f * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m f e) = round radix2 fexp (round_mode m) (B2R f * bpow radix2 e) /\ is_finite (Bldexp m f e) = is_finite f /\ Bsign (Bldexp m f e) = Bsign f else B2SF (Bldexp m f e) = binary_overflow m (Bsign f)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R f * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m f e) = round radix2 fexp (round_mode m) (B2R f * bpow radix2 e) /\ is_finite (Bldexp m f e) = is_finite f /\ Bsign (Bldexp m f e) = Bsign f else B2SF (Bldexp m f e) = binary_overflow m (Bsign f)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

forall s : bool, if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero s) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_zero s) e) = round radix2 fexp (round_mode m) (B2R (B754_zero s) * bpow radix2 e) /\ is_finite (Bldexp m (B754_zero s) e) = is_finite (B754_zero s) /\ Bsign (Bldexp m (B754_zero s) e) = Bsign (B754_zero s) else B2SF (Bldexp m (B754_zero s) e) = binary_overflow m (Bsign (B754_zero s))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
forall s : bool, if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_infinity s) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_infinity s) e) = round radix2 fexp (round_mode m) (B2R (B754_infinity s) * bpow radix2 e) /\ is_finite (Bldexp m (B754_infinity s) e) = is_finite (B754_infinity s) /\ Bsign (Bldexp m (B754_infinity s) e) = Bsign (B754_infinity s) else B2SF (Bldexp m (B754_infinity s) e) = binary_overflow m (Bsign (B754_infinity s))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R B754_nan * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m B754_nan e) = round radix2 fexp (round_mode m) (B2R B754_nan * bpow radix2 e) /\ is_finite (Bldexp m B754_nan e) = is_finite B754_nan /\ Bsign (Bldexp m B754_nan e) = Bsign B754_nan else B2SF (Bldexp m B754_nan e) = binary_overflow m (Bsign B754_nan)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
forall (s : bool) (m0 : positive) (e0 : Z) (e1 : bounded m0 e0 = true), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s m0 e0 e1) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_finite s m0 e0 e1) e) = round radix2 fexp (round_mode m) (B2R (B754_finite s m0 e0 e1) * bpow radix2 e) /\ is_finite (Bldexp m (B754_finite s m0 e0 e1) e) = is_finite (B754_finite s m0 e0 e1) /\ Bsign (Bldexp m (B754_finite s m0 e0 e1) e) = Bsign (B754_finite s m0 e0 e1) else B2SF (Bldexp m (B754_finite s m0 e0 e1) e) = binary_overflow m (Bsign (B754_finite s m0 e0 e1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

forall s : bool, if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_zero s) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_zero s) e) = round radix2 fexp (round_mode m) (B2R (B754_zero s) * bpow radix2 e) /\ is_finite (Bldexp m (B754_zero s) e) = is_finite (B754_zero s) /\ Bsign (Bldexp m (B754_zero s) e) = Bsign (B754_zero s) else B2SF (Bldexp m (B754_zero s) e) = binary_overflow m (Bsign (B754_zero s))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool

if Rlt_bool (Rabs 0) (bpow radix2 emax) then 0%R = 0%R /\ true = true /\ s = s else S754_zero s = binary_overflow m s
now rewrite Rabs_R0, Rlt_bool_true; [|now apply bpow_gt_0].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

forall s : bool, if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_infinity s) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_infinity s) e) = round radix2 fexp (round_mode m) (B2R (B754_infinity s) * bpow radix2 e) /\ is_finite (Bldexp m (B754_infinity s) e) = is_finite (B754_infinity s) /\ Bsign (Bldexp m (B754_infinity s) e) = Bsign (B754_infinity s) else B2SF (Bldexp m (B754_infinity s) e) = binary_overflow m (Bsign (B754_infinity s))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool

if Rlt_bool (Rabs 0) (bpow radix2 emax) then 0%R = 0%R /\ false = false /\ s = s else S754_infinity s = binary_overflow m s
now rewrite Rabs_R0, Rlt_bool_true; [|now apply bpow_gt_0].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R B754_nan * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m B754_nan e) = round radix2 fexp (round_mode m) (B2R B754_nan * bpow radix2 e) /\ is_finite (Bldexp m B754_nan e) = is_finite B754_nan /\ Bsign (Bldexp m B754_nan e) = Bsign B754_nan else B2SF (Bldexp m B754_nan e) = binary_overflow m (Bsign B754_nan)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

if Rlt_bool (Rabs 0) (bpow radix2 emax) then 0%R = 0%R /\ false = false /\ false = false else S754_nan = binary_overflow m false
now rewrite Rabs_R0, Rlt_bool_true; [|now apply bpow_gt_0].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z

forall (s : bool) (m0 : positive) (e0 : Z) (e1 : bounded m0 e0 = true), if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s m0 e0 e1) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_finite s m0 e0 e1) e) = round radix2 fexp (round_mode m) (B2R (B754_finite s m0 e0 e1) * bpow radix2 e) /\ is_finite (Bldexp m (B754_finite s m0 e0 e1) e) = is_finite (B754_finite s m0 e0 e1) /\ Bsign (Bldexp m (B754_finite s m0 e0 e1) e) = Bsign (B754_finite s m0 e0 e1) else B2SF (Bldexp m (B754_finite s m0 e0 e1) e) = binary_overflow m (Bsign (B754_finite s m0 e0 e1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true

if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e))) (bpow radix2 emax) then B2R (Bldexp m (B754_finite s mf ef Hmef) e) = round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e) /\ is_finite (Bldexp m (B754_finite s mf ef Hmef) e) = is_finite (B754_finite s mf ef Hmef) /\ Bsign (Bldexp m (B754_finite s mf ef Hmef) e) = Bsign (B754_finite s mf ef Hmef) else B2SF (Bldexp m (B754_finite s mf ef Hmef) e) = binary_overflow m (Bsign (B754_finite s mf ef Hmef))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R

B2R (Bldexp m (B754_finite s mf ef Hmef) e) = round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e) /\ is_finite (Bldexp m (B754_finite s mf ef Hmef) e) = is_finite (B754_finite s mf ef Hmef) /\ Bsign (Bldexp m (B754_finite s mf ef Hmef) e) = Bsign (B754_finite s mf ef Hmef)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%R
B2SF (Bldexp m (B754_finite s mf ef Hmef) e) = binary_overflow m (Bsign (B754_finite s mf ef Hmef))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R

B2R (Bldexp m (B754_finite s mf ef Hmef) e) = round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e) /\ is_finite (Bldexp m (B754_finite s mf ef Hmef) e) = is_finite (B754_finite s mf ef Hmef) /\ Bsign (Bldexp m (B754_finite s mf ef Hmef) e) = Bsign (B754_finite s mf ef Hmef)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R

SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e) /\ is_finite_SF (binary_round m s mf (ef + e)) = is_finite (B754_finite s mf ef Hmef) /\ sign_SF (binary_round m s mf (ef + e)) = Bsign (B754_finite s mf ef Hmef)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R

SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (IZR (cond_Zopp s (Z.pos mf)) * bpow radix2 (ef + e)) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:let x := F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) x /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s else binary_round m s mf (ef + e) = binary_overflow m s

SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (IZR (cond_Zopp s (Z.pos mf)) * bpow radix2 (ef + e)) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s

SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (IZR (cond_Zopp s (Z.pos mf)) * bpow radix2 (ef + e)) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}))) (bpow radix2 emax) then SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s else binary_round m s mf (ef + e) = binary_overflow m s
(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s

SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (IZR (cond_Zopp s (Z.pos mf)) * bpow radix2 (ef + e)) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s
now destruct Hr as (Hr, (Hfr, Hsr)); rewrite Hr, Hfr, Hsr.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}))) (bpow radix2 emax) then SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s else binary_round m s mf (ef + e) = binary_overflow m s

(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |})) < bpow radix2 emax)%R
now revert Hover; unfold B2R, F2R; simpl; rewrite Rmult_assoc, bpow_plus.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%R

B2SF (Bldexp m (B754_finite s mf ef Hmef) e) = binary_overflow m (Bsign (B754_finite s mf ef Hmef))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%R

binary_round m s mf (ef + e) = binary_overflow m s
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:let x := F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode m) x)) (bpow radix2 emax) then SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) x /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s else binary_round m s mf (ef + e) = binary_overflow m s

binary_round m s mf (ef + e) = binary_overflow m s
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
m:mode
f:binary_float
e:Z
s:bool
mf:positive
ef:Z
Hmef:bounded mf ef = true
Hover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%R
Hf:valid_binary (binary_round m s mf (ef + e)) = true
Hr:if Rlt_bool (Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}))) (bpow radix2 emax) then SF2R radix2 (binary_round m s mf (ef + e)) = round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |}) /\ is_finite_SF (binary_round m s mf (ef + e)) = true /\ sign_SF (binary_round m s mf (ef + e)) = s else binary_round m s mf (ef + e) = binary_overflow m s

(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := cond_Zopp s (Z.pos mf); Fexp := ef + e |})))%R
now revert Hover; unfold B2R, F2R; simpl; rewrite Rmult_assoc, bpow_plus. Qed.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
e:Z

Bldexp mode_NE (Bopp x) e = Bopp (Bldexp mode_NE x e)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
e:Z

Bldexp mode_NE (Bopp x) e = Bopp (Bldexp mode_NE x e)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

Bldexp mode_NE (Bopp (B754_finite s m e' B)) e = Bopp (Bldexp mode_NE (B754_finite s m e' B) e)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

B2SF (Bldexp mode_NE (Bopp (B754_finite s m e' B)) e) = B2SF (Bopp (Bldexp mode_NE (B754_finite s m e' B) e))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

B2SF (Bldexp mode_NE (Bopp (B754_finite s m e' B)) e) = SFopp (B2SF (Bldexp mode_NE (B754_finite s m e' B) e))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
SFopp (B2SF (Bldexp mode_NE (B754_finite s m e' B) e)) = B2SF (Bopp (Bldexp mode_NE (B754_finite s m e' B) e))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

B2SF (Bldexp mode_NE (Bopp (B754_finite s m e' B)) e) = SFopp (B2SF (Bldexp mode_NE (B754_finite s m e' B) e))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

binary_round mode_NE (negb s) m (e' + e) = SFopp (binary_round mode_NE s m (e' + e))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

(let '(mz, ez) := shl_align_fexp m (e' + e) in binary_round_aux mode_NE (negb s) (Z.pos mz) ez loc_Exact) = SFopp (let '(mz, ez) := shl_align_fexp m (e' + e) in binary_round_aux mode_NE s (Z.pos mz) ez loc_Exact)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
shl:=shl_align_fexp m (e' + e):(positive * Z)%type
mz:positive
ez:Z

binary_round_aux mode_NE (negb s) (Z.pos mz) ez loc_Exact = SFopp (binary_round_aux mode_NE s (Z.pos mz) ez loc_Exact)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
shl:=shl_align_fexp m (e' + e):(positive * Z)%type
mz:positive
ez:Z

(let '(mrs', e'0) := shr_fexp (Z.pos mz) ez loc_Exact in let '(mrs'', e'') := shr_fexp (choice_mode mode_NE (negb s) (shr_m mrs') (loc_of_shr_record mrs')) e'0 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (negb s) | Z.pos m0 => binary_fit_aux mode_NE (negb s) m0 e'' | Z.neg _ => S754_nan end) = SFopp (let '(mrs', e'0) := shr_fexp (Z.pos mz) ez loc_Exact in let '(mrs'', e'') := shr_fexp (choice_mode mode_NE s (shr_m mrs') (loc_of_shr_record mrs')) e'0 loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero s | Z.pos m0 => binary_fit_aux mode_NE s m0 e'' | Z.neg _ => S754_nan end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
shl:=shl_align_fexp m (e' + e):(positive * Z)%type
mz:positive
ez:Z
shr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%type
mrs:shr_record
e'':Z

(let '(mrs'', e''0) := shr_fexp (choice_mode mode_NE (negb s) (shr_m mrs) (loc_of_shr_record mrs)) e'' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (negb s) | Z.pos m0 => binary_fit_aux mode_NE (negb s) m0 e''0 | Z.neg _ => S754_nan end) = SFopp (let '(mrs'', e''0) := shr_fexp (choice_mode mode_NE s (shr_m mrs) (loc_of_shr_record mrs)) e'' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero s | Z.pos m0 => binary_fit_aux mode_NE s m0 e''0 | Z.neg _ => S754_nan end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
shl:=shl_align_fexp m (e' + e):(positive * Z)%type
mz:positive
ez:Z
shr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%type
mrs:shr_record
e'':Z

(let '(mrs'', e''0) := shr_fexp (cond_incr (round_N (negb (Z.even (shr_m mrs))) (loc_of_shr_record mrs)) (shr_m mrs)) e'' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero (negb s) | Z.pos m0 => binary_fit_aux mode_NE (negb s) m0 e''0 | Z.neg _ => S754_nan end) = SFopp (let '(mrs'', e''0) := shr_fexp (cond_incr (round_N (negb (Z.even (shr_m mrs))) (loc_of_shr_record mrs)) (shr_m mrs)) e'' loc_Exact in match shr_m mrs'' with | 0%Z => S754_zero s | Z.pos m0 => binary_fit_aux mode_NE s m0 e''0 | Z.neg _ => S754_nan end)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
shl:=shl_align_fexp m (e' + e):(positive * Z)%type
mz:positive
ez:Z
shr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%type
mrs:shr_record
e'':Z
shr':=shr_fexp (cond_incr (round_N (negb (Z.even (shr_m mrs))) (loc_of_shr_record mrs)) (shr_m mrs)) e'' loc_Exact:(shr_record * Z)%type
mrs':shr_record
e''':Z

match shr_m mrs' with | 0%Z => S754_zero (negb s) | Z.pos m0 => binary_fit_aux mode_NE (negb s) m0 e''' | Z.neg _ => S754_nan end = SFopp match shr_m mrs' with | 0%Z => S754_zero s | Z.pos m0 => binary_fit_aux mode_NE s m0 e''' | Z.neg _ => S754_nan end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z
shl:=shl_align_fexp m (e' + e):(positive * Z)%type
mz:positive
ez:Z
shr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%type
mrs:shr_record
e'':Z
shr':=shr_fexp (cond_incr (round_N (negb (Z.even (shr_m mrs))) (loc_of_shr_record mrs)) (shr_m mrs)) e'' loc_Exact:(shr_record * Z)%type
mrs':shr_record
e''':Z

match shr_m mrs' with | 0%Z => S754_zero (negb s) | Z.pos m0 => if (e''' <=? emax - prec)%Z then S754_finite (negb s) m0 e''' else binary_overflow mode_NE (negb s) | Z.neg _ => S754_nan end = SFopp match shr_m mrs' with | 0%Z => S754_zero s | Z.pos m0 => if (e''' <=? emax - prec)%Z then S754_finite s m0 e''' else binary_overflow mode_NE s | Z.neg _ => S754_nan end
now case (shr_m mrs') as [|p|p]; [|case Z.leb|].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
s:bool
m:positive
e':Z
B:bounded m e' = true
e:Z

SFopp (B2SF (Bldexp mode_NE (B754_finite s m e' B) e)) = B2SF (Bopp (Bldexp mode_NE (B754_finite s m e' B) e))
now case Bldexp as [s'|s'| |s' m' e'' B']. Qed. Definition Ffrexp_core_binary s m e := if Zlt_bool (-prec) emin then (S754_finite s m e, 0%Z) else if (Z.to_pos prec <=? digits2_pos m)%positive then (S754_finite s m (-prec), (e + prec)%Z) else let d := (prec - Z.pos (digits2_pos m))%Z in (S754_finite s (shift_pos (Z.to_pos d) m) (-prec), (e + prec - d)%Z).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (sx : bool) (mx : positive) (ex : Z), bounded mx ex = true -> let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let z := fst (Ffrexp_core_binary sx mx ex) in let e := snd (Ffrexp_core_binary sx mx ex) in valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall (sx : bool) (mx : positive) (ex : Z), bounded mx ex = true -> let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let z := fst (Ffrexp_core_binary sx mx ex) in let e := snd (Ffrexp_core_binary sx mx ex) in valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true

let x := F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} in let z := fst (Ffrexp_core_binary sx mx ex) in let e := snd (Ffrexp_core_binary sx mx ex) in valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R

let x0 := x in let z := fst (Ffrexp_core_binary sx mx ex) in let e := snd (Ffrexp_core_binary sx mx ex) in valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x0 = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float

let x0 := x in let z0 := z in let e := snd (Ffrexp_core_binary sx mx ex) in valid_binary z0 = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z0) < 1)%R) /\ x0 = (SF2R radix2 z0 * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z

valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z

(Z.pos (digits2_pos mx) <= prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z

(Z.pos (digits2_pos mx) <= prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z

canonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = true -> (Z.pos (digits2_pos mx) <= prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z

Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex /\ (ex <=? emax - prec)%Z = true -> (Z.pos (digits2_pos mx) <= prec)%Z
case (Z.max_spec (Z.pos (digits2_pos mx) + ex - prec) emin); lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z

valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z

(digits2_pos mx <= Z.to_pos prec)%positive
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z

(digits2_pos mx <= Z.to_pos prec)%positive
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z

(Z.pos (digits2_pos mx) <= Z.pos (Z.to_pos prec))%Z
now rewrite Z2Pos.id; [|now apply prec_gt_0_].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive

valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive

valid_binary (fst (if (- prec <? emin)%Z then (S754_finite sx mx ex, 0%Z) else if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (if (- prec <? emin)%Z then (S754_finite sx mx ex, 0%Z) else if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z)))) < 1)%R) /\ x = (SF2R radix2 (fst (if (- prec <? emin)%Z then (S754_finite sx mx ex, 0%Z) else if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))) * bpow radix2 (snd (if (- prec <? emin)%Z then (S754_finite sx mx ex, 0%Z) else if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(- prec < 3 - emax - prec)%Z

valid_binary (fst (S754_finite sx mx ex, 0%Z)) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z))) < 1)%R) /\ x = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
valid_binary (fst (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z)))) < 1)%R) /\ x = (SF2R radix2 (fst (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))) * bpow radix2 (snd (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(- prec < 3 - emax - prec)%Z

valid_binary (fst (S754_finite sx mx ex, 0%Z)) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z))) < 1)%R) /\ x = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(- prec < 3 - emax - prec)%Z

((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z))) < 1)%R) /\ x = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(- prec < 3 - emax - prec)%Z

(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z))) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(- prec < 3 - emax - prec)%Z
x = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(- prec < 3 - emax - prec)%Z

x = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%R
now rewrite Rmult_1_r.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z

valid_binary (fst (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z)))) < 1)%R) /\ x = (SF2R radix2 (fst (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))) * bpow radix2 (snd (if (Z.to_pos prec <=? digits2_pos mx)%positive then (S754_finite sx mx (- prec), (ex + prec)%Z) else (S754_finite sx (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec), (ex + prec - (prec - Z.pos (digits2_pos mx)))%Z))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive

bounded mx (- prec) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := - prec |}) < 1)%R) /\ x = (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := - prec |} * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
bounded (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)); Fexp := - prec |}) < 1)%R) /\ x = (F2R {| Fnum := cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)); Fexp := - prec |} * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive

bounded mx (- prec) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := - prec |}) < 1)%R) /\ x = (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := - prec |} * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive

(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive

digits2_pos mx = Z.to_pos prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive

digits2_pos mx = Z.to_pos prec
now apply Pos.le_antisym.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec

(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec

Z.pos (digits2_pos mx) = prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec

Z.pos (digits2_pos mx) = prec
now rewrite Dmx', Z2Pos.id; [|apply prec_gt_0_].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

canonical_mantissa mx (- prec) = true /\ (- prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(- prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
canonical_mantissa mx (- prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(- prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(- prec <= emax - prec)%Z
clear -Hp ; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

canonical_mantissa mx (- prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

Z.max (Z.pos (digits2_pos mx) + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

Z.max (prec + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(prec + - prec - prec)%Z = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
(emin <= prec + - prec - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(emin <= prec + - prec - prec)%Z
prec, emax:Z
Hp:(3 - emax - prec <= - prec)%Z

(emin <= prec + - prec - prec)%Z
unfold emin ; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx))) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 <= IZR (Z.pos mx) * bpow radix2 (- prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
(IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 <= IZR (Z.pos mx) * bpow radix2 (- prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 * bpow radix2 prec <= IZR (Z.pos mx) * bpow radix2 (- prec) * bpow radix2 prec)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 * bpow radix2 prec <= IZR (Z.pos mx) * 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(/ 2 * bpow radix2 prec <= IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(bpow radix2 (-1 + prec) <= IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1) <= IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
b:=bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1):R

(b <= IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
b:=bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1):R

(b <= Rabs (IZR (Z.pos mx)))%R
apply bpow_mag_le; apply IZR_neq; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(IZR (Z.pos mx) * bpow radix2 (- prec) * bpow radix2 prec < 1 * bpow radix2 prec)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(IZR (Z.pos mx) * 1 < 1 * bpow radix2 prec)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(IZR (Z.pos mx) < bpow radix2 prec)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

(IZR (Z.pos mx) < bpow radix2 (mag radix2 (IZR (Z.pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
b:=bpow radix2 (mag radix2 (IZR (Z.pos mx))):R

(IZR (Z.pos mx) < b)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec
b:=bpow radix2 (mag radix2 (IZR (Z.pos mx))):R

(Rabs (IZR (Z.pos mx)) < b)%R
apply bpow_mag_gt; apply IZR_neq; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(Z.to_pos prec <= digits2_pos mx)%positive
Dmx':digits2_pos mx = Z.to_pos prec
Dmx'':Z.pos (digits2_pos mx) = prec

x = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec + (ex + prec)))%R
now replace (_ + _)%Z with ex by ring.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive

bounded (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)); Fexp := - prec |}) < 1)%R) /\ x = (F2R {| Fnum := cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)); Fexp := - prec |} * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive

(canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec) * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive

(Z.pos (digits2_pos mx) < prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
(canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec) * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive

(Z.pos (digits2_pos mx) < prec)%Z
now rewrite <-(Z2Pos.id prec); [|now apply prec_gt_0_].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) && (- prec <=? emax - prec)%Z)%bool = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec)) < 1)%R) /\ x = (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec) * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) && (- prec <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec)) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
x = (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec) * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) && (- prec <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = true /\ (- prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(- prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(- prec <=? emax - prec)%Z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(- prec <= emax - prec)%Z
clear -Hp ; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

canonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

Z.max (Z.pos (digits2_pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)) + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

Z.max (Zdigits radix2 (2 ^ Z.pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) * Z.pos mx) + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

Z.max (Zdigits radix2 (2 ^ (prec - Z.pos (digits2_pos mx)) * Z.pos mx) + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

Z.max (Zdigits radix2 (Z.pos mx * (radix2 : Z) ^ (prec - Z.pos (digits2_pos mx))) + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

Z.max (Zdigits radix2 (Z.pos mx) + (prec - Z.pos (digits2_pos mx)) + - prec - prec) emin = (- prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

Z.max (- prec) emin = (- prec)%Z
now apply Z.max_l.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec)) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)))) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= IZR (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= IZR (Z.pow_pos 2 (Z.to_pos (prec - Z.pos (digits2_pos mx)))) * IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= bpow radix2 (Z.pos (Z.to_pos (prec - Z.pos (digits2_pos mx)))) * IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= bpow radix2 (prec - Z.pos (digits2_pos mx)) * IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

(2 < emax)%Z -> (/ 2 <= bpow radix2 (- prec + (prec - Z.pos (digits2_pos mx))) * IZR (Z.pos mx) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z

(2 < emax)%Z -> (/ 2 <= bpow radix2 (- prec + (prec - d)) * IZR (Z.pos mx) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(/ 2 <= bpow radix2 (- d) * IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z
(bpow radix2 (- d) * IZR (Z.pos mx) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(/ 2 <= bpow radix2 (- d) * IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 d * / 2 <= bpow radix2 d * (bpow radix2 (- d) * IZR (Z.pos mx)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 d * / 2 <= bpow radix2 0 * IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 d * / 2 <= IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 (d + -1) <= IZR (Z.pos mx))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 (d + -1) <= Rabs (IZR (Z.pos mx)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1) <= Rabs (IZR (Z.pos mx)))%R
apply bpow_mag_le; apply IZR_neq; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 (- d) * IZR (Z.pos mx) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 d * (bpow radix2 (- d) * IZR (Z.pos mx)) < bpow radix2 d * 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(bpow radix2 0 * IZR (Z.pos mx) < bpow radix2 d * 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(IZR (Z.pos mx) < bpow radix2 d)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(Rabs (IZR (Z.pos mx)) < bpow radix2 d)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z
d:=Z.pos (digits2_pos mx):Z
H:(2 < emax)%Z

(Rabs (IZR (Z.pos mx)) < bpow radix2 (mag radix2 (IZR (Z.pos mx))))%R
apply bpow_mag_gt; apply IZR_neq; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

x = (IZR (cond_Zopp sx (Z.pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx))) * bpow radix2 (- prec) * bpow radix2 (ex + prec - (prec - Z.pos (digits2_pos mx))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

x = (IZR (cond_Zopp sx (Z.pow_pos 2 (Z.to_pos (prec - Z.pos (digits2_pos mx))) * Z.pos mx)) * bpow radix2 (- prec + (ex + prec - (prec - Z.pos (digits2_pos mx)))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

x = (IZR (Z.pow_pos 2 (Z.to_pos (prec - Z.pos (digits2_pos mx)))) * IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec + (ex + prec - (prec - Z.pos (digits2_pos mx)))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

x = (bpow radix2 (Z.pos (Z.to_pos (prec - Z.pos (digits2_pos mx)))) * IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec + (ex + prec - (prec - Z.pos (digits2_pos mx)))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

x = (bpow radix2 (prec - Z.pos (digits2_pos mx)) * IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec + (ex + prec - (prec - Z.pos (digits2_pos mx)))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
x:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R
z:=fst (Ffrexp_core_binary sx mx ex):spec_float
e:=snd (Ffrexp_core_binary sx mx ex):Z
Dmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z
Dmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positive
Hp:(3 - emax - prec <= - prec)%Z
Dmx:(digits2_pos mx < Z.to_pos prec)%positive
Dmx':(Z.pos (digits2_pos mx) < prec)%Z

x = (bpow radix2 (- prec + (ex + prec - (prec - Z.pos (digits2_pos mx))) + (prec - Z.pos (digits2_pos mx))) * IZR (cond_Zopp sx (Z.pos mx)))%R
now replace (_ + _)%Z with ex by ring; rewrite Rmult_comm. Qed. Definition Bfrexp f := match f with | B754_finite s m e H => let e' := snd (Ffrexp_core_binary s m e) in (SF2B _ (proj1 (Bfrexp_correct_aux s m e H)), e') | _ => (f, (-2*emax-prec)%Z) end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall f : binary_float, is_finite_strict f = true -> let (z, e) := Bfrexp f in B2R f = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R f))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall f : binary_float, is_finite_strict f = true -> let (z, e) := Bfrexp f in B2R f = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R f))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true

let (z, e0) := Bfrexp (B754_finite s m e Hf) in B2R (B754_finite s m e Hf) = (B2R z * bpow radix2 e0)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e0 = mag radix2 (B2R (B754_finite s m e Hf)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true

(let x := F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} in let z := fst (Ffrexp_core_binary s m e) in let e0 := snd (Ffrexp_core_binary s m e) in valid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e0)%R) -> let (z, e0) := Bfrexp (B754_finite s m e Hf) in B2R (B754_finite s m e Hf) = (B2R z * bpow radix2 e0)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e0 = mag radix2 (B2R (B754_finite s m e Hf)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R

F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R /\ snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R

F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R /\ snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R

(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R /\ snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R /\ snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R /\ snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z
snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

snd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

snd (Ffrexp_core_binary s m e) = (mag radix2 (SF2R radix2 (fst (Ffrexp_core_binary s m e))) + snd (Ffrexp_core_binary s m e))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z
SF2R radix2 (fst (Ffrexp_core_binary s m e)) <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

snd (Ffrexp_core_binary s m e) = (mag radix2 (SF2R radix2 (fst (Ffrexp_core_binary s m e))) + snd (Ffrexp_core_binary s m e))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

(- snd (Ffrexp_core_binary s m e) + snd (Ffrexp_core_binary s m e))%Z = (- snd (Ffrexp_core_binary s m e) + (mag radix2 (SF2R radix2 (fst (Ffrexp_core_binary s m e))) + snd (Ffrexp_core_binary s m e)))%Z
now ring_simplify; symmetry; apply mag_unique.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
f:binary_float
s:bool
m:positive
e:Z
Hf:bounded m e = true
Hb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%R
Heq:F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = (SF2R radix2 (fst (Ffrexp_core_binary s m e)) * bpow radix2 (snd (Ffrexp_core_binary s m e)))%R
Hp:(2 < emax)%Z

SF2R radix2 (fst (Ffrexp_core_binary s m e)) <> 0%R
intro H; destruct Hb as (Hb, _); revert Hb; rewrite H, Rabs_R0; lra. Qed.
Ulp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

bounded 1 emin = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

bounded 1 emin = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(Zeq_bool (fexp (Z.pos (digits2_pos 1) + emin)) emin && (emin <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(true && (emin <=? emax - prec)%Z)%bool = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
fexp (Z.pos (digits2_pos 1) + emin) = emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(emin <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
fexp (Z.pos (digits2_pos 1) + emin) = emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(3 - emax - prec <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
fexp (Z.pos (digits2_pos 1) + emin) = emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec <= emax - prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
fexp (Z.pos (digits2_pos 1) + emin) = emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

fexp (Z.pos (digits2_pos 1) + emin) = emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(Z.pos (digits2_pos 1) + emin - prec <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(1 + emin - prec <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(0 < prec)%Z -> (1 + emin - prec <= emin)%Z
lia. Qed. Definition Bulp x := match x with | B754_zero _ => B754_finite false 1 emin Bulp_correct_aux | B754_infinity _ => B754_infinity false | B754_nan => B754_nan | B754_finite _ _ e _ => binary_normalize mode_ZR 1 e false end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite x = true -> B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite x = true -> B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
Fx:is_finite (B754_zero sx) = true

F2R {| Fnum := 1; Fexp := emin |} = ulp radix2 fexp 0 /\ true = true /\ false = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (binary_round_correct mode_ZR false 1 ex))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (binary_round_correct mode_ZR false 1 ex))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (binary_round_correct mode_ZR false 1 ex))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
Fx:is_finite (B754_zero sx) = true

F2R {| Fnum := 1; Fexp := emin |} = ulp radix2 fexp 0 /\ true = true /\ false = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
Fx:is_finite (B754_zero sx) = true

F2R {| Fnum := 1; Fexp := emin |} = ulp radix2 fexp 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
Fx:is_finite (B754_zero sx) = true

F2R {| Fnum := 1; Fexp := emin |} = ulp radix2 (FLT_exp emin prec) 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
Fx:is_finite (B754_zero sx) = true

F2R {| Fnum := 1; Fexp := emin |} = bpow radix2 emin
apply F2R_bpow.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true

B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (binary_round_correct mode_ZR false 1 ex))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (binary_round_correct mode_ZR false 1 ex))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (binary_round_correct mode_ZR false 1 ex))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H2:let x := F2R {| Fnum := cond_Zopp false 1; Fexp := ex |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_ZR) x)) (bpow radix2 emax) then SF2R radix2 (binary_round mode_ZR false 1 ex) = round radix2 fexp (round_mode mode_ZR) x /\ is_finite_SF (binary_round mode_ZR false 1 ex) = true /\ sign_SF (binary_round mode_ZR false 1 ex) = false else binary_round mode_ZR false 1 ex = binary_overflow mode_ZR false

B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true

forall H2 : let x := F2R {| Fnum := cond_Zopp false 1; Fexp := ex |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_ZR) x)) (bpow radix2 emax) then SF2R radix2 (binary_round mode_ZR false 1 ex) = round radix2 fexp (round_mode mode_ZR) x /\ is_finite_SF (binary_round mode_ZR false 1 ex) = true /\ sign_SF (binary_round mode_ZR false 1 ex) = false else binary_round mode_ZR false 1 ex = binary_overflow mode_ZR false, B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true

forall H2 : if Rlt_bool (Rabs (round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (binary_round mode_ZR false 1 ex) = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |}) /\ is_finite_SF (binary_round mode_ZR false 1 ex) = true /\ sign_SF (binary_round mode_ZR false 1 ex) = false else binary_round mode_ZR false 1 ex = binary_overflow mode_ZR false, B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

forall H2 : if Rlt_bool (Rabs (round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (binary_round mode_ZR false 1 ex) = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |}) /\ is_finite_SF (binary_round mode_ZR false 1 ex) = true /\ sign_SF (binary_round mode_ZR false 1 ex) = false else binary_round mode_ZR false 1 ex = binary_overflow mode_ZR false, B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

forall H2 : if Rlt_bool (Rabs (bpow radix2 ex)) (bpow radix2 emax) then SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex /\ is_finite_SF (binary_round mode_ZR false 1 ex) = true /\ sign_SF (binary_round mode_ZR false 1 ex) = false else binary_round mode_ZR false 1 ex = binary_overflow mode_ZR false, B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
bpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

forall H2 : SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex /\ is_finite_SF (binary_round mode_ZR false 1 ex) = true /\ sign_SF (binary_round mode_ZR false 1 ex) = false, B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 H2))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
(Rabs (bpow radix2 ex) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
bpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) /\ is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true /\ Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
(Rabs (bpow radix2 ex) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
bpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false
is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false
Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
(Rabs (bpow radix2 ex) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
bpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

B2R (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

SF2R radix2 (binary_round mode_ZR false 1 ex) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false
cond_Zopp sx (Z.pos mx) <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false
canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

cond_Zopp sx (Z.pos mx) <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false
canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

canonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}
now apply canonical_canonical_mantissa.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

is_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = true
now rewrite is_finite_SF2B.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
H2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 ex
H3:is_finite_SF (binary_round mode_ZR false 1 ex) = true
H4:sign_SF (binary_round mode_ZR false 1 ex) = false

Bsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = false
now rewrite Bsign_SF2B.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(Rabs (bpow radix2 ex) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(bpow radix2 ex < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(ex < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(0 < prec)%Z -> (ex <= emax - prec)%Z -> (ex < emax)%Z
clear ; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

bpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

bpow radix2 ex = round radix2 fexp Ztrunc (bpow radix2 ex)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

Valid_rnd Ztrunc
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
generic_format radix2 fexp (bpow radix2 ex)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

generic_format radix2 fexp (bpow radix2 ex)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

Prec_gt_0 prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true
(emin <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(emin <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(emin <= cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
H1:valid_binary (binary_round mode_ZR false 1 ex) = true
H5:canonical_mantissa mx ex = true
H6:(ex <=? emax - prec)%Z = true

(emin <= mag radix2 (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) - prec)%Z \/ (emin <= emin)%Z
now right. Qed. Definition Bulp' x := Bldexp mode_NE Bone (fexp (snd (Bfrexp x))).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bulp' x = Bulp x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bulp' x = Bulp x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true

Bulp' x = Bulp x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true

B2R (Bulp' x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp' x) = true /\ Bsign (Bulp' x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true
H1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)
H2:is_finite (Bulp' x) = true
H3:Bsign (Bulp' x) = false
Bulp' x = Bulp x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true

B2R (Bulp' x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp' x) = true /\ Bsign (Bulp' x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_zero sx))))) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_zero sx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_zero sx))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_infinity sx) = true
B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_infinity sx))))) = ulp radix2 fexp (B2R (B754_infinity sx)) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_infinity sx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_infinity sx))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
Fx:is_finite B754_nan = true
B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp B754_nan)))) = ulp radix2 fexp (B2R B754_nan) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp B754_nan)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp B754_nan)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = ulp radix2 fexp (B2R (B754_finite sx mx ex Hx)) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_zero sx))))) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_zero sx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_zero sx))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone emin) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone emin) = true /\ Bsign (Bldexp mode_NE Bone emin) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
emin = fexp (snd (Bfrexp (B754_zero sx)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone emin) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone emin) = true /\ Bsign (Bldexp mode_NE Bone emin) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 emin))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone emin) = round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 emin) /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone else B2SF (Bldexp mode_NE Bone emin) = binary_overflow mode_NE (Bsign Bone)) -> B2R (Bldexp mode_NE Bone emin) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone emin) = true /\ Bsign (Bldexp mode_NE Bone emin) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(if Rlt_bool (Rabs (bpow radix2 emin)) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone else B2SF (Bldexp mode_NE Bone emin) = binary_overflow mode_NE (Bsign Bone)) -> B2R (Bldexp mode_NE Bone emin) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone emin) = true /\ Bsign (Bldexp mode_NE Bone emin) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone -> B2R (Bldexp mode_NE Bone emin) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone emin) = true /\ Bsign (Bldexp mode_NE Bone emin) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone -> B2R (Bldexp mode_NE Bone emin) = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bldexp mode_NE Bone emin) = true /\ Bsign (Bldexp mode_NE Bone emin) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Hr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
Hf:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
Hs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

bpow radix2 emin = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite Bone = true /\ Bsign Bone = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Hr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
Hf:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
Hs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

bpow radix2 emin = ulp radix2 fexp (B2R (B754_zero sx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Hr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
Hf:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
Hs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

bpow radix2 emin = match negligible_exp fexp with | Some n => bpow radix2 (fexp n) | None => 0%R end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Hr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
Hf:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
Hs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
n:Z
Hn:negligible_exp (FLT_exp emin prec) = Some n
Hn':(n <= emin)%Z

bpow radix2 emin = match negligible_exp fexp with | Some n0 => bpow radix2 (fexp n0) | None => 0%R end
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Hr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
Hf:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
Hs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
n:Z
Hn:negligible_exp (FLT_exp emin prec) = Some n
Hn':(n <= emin)%Z

bpow radix2 emin = bpow radix2 (FLT_exp emin prec n)
now unfold FLT_exp; rewrite Z.max_r; [|unfold Prec_gt_0 in prec_gt_0_; lia].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(emin < emax)%Z
unfold emin; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

emin = fexp (snd (Bfrexp (B754_zero sx)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

emin = fexp (-2 * emax - prec)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(-2 * emax - prec - prec <= emin)%Z
unfold emin; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_infinity sx) = true

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_infinity sx))))) = ulp radix2 fexp (B2R (B754_infinity sx)) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_infinity sx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_infinity sx))))) = false
discriminate.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
Fx:is_finite B754_nan = true

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp B754_nan)))) = ulp radix2 fexp (B2R B754_nan) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp B754_nan)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp B754_nan)))) = false
discriminate.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = ulp radix2 fexp (B2R (B754_finite sx mx ex Hx)) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = (if Req_bool (B2R (B754_finite sx mx ex Hx)) 0 then match negligible_exp fexp with | Some n => bpow radix2 (fexp n) | None => 0%R end else bpow radix2 (fexp (mag radix2 (B2R (B754_finite sx mx ex Hx))))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp (B754_finite sx mx ex Hx))))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = (if Req_bool (B2R f) 0 then match negligible_exp fexp with | Some n => bpow radix2 (fexp n) | None => 0%R end else bpow radix2 (fexp (mag radix2 (B2R f)))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = bpow radix2 (fexp (mag radix2 (B2R f))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
B2R f <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = bpow radix2 (fexp (mag radix2 (B2R f))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R

(2 < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = bpow radix2 (fexp (mag radix2 (B2R f))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)

B2R (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = bpow radix2 (fexp (mag radix2 (B2R f))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Bfrexp f)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)

B2R (Bldexp mode_NE Bone (fexp (snd (Ffrexp_core_binary sx mx ex)))) = bpow radix2 (fexp (mag radix2 (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))) /\ is_finite (Bldexp mode_NE Bone (fexp (snd (Ffrexp_core_binary sx mx ex)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (snd (Ffrexp_core_binary sx mx ex)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)

B2R (Bldexp mode_NE Bone (fexp (mag radix2 (B2R f)))) = bpow radix2 (fexp (mag radix2 (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 (B2R f)))) = true /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 (B2R f)))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 e'))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone e') = round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 e') /\ is_finite (Bldexp mode_NE Bone e') = is_finite Bone /\ Bsign (Bldexp mode_NE Bone e') = Bsign Bone else B2SF (Bldexp mode_NE Bone e') = binary_overflow mode_NE (Bsign Bone)) -> B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(if Rlt_bool (Rabs (bpow radix2 e')) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = is_finite Bone /\ Bsign (Bldexp mode_NE Bone e') = Bsign Bone else B2SF (Bldexp mode_NE Bone e') = binary_overflow mode_NE (Bsign Bone)) -> B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
generic_format radix2 fexp (bpow radix2 e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(if Rlt_bool (Rabs (bpow radix2 e')) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = is_finite Bone /\ Bsign (Bldexp mode_NE Bone e') = Bsign Bone else B2SF (Bldexp mode_NE Bone e') = binary_overflow mode_NE (Bsign Bone)) -> B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = is_finite Bone /\ Bsign (Bldexp mode_NE Bone e') = Bsign Bone -> B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
(Rabs (bpow radix2 e') < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = is_finite Bone /\ Bsign (Bldexp mode_NE Bone e') = Bsign Bone -> B2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
Hr:B2R (Bldexp mode_NE Bone e') = bpow radix2 e'
Hf:is_finite (Bldexp mode_NE Bone e') = is_finite Bone
Hs:Bsign (Bldexp mode_NE Bone e') = Bsign Bone

bpow radix2 e' = bpow radix2 e' /\ is_finite Bone = true /\ Bsign Bone = false
now split; [|split; [apply is_finite_Bone|apply Bsign_Bone]].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(Rabs (bpow radix2 e') < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(bpow radix2 e' < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(bpow radix2 (Z.max (mag radix2 (B2R f) - prec) emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(Z.max (mag radix2 (B2R f) - prec) emin < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
Hm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z

(mag radix2 (B2R f) - prec < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
Hm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z

(mag radix2 (B2R f) < prec + emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
Hm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z

(mag radix2 (B2R f) <= emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
Hm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z

B2R f <> 0%R
now unfold f, B2R; apply F2R_neq_0; case sx.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

generic_format radix2 fexp (bpow radix2 e')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(e' + 1 - prec <= e')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z
(emin <= e')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(e' + 1 - prec <= e')%Z
unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float
Hfr1:B2R f = (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx))) * bpow radix2 (snd (Ffrexp_core_binary sx mx ex)))%R
Hfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%R
Hfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)
e':=fexp (mag radix2 (B2R f)):Z

(emin <= e')%Z
apply Z.le_max_r.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Hx) = true
f:=B754_finite sx mx ex Hx:binary_float

B2R f <> 0%R
now unfold f, B2R; apply F2R_neq_0; case sx.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true
H1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)
H2:is_finite (Bulp' x) = true
H3:Bsign (Bulp' x) = false

Bulp' x = Bulp x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true
H1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)
H2:is_finite (Bulp' x) = true
H3:Bsign (Bulp' x) = false
H4:B2R (Bulp x) = ulp radix2 fexp (B2R x)
H5:is_finite (Bulp x) = true
H6:Bsign (Bulp x) = false

Bulp' x = Bulp x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true
H1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)
H2:is_finite (Bulp' x) = true
H3:Bsign (Bulp' x) = false
H4:B2R (Bulp x) = ulp radix2 fexp (B2R x)
H5:is_finite (Bulp x) = true
H6:Bsign (Bulp x) = false

B2R (Bulp' x) = B2R (Bulp x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true
H1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)
H2:is_finite (Bulp' x) = true
H3:Bsign (Bulp' x) = false
H4:B2R (Bulp x) = ulp radix2 fexp (B2R x)
H5:is_finite (Bulp x) = true
H6:Bsign (Bulp x) = false
Bsign (Bulp' x) = Bsign (Bulp x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true
H1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)
H2:is_finite (Bulp' x) = true
H3:Bsign (Bulp' x) = false
H4:B2R (Bulp x) = ulp radix2 fexp (B2R x)
H5:is_finite (Bulp x) = true
H6:Bsign (Bulp x) = false

Bsign (Bulp' x) = Bsign (Bulp x)
now rewrite H3. Qed.
Successor (and predecessor)
Definition Bsucc x :=
  match x with
  | B754_zero _ => B754_finite false 1 emin Bulp_correct_aux
  | B754_infinity false => x
  | B754_infinity true => Bopp Bmax_float
  | B754_nan => B754_nan
  | B754_finite false mx ex _ =>
    SF2B _ (proj1 (binary_round_correct mode_UP false (mx + 1) ex))
  | B754_finite true mx ex _ =>
    SF2B _ (proj1 (binary_round_correct mode_ZR true (xO mx - 1) (ex - 1)))
  end.

prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite x = true -> if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc x) = true /\ Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool else B2SF (Bsucc x) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite x = true -> if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc x) = true /\ Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool else B2SF (Bsucc x) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

if Rlt_bool (succ radix2 fexp (B2R (B754_zero sx))) (bpow radix2 emax) then B2R (Bsucc (B754_zero sx)) = succ radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bsucc (B754_zero sx)) = true /\ Bsign (Bsucc (B754_zero sx)) = (Bsign (B754_zero sx) && is_finite_strict (B754_zero sx))%bool else B2SF (Bsucc (B754_zero sx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
if Rlt_bool (succ radix2 fexp (B2R (B754_finite true mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite true mx ex Bx)) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool else B2SF (Bsucc (B754_finite true mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
if Rlt_bool (succ radix2 fexp (B2R (B754_finite false mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite false mx ex Bx)) = succ radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bsucc (B754_finite false mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite false mx ex Bx)) = (Bsign (B754_finite false mx ex Bx) && is_finite_strict (B754_finite false mx ex Bx))%bool else B2SF (Bsucc (B754_finite false mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

if Rlt_bool (succ radix2 fexp (B2R (B754_zero sx))) (bpow radix2 emax) then B2R (Bsucc (B754_zero sx)) = succ radix2 fexp (B2R (B754_zero sx)) /\ is_finite (Bsucc (B754_zero sx)) = true /\ Bsign (Bsucc (B754_zero sx)) = (Bsign (B754_zero sx) && is_finite_strict (B754_zero sx))%bool else B2SF (Bsucc (B754_zero sx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

if Rlt_bool (succ radix2 fexp 0) (bpow radix2 emax) then F2R {| Fnum := 1; Fexp := emin |} = succ radix2 fexp 0 /\ true = true /\ false = (sx && false)%bool else S754_finite false 1 emin = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

if Rlt_bool (succ radix2 (FLT_exp emin prec) 0) (bpow radix2 emax) then F2R {| Fnum := 1; Fexp := emin |} = succ radix2 (FLT_exp emin prec) 0 /\ true = true /\ false = (sx && false)%bool else S754_finite false 1 emin = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

if Rlt_bool (bpow radix2 emin) (bpow radix2 emax) then F2R {| Fnum := 1; Fexp := emin |} = bpow radix2 emin /\ true = true /\ false = (sx && false)%bool else S754_finite false 1 emin = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

F2R {| Fnum := 1; Fexp := emin |} = bpow radix2 emin /\ true = true /\ false = (sx && false)%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
(bpow radix2 emin < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

false = (sx && false)%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
F2R {| Fnum := 1; Fexp := emin |} = bpow radix2 emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
(bpow radix2 emin < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

F2R {| Fnum := 1; Fexp := emin |} = bpow radix2 emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool
(bpow radix2 emin < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

(bpow radix2 emin < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

(emin < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

(3 - emax - prec < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
sx:bool

(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec < emax)%Z
lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true

if Rlt_bool (succ radix2 fexp (B2R (B754_finite true mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite true mx ex Bx)) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool else B2SF (Bsucc (B754_finite true mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

if Rlt_bool (succ radix2 fexp (B2R (B754_finite true mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite true mx ex Bx)) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool else B2SF (Bsucc (B754_finite true mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

if Rlt_bool (succ radix2 fexp (F2R (Fopp {| Fnum := Z.pos mx; Fexp := ex |}))) (bpow radix2 emax) then B2R (Bsucc (B754_finite true mx ex Bx)) = succ radix2 fexp (F2R (Fopp {| Fnum := Z.pos mx; Fexp := ex |})) /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool else B2SF (Bsucc (B754_finite true mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

if Rlt_bool (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})) (bpow radix2 emax) then B2R (Bsucc (B754_finite true mx ex Bx)) = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool else B2SF (Bsucc (B754_finite true mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
B2R (Bsucc (B754_finite true mx ex Bx)) = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(0 <= pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

Valid_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}
now apply (canonical_canonical_mantissa false).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

B2R (Bsucc (B754_finite true mx ex Bx)) = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite (Bsucc (B754_finite true mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite true mx ex Bx)) = (Bsign (B754_finite true mx ex Bx) && is_finite_strict (B754_finite true mx ex Bx))%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

B2R (SF2B (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) (proj1 (binary_round_correct mode_ZR true (mx~0 - 1) (ex - 1)))) = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite (SF2B (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) (proj1 (binary_round_correct mode_ZR true (mx~0 - 1) (ex - 1)))) = true /\ Bsign (SF2B (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) (proj1 (binary_round_correct mode_ZR true (mx~0 - 1) (ex - 1)))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

SF2R radix2 (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) = true /\ sign_SF (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

(let z := binary_round mode_ZR true (mx~0 - 1) (ex - 1) in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp true (Z.pos (mx~0 - 1)); Fexp := ex - 1 |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_ZR) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode_ZR) x /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow mode_ZR true)) -> SF2R radix2 (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) = true /\ sign_SF (binary_round mode_ZR true (mx~0 - 1) (ex - 1)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

(let z0 := z in valid_binary z0 = true /\ (let x := F2R {| Fnum := cond_Zopp true (Z.pos (mx~0 - 1)); Fexp := ex - 1 |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_ZR) x)) (bpow radix2 emax) then SF2R radix2 z0 = round radix2 fexp (round_mode mode_ZR) x /\ is_finite_SF z0 = true /\ sign_SF z0 = true else z0 = binary_overflow mode_ZR true)) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

(let z0 := z in valid_binary z0 = true /\ (let x := cond_Ropp true (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}) in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_ZR) x)) (bpow radix2 emax) then SF2R radix2 z0 = round radix2 fexp (round_mode mode_ZR) x /\ is_finite_SF z0 = true /\ sign_SF z0 = true else z0 = binary_overflow mode_ZR true)) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (round radix2 fexp Ztrunc (- F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp Ztrunc (- F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}) /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow mode_ZR true) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (- round radix2 fexp Ztrunc (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))) (bpow radix2 emax) then SF2R radix2 z = (- round radix2 fexp Ztrunc (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow mode_ZR true) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

valid_binary z = true /\ (if Rlt_bool (Rabs (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))) (bpow radix2 emax) then SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow mode_ZR true) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
valid_binary z = true /\ (if Rlt_bool (Rabs (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))) (bpow radix2 emax) then SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow mode_ZR true) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx * radix2 ^ (ex - (ex - 1)); Fexp := ex - 1 |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = F2R {| Fnum := Z.pos mx * radix2 ^ (ex - (ex - 1)) - 1; Fexp := ex - 1 |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

Z.pos (mx~0 - 1) = (Z.pos mx * radix2 ^ (ex - (ex - 1)) - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float

Z.pos (mx~0 - 1) = (Z.pos mx * radix2 ^ 1 - 1)%Z
now rewrite Zmult_comm.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

valid_binary z = true /\ (if Rlt_bool (Rabs (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))) (bpow radix2 emax) then SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R /\ is_finite_SF z = true /\ sign_SF z = true else z = binary_overflow mode_ZR true) -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

valid_binary z = true /\ SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R /\ is_finite_SF z = true /\ sign_SF z = true -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(Rabs (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

valid_binary z = true /\ SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R /\ is_finite_SF z = true /\ sign_SF z = true -> SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
is_finite_SF z = true /\ sign_SF z = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

SF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |}))%R = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

round radix2 fexp Zfloor (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |}) = pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

Valid_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(0 < F2R {| Fnum := 1; Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
(F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(bpow radix2 (ex - 1) <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

generic_format radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

generic_format radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
apply (generic_format_B2R (B754_finite false mx ex Bx)).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true

(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
now apply F2R_ge_0.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})

(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})

(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})

(bpow radix2 (ex - 1) <= bpow radix2 ex)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})

(ex - 1 <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})

Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})

canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
now apply (canonical_canonical_mantissa false).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

(bpow radix2 (ex - 1) <= ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

(bpow radix2 (ex - 1) <= bpow radix2 ex / IZR radix2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

(bpow radix2 (ex - 1) <= bpow radix2 ex / IZR (radix2 * 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

(bpow radix2 (ex - 1) <= bpow radix2 ex * bpow radix2 (-1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

(bpow radix2 (ex - 1) <= bpow radix2 (ex + -1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

Z.pos mx <> 0%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R
canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
H1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
H2:is_finite_SF z = true
H3:sign_SF z = true
Hu1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hu2:ulp radix2 (FLT_exp emin prec) (pred radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = (ulp radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |}) / IZR radix2)%R

canonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}
now apply (canonical_canonical_mantissa false).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(Rabs (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |})) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}) <= ?r2)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(?r2 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}) <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}) <= F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

Valid_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |} <= F2R {| Fnum := Z.pos mx; Fexp := ex |} - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(- F2R {| Fnum := 1; Fexp := ex - 1 |} <= - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(0 <= F2R {| Fnum := 1; Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(0 <= round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

Valid_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
generic_format radix2 fexp 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

generic_format radix2 fexp 0
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R
(0 <= F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true
z:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_float
H:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%R

(0 <= F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |})%R
now apply F2R_ge_0.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true

if Rlt_bool (succ radix2 fexp (B2R (B754_finite false mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite false mx ex Bx)) = succ radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bsucc (B754_finite false mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite false mx ex Bx)) = (Bsign (B754_finite false mx ex Bx) && is_finite_strict (B754_finite false mx ex Bx))%bool else B2SF (Bsucc (B754_finite false mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical_mantissa mx ex = true

if Rlt_bool (succ radix2 fexp (B2R (B754_finite false mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite false mx ex Bx)) = succ radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bsucc (B754_finite false mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite false mx ex Bx)) = (Bsign (B754_finite false mx ex Bx) && is_finite_strict (B754_finite false mx ex Bx))%bool else B2SF (Bsucc (B754_finite false mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

if Rlt_bool (succ radix2 fexp (B2R (B754_finite false mx ex Bx))) (bpow radix2 emax) then B2R (Bsucc (B754_finite false mx ex Bx)) = succ radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bsucc (B754_finite false mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite false mx ex Bx)) = (Bsign (B754_finite false mx ex Bx) && is_finite_strict (B754_finite false mx ex Bx))%bool else B2SF (Bsucc (B754_finite false mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = succ radix2 fexp (B2R (B754_finite false mx ex Bx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
if Rlt_bool (F2R {| Fnum := Z.pos mx + 1; Fexp := ex |}) (bpow radix2 emax) then B2R (Bsucc (B754_finite false mx ex Bx)) = F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} /\ is_finite (Bsucc (B754_finite false mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite false mx ex Bx)) = (Bsign (B754_finite false mx ex Bx) && is_finite_strict (B754_finite false mx ex Bx))%bool else B2SF (Bsucc (B754_finite false mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = succ radix2 fexp (B2R (B754_finite false mx ex Bx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = (if Rle_bool 0 (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) then (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + ulp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%R else (- pred_pos radix2 fexp (- F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%R)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + ulp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + bpow radix2 ex)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := 1; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = F2R (Fplus {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} {| Fnum := 1; Fexp := ex |})
now rewrite Fplus_same_exp.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

if Rlt_bool (F2R {| Fnum := Z.pos mx + 1; Fexp := ex |}) (bpow radix2 emax) then B2R (Bsucc (B754_finite false mx ex Bx)) = F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} /\ is_finite (Bsucc (B754_finite false mx ex Bx)) = true /\ Bsign (Bsucc (B754_finite false mx ex Bx)) = (Bsign (B754_finite false mx ex Bx) && is_finite_strict (B754_finite false mx ex Bx))%bool else B2SF (Bsucc (B754_finite false mx ex Bx)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then B2R (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 (binary_round_correct mode_UP false (mx + 1) ex))) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 (binary_round_correct mode_UP false (mx + 1) ex))) = true /\ Bsign (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 (binary_round_correct mode_UP false (mx + 1) ex))) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 (binary_round_correct mode_UP false (mx + 1) ex))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 (binary_round_correct mode_UP false (mx + 1) ex))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

forall a : let z := binary_round mode_UP false (mx + 1) ex in valid_binary z = true /\ (let x := F2R {| Fnum := cond_Zopp false (Z.pos (mx + 1)); Fexp := ex |} in if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_UP) x)) (bpow radix2 emax) then SF2R radix2 z = round radix2 fexp (round_mode mode_UP) x /\ is_finite_SF z = true /\ sign_SF z = false else z = binary_overflow mode_UP false), if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

forall a : valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ (if Rlt_bool (Rabs (round radix2 fexp Zceil (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}))) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = round radix2 fexp Zceil (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false), if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

forall a : valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false), if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Valid_rnd Zceil
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

forall a : valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ (if Rlt_bool (Rabs (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false), if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

forall a : valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ (if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false), if Rlt_bool (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) (bpow radix2 emax) then SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false else B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Hs:(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 emax)%R

valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false -> SF2R radix2 (binary_round mode_UP false (mx + 1) ex) = F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} /\ is_finite_SF (binary_round mode_UP false (mx + 1) ex) = true /\ sign_SF (binary_round mode_UP false (mx + 1) ex) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%R
forall a : valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false, B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%R

forall a : valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false, B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 a)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%R
H:valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false

B2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 H)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%R
H:valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP false

binary_round mode_UP false (mx + 1) ex = S754_infinity false
now rewrite (proj2 H).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

Valid_rnd Zceil
apply valid_rnd_UP.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e)%R

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R -> generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R -> generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z

(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R -> generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = bpow radix2 e
generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

Z.pos (mx + 1) <> 0%Z -> (cexp radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(cexp radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) <= ex)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(cexp radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) <= cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

Monotone_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R
(bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) - 1) <= Rabs (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) - 1) <= Rabs (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) - 1) <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (e - 1) <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R
(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R
(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R
(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(Z.pos mx <= Z.pos (mx + 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R
(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R

(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%R
exact H.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = bpow radix2 e

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

generic_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

generic_format radix2 fexp (bpow radix2 e)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

Prec_gt_0 prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
(emin <= e)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

(emin <= e)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

(bpow radix2 emin <= bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

(bpow radix2 emin < bpow radix2 e)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

forall e0 : Z, (emin <= fexp e0)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
e':Z

(emin <= fexp e')%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e
generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
mx:positive
ex:Z
Bx:bounded mx ex = true
Cx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}
e:Z
He:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%R
H:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e

generic_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})
now apply generic_format_canonical. Qed. Definition Bpred x := Bopp (Bsucc (Bopp x)).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite x = true -> if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R x)) then B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

forall x : binary_float, is_finite x = true -> if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R x)) then B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true

if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R x)) then B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true

is_finite (Bopp x) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R x)) then B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true

is_finite (Bopp x) = true
now rewrite is_finite_Bopp.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R x)) then B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (- B2R (Bopp x))) then B2R (Bpred x) = pred radix2 fexp (- B2R (Bopp x)) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

if Rlt_bool (succ radix2 fexp (B2R (Bopp x))) (bpow radix2 emax) then B2R (Bpred x) = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

(if Rlt_bool (succ radix2 fexp (B2R (Bopp x))) (bpow radix2 emax) then B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x)) /\ is_finite (Bsucc (Bopp x)) = true /\ Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool else B2SF (Bsucc (Bopp x)) = S754_infinity false) -> if Rlt_bool (succ radix2 fexp (B2R (Bopp x))) (bpow radix2 emax) then B2R (Bpred x) = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x)) /\ is_finite (Bsucc (Bopp x)) = true /\ Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool -> B2R (Bpred x) = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
B2SF (Bsucc (Bopp x)) = S754_infinity false -> B2SF (Bpred x) = S754_infinity true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x)) /\ is_finite (Bsucc (Bopp x)) = true /\ Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool -> B2R (Bpred x) = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

B2R (Bopp (Bsucc (Bopp x))) = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bopp (Bsucc (Bopp x))) = true /\ Bsign (Bopp (Bsucc (Bopp x))) = (Bsign x || negb (is_finite_strict x))%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

(- succ radix2 fexp (B2R (Bopp x)))%R = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bsucc (Bopp x)) = true /\ Bsign (Bopp (Bsucc (Bopp x))) = (Bsign x || negb (is_finite_strict x))%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

(- succ radix2 fexp (B2R (Bopp x)))%R = (- succ radix2 fexp (B2R (Bopp x)))%R /\ is_finite (Bsucc (Bopp x)) = true /\ Bsign (Bopp (Bsucc (Bopp x))) = negb (negb (Bsign x) && is_finite_strict x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

is_finite (Bsucc (Bopp x)) = true /\ Bsign (Bopp (Bsucc (Bopp x))) = negb (negb (Bsign x) && is_finite_strict x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

Bsign (Bopp (Bsucc (Bopp x))) = negb (negb (Bsign x) && is_finite_strict x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

negb (Bsign (Bopp x) && is_finite_strict (Bopp x)) = negb (Bsign (Bopp x) && is_finite_strict x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool
is_nan x = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool
is_nan (Bsucc (Bopp x)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

negb (Bsign (Bopp x) && is_finite_strict (Bopp x)) = negb (Bsign (Bopp x) && is_finite_strict x)
now rewrite is_finite_strict_Bopp.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

is_nan x = false
now revert Fx; case x.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true
HR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))
HF:is_finite (Bsucc (Bopp x)) = true
HS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%bool

is_nan (Bsucc (Bopp x)) = false
now revert HF; case (Bsucc _).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
x:binary_float
Fx:is_finite x = true
Fox:is_finite (Bopp x) = true

B2SF (Bsucc (Bopp x)) = S754_infinity false -> B2SF (Bpred x) = S754_infinity true
now unfold Bpred; case (Bsucc _); intro s; case s. Qed. Definition Bpred_pos' x := match x with | B754_finite _ mx _ _ => let d := if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (Bfrexp x) - 1)) else Bulp' x in Bminus mode_NE x d | _ => x end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(2 < emax)%Z -> forall x : binary_float, (0 < B2R x)%R -> Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(2 < emax)%Z -> forall x : binary_float, (0 < B2R x)%R -> Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R

Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R

B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x) /\ is_finite (Bpred_pos' x) = true /\ Bsign (Bpred_pos' x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R

B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x) /\ is_finite (Bpred_pos' x) = true /\ Bsign (Bpred_pos' x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R

(is_finite_strict x = true -> let (z, e) := Bfrexp x in B2R x = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R x))) -> B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x) /\ is_finite (Bpred_pos' x) = true /\ Bsign (Bpred_pos' x) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Bx))%R

(is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))) -> B2R (Bpred_pos' (B754_finite sx mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite sx mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite sx mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite sx mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Bx))%R
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))

B2R (Bpred_pos' (B754_finite sx mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite sx mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite sx mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite sx mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Bx))%R
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))

sx = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Bx))%R
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))
Hsx:sx = false
B2R (Bpred_pos' (B754_finite sx mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite sx mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite sx mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite sx mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Bx))%R
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))

sx = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < cond_Zopp sx (Z.pos mx))%Z
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))

sx = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))

(0 < cond_Zopp sx (Z.pos mx))%Z -> sx = false
now case sx.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Bx))%R
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))
Hsx:sx = false

B2R (Bpred_pos' (B754_finite sx mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite sx mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite sx mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite sx mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx:is_finite_strict (B754_finite sx mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite sx mx ex Bx) in B2R (B754_finite sx mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite sx mx ex Bx)))
Hsx:sx = false

B2R (Bpred_pos' (B754_finite sx mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite sx mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite sx mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite sx mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx:is_finite_strict (B754_finite false mx ex Bx) = true -> let (z, e) := Bfrexp (B754_finite false mx ex Bx) in B2R (B754_finite false mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite false mx ex Bx)))

B2R (Bpred_pos' (B754_finite false mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite false mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite false mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx:let (z, e) := Bfrexp (B754_finite false mx ex Bx) in B2R (B754_finite false mx ex Bx) = (B2R z * bpow radix2 e)%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (B2R z) < 1)%R /\ e = mag radix2 (B2R (B754_finite false mx ex Bx)))

B2R (Bpred_pos' (B754_finite false mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite false mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite false mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R /\ snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}))

B2R (Bpred_pos' (B754_finite false mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite false mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite false mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R

(2 < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
B2R (Bpred_pos' (B754_finite false mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite false mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite false mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})

B2R (Bpred_pos' (B754_finite false mx ex Bx)) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite false mx ex Bx)) = true /\ Bsign (Bpred_pos' (B754_finite false mx ex Bx)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})

B2R (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (SF2B (fst (Ffrexp_core_binary false mx ex)) (proj1 (Bfrexp_correct_aux false mx ex Bx)), snd (Ffrexp_core_binary false mx ex)) - 1)) else Bulp' (B754_finite false mx ex Bx))) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (SF2B (fst (Ffrexp_core_binary false mx ex)) (proj1 (Bfrexp_correct_aux false mx ex Bx)), snd (Ffrexp_core_binary false mx ex)) - 1)) else Bulp' (B754_finite false mx ex Bx))) = true /\ Bsign (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (SF2B (fst (Ffrexp_core_binary false mx ex)) (proj1 (Bfrexp_correct_aux false mx ex Bx)), snd (Ffrexp_core_binary false mx ex)) - 1)) else Bulp' (B754_finite false mx ex Bx))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})

B2R (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (Ffrexp_core_binary false mx ex) - 1)) else Bulp' (B754_finite false mx ex Bx))) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (Ffrexp_core_binary false mx ex) - 1)) else Bulp' (B754_finite false mx ex Bx))) = true /\ Bsign (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (snd (Ffrexp_core_binary false mx ex) - 1)) else Bulp' (B754_finite false mx ex Bx))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})

B2R (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)) else Bulp' (B754_finite false mx ex Bx))) = pred_pos radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)) else Bulp' (B754_finite false mx ex Bx))) = true /\ Bsign (Bminus mode_NE (B754_finite false mx ex Bx) (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)) else Bulp' (B754_finite false mx ex Bx))) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R

xr <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R

xr <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R

(IZR (Z.pos mx) * bpow radix2 ex)%R <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
H:(IZR (Z.pos mx) * bpow radix2 ex)%R = (0 * bpow radix2 ex)%R

False
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
H:IZR (Z.pos mx) = 0%R

False
apply eq_IZR in H; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp x') = true /\ Bsign (Bulp x') = false

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

(fexp (mag radix2 xr - 1) + 1 - prec <= fexp (mag radix2 xr - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
(emin <= fexp (mag radix2 xr - 1))%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

(fexp (mag radix2 xr - 1) + 1 - prec <= fexp (mag radix2 xr - 1))%Z
unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)

(emin <= fexp (mag radix2 xr - 1))%Z
apply Z.le_max_r.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(Rabs (bpow radix2 (fexp (mag radix2 xr - 1))) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(fexp (mag radix2 xr - 1) < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(mag radix2 xr - 1 - prec < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(mag radix2 xr < prec + emax + 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

xr <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
(Rabs xr < bpow radix2 (prec + emax))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

xr <> 0%R
exact Nzxr.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(Rabs xr < bpow radix2 (prec + emax))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(Rabs xr < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
(bpow radix2 emax <= bpow radix2 (prec + emax))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(Rabs xr < bpow radix2 emax)%R
change xr with (B2R x'); apply abs_B2R_lt_emax.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone else B2SF (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = binary_overflow mode_NE (Bsign Bone)
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

(bpow radix2 emax <= bpow radix2 (prec + emax))%R
apply bpow_le; unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))

B2R (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = true /\ Bsign (Bminus mode_NE x' (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)

is_finite d = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)

is_finite d = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)

is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
is_finite (Bulp' x') = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)

is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = true
now rewrite (proj1 (proj2 Hldexp)), is_finite_Bone.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)

is_finite (Bulp' x') = true
now rewrite (proj1 (proj2 Hulp)).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:is_finite d = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true

(0 <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true

(0 <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true

(0 <= IZR (Z.pos mx) * bpow radix2 ex)%R
now apply Rmult_le_pos; [apply IZR_le|apply bpow_ge_0].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

(0 <= B2R d)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

(0 <= B2R d)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

(0 <= B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
(0 <= B2R (Bulp' x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

(0 <= B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

(0 <= round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))%R
now rewrite round_generic; [apply bpow_ge_0|apply valid_rnd_N|].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R

(0 <= B2R (Bulp' x'))%R
rewrite (proj1 Hulp); apply ulp_ge_0.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(B2R d <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(B2R d <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
(B2R (Bulp' x') <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 (fexp (mag radix2 xr - 1)) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 (fexp (mag radix2 xr - 1)) <= bpow radix2 (mag radix2 xr - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
(bpow radix2 (mag radix2 xr - 1) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 (fexp (mag radix2 xr - 1)) <= bpow radix2 (mag radix2 xr - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(mag radix2 xr - 1 - prec <= mag radix2 xr - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
(emin <= mag radix2 xr - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(mag radix2 xr - 1 - prec <= mag radix2 xr - 1)%Z
unfold Prec_gt_0 in prec_gt_0_; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(emin <= mag radix2 xr - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(emin + 1 <= mag radix2 xr)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 (emin + 1 - 1) <= Rabs xr)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 emin <= Rabs xr)%R
now change xr with (B2R x'); apply abs_B2R_ge_emin.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 (mag radix2 xr - 1) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(bpow radix2 (mag radix2 xr - 1) <= Rabs (B2R x'))%R
now change xr with (B2R x'); apply bpow_mag_le.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(B2R (Bulp' x') <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(0 < B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
generic_format radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

(0 < B2R x')%R
assert (B2R x' <> 0%R); [exact Nzxr|lra].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R

generic_format radix2 fexp (B2R x')
apply generic_format_B2R.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

(Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

(round radix2 fexp ZnearestE (Rabs (B2R x' - B2R d)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

(round radix2 fexp ZnearestE (B2R x' - B2R d) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

(round radix2 fexp ZnearestE (B2R x' - B2R d) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
(B2R x' < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

(round radix2 fexp ZnearestE (B2R x' - B2R d) <= B2R x')%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

generic_format radix2 fexp (B2R x')
apply generic_format_B2R.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) then B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x' || negb (Bsign d))%bool | _ => (Bsign x' && negb (Bsign d))%bool end | Lt => true | Gt => false end else B2SF (Bminus mode_NE x' d) = binary_overflow mode_NE (Bsign x') /\ Bsign x' = negb (Bsign d)
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

(B2R x' < bpow radix2 emax)%R
apply (Rle_lt_trans _ _ _ (Rle_abs _)), abs_B2R_lt_emax.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

B2R (Bminus mode_NE x' d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) = pred_pos radix2 fexp (B2R x') /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) = pred_pos radix2 fexp (B2R x') /\ true = true /\ Bsign (Bminus mode_NE x' d) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) = pred_pos radix2 fexp (B2R x') /\ true = true /\ match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x')) = (if Req_bool (B2R x') (bpow radix2 (mag radix2 (B2R x') - 1)) then (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R else (B2R x' - ulp radix2 fexp (B2R x'))%R)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)))) = (B2R x' - ulp radix2 fexp (B2R x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bulp' x')) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bulp' x')) = (B2R x' - ulp radix2 fexp (B2R x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1)))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - bpow radix2 (fexp (mag radix2 xr - 1))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (pred_pos radix2 fexp (B2R x')) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
pred_pos radix2 fexp (B2R x') = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (pred_pos radix2 fexp (B2R x')) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

generic_format radix2 fexp (pred_pos radix2 fexp (B2R x'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

(0 < B2R x')%R
change xr with (B2R x') in Nzxr; lra.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

pred_pos radix2 fexp (B2R x') = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
now unfold pred_pos; rewrite Req_bool_true.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)))) = (B2R x' - ulp radix2 fexp (B2R x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

IZR (Z.pos mx) = bpow radix2 (prec - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)
B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

IZR (Z.pos mx) = bpow radix2 (prec - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

IZR (2 * Z.pos mx) = (2 * bpow radix2 (prec - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

IZR (Z.pos (shift_pos (Z.to_pos prec) 1)) = (2 * bpow radix2 (prec - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

IZR (Z.pow_pos 2 (Z.to_pos prec)) = (2 * bpow radix2 (prec - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

bpow radix2 (Z.pos (Z.to_pos prec)) = (2 * bpow radix2 (prec - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

bpow radix2 prec = (2 * bpow radix2 (prec - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

bpow radix2 prec = bpow radix2 (1 + (prec - 1))
f_equal; ring.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

(IZR (Z.pos mx) * bpow radix2 ex)%R = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

(prec - 1 + ex)%Z = (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

(bpow radix2 (prec + ex - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 (prec + ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

(bpow radix2 (prec + ex - 1) <= bpow radix2 (prec - 1 + ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)
(bpow radix2 (prec - 1 + ex) < bpow radix2 (prec + ex))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

(bpow radix2 (prec + ex - 1) <= bpow radix2 (prec - 1 + ex))%R
right; f_equal; ring.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
Hmx:IZR (Z.pos mx) = bpow radix2 (prec - 1)

(bpow radix2 (prec - 1 + ex) < bpow radix2 (prec + ex))%R
apply bpow_lt; lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bulp' x')) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - ulp radix2 fexp (B2R x')) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

ulp radix2 fexp (B2R x') = bpow radix2 (fexp (mag radix2 (B2R x') - 1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
round radix2 fexp (round_mode mode_NE) (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

ulp radix2 fexp (B2R x') = bpow radix2 (fexp (mag radix2 (B2R x') - 1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

bpow radix2 (cexp radix2 fexp (B2R x')) = bpow radix2 (fexp (mag radix2 (B2R x') - 1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

fexp (mag radix2 (B2R x')) = fexp (mag radix2 (B2R x') - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

(mag radix2 (B2R x') <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
H:(mag radix2 (B2R x') <= emin + prec)%Z
fexp (mag radix2 (B2R x')) = fexp (mag radix2 (B2R x') - 1)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

(mag radix2 (B2R x') <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

canonical_mantissa mx ex = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hcm:canonical_mantissa mx ex = true
(mag radix2 (B2R x') <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

canonical_mantissa mx ex = true
now generalize Bx; unfold bounded; rewrite Bool.andb_true_iff.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hcm:canonical_mantissa mx ex = true

(mag radix2 (B2R x') <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hcm:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}

(mag radix2 (B2R x') <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

ex = fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})) -> (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))

(mag radix2 (B2R x') <= emin + prec)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

(mx~0)%positive = shift_pos (Z.to_pos prec) 1
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

Z.pos mx~0 = Z.pow_pos 2 (Z.to_pos prec)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

IZR (Z.pos mx~0) = bpow radix2 (Z.pos (Z.to_pos prec))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

IZR (Z.pos mx~0) = bpow radix2 prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

IZR (2 * Z.pos mx) = bpow radix2 prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

(IZR (Z.pos mx) * 2)%R = bpow radix2 prec
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

(IZR (Z.pos mx) * 2 * bpow radix2 (ex - 1))%R = (bpow radix2 prec * bpow radix2 (ex - 1))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

(IZR (Z.pos mx) * bpow radix2 (1 + (ex - 1)))%R = bpow radix2 (prec + (ex - 1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

(IZR (Z.pos mx) * bpow radix2 ex)%R = bpow radix2 (prec + (ex - 1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:(IZR (Z.pos mx) * bpow radix2 ex)%R = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1) = bpow radix2 (prec + (ex - 1))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:(IZR (Z.pos mx) * bpow radix2 ex)%R = bpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1)
Hex:ex = fexp (mag radix2 (B2R x'))
H':(emin + prec < mag radix2 (B2R x'))%Z

bpow radix2 (mag radix2 (B2R x') - 1) = bpow radix2 (prec + (fexp (mag radix2 (B2R x')) - 1))
unfold fexp, FLT_exp; rewrite Z.max_l; [f_equal; ring|lia].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
H:(mag radix2 (B2R x') <= emin + prec)%Z

fexp (mag radix2 (B2R x')) = fexp (mag radix2 (B2R x') - 1)
now unfold fexp, FLT_exp; do 2 (rewrite Z.max_r; [|lia]).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1))) = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (pred_pos radix2 fexp (B2R x')) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)
pred_pos radix2 fexp (B2R x') = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (pred_pos radix2 fexp (B2R x')) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

generic_format radix2 fexp (pred_pos radix2 fexp (B2R x'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

generic_format radix2 fexp (B2R x')
apply generic_format_B2R.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)

pred_pos radix2 fexp (B2R x') = (B2R x' - bpow radix2 (fexp (mag radix2 (B2R x') - 1)))%R
now unfold pred_pos; rewrite Req_bool_true.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - B2R (Bulp' x')) = (B2R x' - ulp radix2 fexp (B2R x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (B2R x' - ulp radix2 fexp (B2R x')) = (B2R x' - ulp radix2 fexp (B2R x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (pred_pos radix2 fexp (B2R x')) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)
pred_pos radix2 fexp (B2R x') = (B2R x' - ulp radix2 fexp (B2R x'))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

round radix2 fexp (round_mode mode_NE) (pred_pos radix2 fexp (B2R x')) = pred_pos radix2 fexp (B2R x')
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

generic_format radix2 fexp (pred_pos radix2 fexp (B2R x'))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

(0 < B2R x')%R
change xr with (B2R x') in Nzxr; lra.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Hfrexpx_bounds:F2R {| Fnum := Z.pos mx; Fexp := ex |} = (SF2R radix2 (fst (Ffrexp_core_binary false mx ex)) * bpow radix2 (snd (Ffrexp_core_binary false mx ex)))%R
Hfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%R
Hfrexpx_exp:snd (Ffrexp_core_binary false mx ex) = mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |})
x':=B754_finite false mx ex Bx:binary_float
xr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R
Nzxr:xr <> 0%R
Hulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = false
Hldexp:B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) /\ is_finite (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) = Bsign Bone
Fbpowxr:generic_format radix2 fexp (bpow radix2 (fexp (mag radix2 xr - 1)))
d:=if (mx~0 =? shift_pos (Z.to_pos prec) 1)%positive then Bldexp mode_NE Bone (fexp (mag radix2 xr - 1)) else Bulp' x':binary_float
Hminus:B2R (Bminus mode_NE x' d) = round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) /\ is_finite (Bminus mode_NE x' d) = true /\ Bsign (Bminus mode_NE x' d) = match Rcompare (B2R x' - B2R d) 0 with | Eq => (Bsign x' && negb (Bsign d))%bool | Lt => true | Gt => false end
Fd:is_finite d = true
Px:(0 <= B2R x')%R
Pd:(0 <= B2R d)%R
Hdlex:(B2R d <= B2R x')%R
Hd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1
Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)

pred_pos radix2 fexp (B2R x') = (B2R x' - ulp radix2 fexp (B2R x'))%R
now unfold pred_pos; rewrite Req_bool_false.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false

Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false

is_finite x = true /\ Bsign x = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false

is_finite x = true /\ Bsign x = false
prec, emax:Z
x:binary_float
Fx:(0 < B2R x)%R

is_finite x = true /\ Bsign x = false
prec, emax:Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Hx))%R

is_finite (B754_finite sx mx ex Hx) = true /\ Bsign (B754_finite sx mx ex Hx) = false
prec, emax:Z
sx:bool
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite sx mx ex Hx))%R

Bsign (B754_finite sx mx ex Hx) = false
prec, emax:Z
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite true mx ex Hx))%R

Bsign (B754_finite true mx ex Hx) = false
prec, emax:Z
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite false mx ex Hx))%R
Bsign (B754_finite false mx ex Hx) = false
prec, emax:Z
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite true mx ex Hx))%R

(B2R (B754_finite true mx ex Hx) <= 0)%R
prec, emax:Z
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite false mx ex Hx))%R
Bsign (B754_finite false mx ex Hx) = false
prec, emax:Z
mx:positive
ex:Z
Hx:bounded mx ex = true
Fx:(0 < B2R (B754_finite false mx ex Hx))%R

Bsign (B754_finite false mx ex Hx) = false
easy.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R x)) then B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool else B2SF (Bpred x) = S754_infinity true) -> Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(- bpow radix2 emax < pred radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool -> Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(- bpow radix2 emax < pred radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(- bpow radix2 emax < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
(0 <= pred radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(- bpow radix2 emax < - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
(0 <= pred radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
(0 <= pred radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(0 <= pred radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

Valid_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
(0 < B2R x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
generic_format radix2 fexp (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

(0 < B2R x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
generic_format radix2 fexp (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

generic_format radix2 fexp (B2R x)
apply generic_format_B2R.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false

B2R (Bpred x) = pred radix2 fexp (B2R x) /\ is_finite (Bpred x) = true /\ Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool -> Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

Bpred_pos' x = Bpred x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

Bpred x = Bpred_pos' x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

B2R (Bpred x) = B2R (Bpred_pos' x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool
Bsign (Bpred x) = Bsign (Bpred_pos' x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

pred radix2 fexp (B2R x) = pred_pos radix2 fexp (B2R x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool
Bsign (Bpred x) = Bsign (Bpred_pos' x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

(0 <= B2R x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool
Bsign (Bpred x) = Bsign (Bpred_pos' x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

Bsign (Bpred x) = Bsign (Bpred_pos' x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

(Bsign x || negb (is_finite_strict x))%bool = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:(0 < B2R x)%R
H1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)
H2:is_finite (Bpred_pos' x) = true
H3:Bsign (Bpred_pos' x) = false
H4:is_finite x = true
H5:Bsign x = false
H7:B2R (Bpred x) = pred radix2 fexp (B2R x)
H8:is_finite (Bpred x) = true
H9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool

(Bsign x || negb true)%bool = false
now rewrite H5. Qed. Definition Bsucc' x := match x with | B754_zero _ => Bldexp mode_NE Bone emin | B754_infinity false => x | B754_infinity true => Bopp Bmax_float | B754_nan => B754_nan | B754_finite false _ _ _ => Bplus mode_NE x (Bulp x) | B754_finite true _ _ _ => Bopp (Bpred_pos' (Bopp x)) end.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax

(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
x:binary_float
Fx:is_finite x = true

Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

Bsucc' (B754_zero sx) = Bsucc (B754_zero sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
Bsucc' (B754_finite sx mx ex Bx) = Bsucc (B754_finite sx mx ex Bx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

Bsucc' (B754_zero sx) = Bsucc (B754_zero sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 emin))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone emin) = round radix2 fexp (round_mode mode_NE) (B2R Bone * bpow radix2 emin) /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone else B2SF (Bldexp mode_NE Bone emin) = binary_overflow mode_NE (Bsign Bone)) -> Bsucc' (B754_zero sx) = Bsucc (B754_zero sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (bpow radix2 emin))) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone emin) = round radix2 fexp (round_mode mode_NE) (bpow radix2 emin) /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone else B2SF (Bldexp mode_NE Bone emin) = binary_overflow mode_NE (Bsign Bone)) -> Bsucc' (B754_zero sx) = Bsucc (B754_zero sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(if Rlt_bool (Rabs (bpow radix2 emin)) (bpow radix2 emax) then B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone else B2SF (Bldexp mode_NE Bone emin) = binary_overflow mode_NE (Bsign Bone)) -> Bsucc' (B754_zero sx) = Bsucc (B754_zero sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone -> Bsucc' (B754_zero sx) = Bsucc (B754_zero sx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin /\ is_finite (Bldexp mode_NE Bone emin) = is_finite Bone /\ Bsign (Bldexp mode_NE Bone emin) = Bsign Bone -> Bldexp mode_NE Bone emin = B754_finite false 1 emin Bulp_correct_aux
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

Bldexp mode_NE Bone emin = B754_finite false 1 emin Bulp_correct_aux
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

is_finite_strict (Bldexp mode_NE Bone emin) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
is_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
B2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

B2R (Bldexp mode_NE Bone emin) <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
is_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
B2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

bpow radix2 emin <> 0%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
is_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
B2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

(bpow radix2 emin > 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
is_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
B2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

is_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone
B2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

B2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
H1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 emin
H2:is_finite (Bldexp mode_NE Bone emin) = is_finite Bone
H3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone

bpow radix2 emin = B2R (B754_finite false 1 emin Bulp_correct_aux)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(Rabs (bpow radix2 emin) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(bpow radix2 emin < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(0 <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(emin < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(0 <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(3 - emax - prec < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(0 <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(0 <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(0 <= bpow radix2 emin)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

Valid_rnd (round_mode mode_NE)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

generic_format radix2 fexp (bpow radix2 emin)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(fexp (emin + 1) <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(Z.max (emin + 1 - prec) emin <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(emin <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true
(emin + 1 - prec <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(emin + 1 - prec <= emin)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
Fx:is_finite (B754_zero sx) = true

(0 < prec)%Z -> (emin + 1 - prec <= emin)%Z
lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true

Bsucc' (B754_finite sx mx ex Bx) = Bsucc (B754_finite sx mx ex Bx)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false
Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

succ radix2 fexp 0 = bpow radix2 emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

succ radix2 fexp 0 = bpow radix2 emin
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

ulp radix2 fexp 0 = bpow radix2 emin
now apply ulp_FLT_0.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

if Rlt_bool (succ radix2 fexp (B2R (B754_finite true mx ex Bx))) (bpow radix2 emax) then B2R (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true /\ Bsign (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true else B2SF (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
if Rlt_bool (succ radix2 fexp (B2R (B754_finite false mx ex Bx))) (bpow radix2 emax) then B2R (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = succ radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = true /\ Bsign (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = false else B2SF (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

if Rlt_bool (succ radix2 fexp (B2R (B754_finite true mx ex Bx))) (bpow radix2 emax) then B2R (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true /\ Bsign (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true else B2SF (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R

B2R (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true /\ Bsign (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(bpow radix2 emax <= succ radix2 fexp (B2R (B754_finite true mx ex Bx)))%R
B2SF (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R

B2R (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true /\ Bsign (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R

(- B2R (Bpred_pos' (B754_finite false mx ex Bx)))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bopp (Bpred_pos' (B754_finite false mx ex Bx))) = true /\ Bsign (Bopp (Bpred_pos' (B754_finite false mx ex Bx))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R

(- B2R (Bpred_pos' (B754_finite false mx ex Bx)))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred_pos' (B754_finite false mx ex Bx)) = true /\ Bsign (Bopp (Bpred_pos' (B754_finite false mx ex Bx))) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float

(- B2R (Bpred_pos' ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred_pos' ox) = true /\ Bsign (Bopp (Bpred_pos' ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(- B2R (Bpred_pos' ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred_pos' ox) = true /\ Bsign (Bopp (Bpred_pos' ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(2 < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(0 < B2R ox)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- B2R (Bpred ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred ox) = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(0 < B2R ox)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- B2R (Bpred ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred ox) = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(- B2R (Bpred ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred ox) = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

(- B2R (Bpred ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ is_finite (Bpred ox) = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

(- pred radix2 fexp (B2R ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx)) /\ true = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

(- pred radix2 fexp (B2R ox))%R = succ radix2 fexp (B2R (B754_finite true mx ex Bx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool
true = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

succ radix2 fexp (- B2R ox) = succ radix2 fexp (B2R (B754_finite true mx ex Bx))
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool
true = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

succ radix2 fexp (- F2R {| Fnum := Z.pos mx; Fexp := ex |}) = succ radix2 fexp (F2R {| Fnum := Z.neg mx; Fexp := ex |})
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool
true = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

true = true /\ Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

Bsign (Bopp (Bpred ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

negb (Bsign ox || negb (is_finite_strict ox)) = true
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool
is_nan (Bpred ox) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

is_nan (Bpred ox) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool

is_finite (Bpred ox) = true -> is_nan (Bpred ox) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(- bpow radix2 emax < pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(- bpow radix2 emax < 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(0 <= pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(- bpow radix2 emax < - 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(0 <= pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(0 <= pred radix2 fexp (B2R ox))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

Valid_exp fexp
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
(0 < B2R ox)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
generic_format radix2 fexp (B2R ox)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

(0 < B2R ox)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true
generic_format radix2 fexp (B2R ox)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
ox:=B754_finite false mx ex Bx:binary_float
Hpred:if Rlt_bool (- bpow radix2 emax) (pred radix2 fexp (B2R ox)) then B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%bool else B2SF (Bpred ox) = S754_infinity true

generic_format radix2 fexp (B2R ox)
apply generic_format_B2R.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hover:(bpow radix2 emax <= succ radix2 fexp (B2R (B754_finite true mx ex Bx)))%R

B2SF (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) <= succ radix2 fexp 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
(succ radix2 fexp 0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) <= succ radix2 fexp 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(B2R (B754_finite true mx ex Bx) <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(IZR (- Z.pos mx) * bpow radix2 ex <= 0)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(0 <= IZR (Z.pos mx) * bpow radix2 ex)%R
now apply Rmult_le_pos; [apply IZR_le|apply bpow_ge_0].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(succ radix2 fexp 0 < bpow radix2 emax)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(emin < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(3 - emax - prec < emax)%Z
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite true mx ex Bx) = true
x:=B754_finite true mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec < emax)%Z
lia.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

if Rlt_bool (succ radix2 fexp (B2R (B754_finite false mx ex Bx))) (bpow radix2 emax) then B2R (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = succ radix2 fexp (B2R (B754_finite false mx ex Bx)) /\ is_finite (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = true /\ Bsign (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = false else B2SF (Bplus mode_NE (B754_finite false mx ex Bx) (Bulp (B754_finite false mx ex Bx))) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:is_finite (Bulp x) = true -> if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => match mode_NE with | mode_DN => (Bsign x || Bsign (Bulp x))%bool | _ => (Bsign x && Bsign (Bulp x))%bool end | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)

(0 <= B2R x)%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R
if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)

(0 <= B2R x)%R
now apply F2R_ge_0.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R

succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R

succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
now unfold succ; rewrite (Rle_bool_true _ _ Px).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (B2R x + B2R (Bulp x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (B2R x + B2R (Bulp x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (succ radix2 fexp (B2R x)))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = round radix2 fexp (round_mode mode_NE) (succ radix2 fexp (B2R x)) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (Rabs (succ radix2 fexp (B2R x))) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Hplus:if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end else B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R

if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false else B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
Hplus:B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)
B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

Bsign (Bplus mode_NE x (Bulp x)) = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

(succ radix2 fexp (B2R x) < 0)%R -> true = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end
succ radix2 fexp (B2R x) = 0%R -> (Bsign x && Bsign (Bulp x))%bool = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end
(0 < succ radix2 fexp (B2R x))%R -> false = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

(succ radix2 fexp (B2R x) < 0)%R -> true = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

(succ radix2 fexp (B2R x) < 0)%R -> False
apply Rle_not_lt, (Rle_trans _ _ _ Px), succ_ge_id.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

succ radix2 fexp (B2R x) = 0%R -> (Bsign x && Bsign (Bulp x))%bool = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end
(0 < succ radix2 fexp (B2R x))%R -> false = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

succ radix2 fexp (B2R x) = 0%R -> (Bsign x && Bsign (Bulp x))%bool = false
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

(0 < succ radix2 fexp (B2R x))%R
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

(0 < B2R x)%R
now apply Rmult_lt_0_compat; [apply IZR_lt|apply bpow_gt_0].
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
Hplus:B2R (Bplus mode_NE x (Bulp x)) = succ radix2 fexp (B2R x) /\ is_finite (Bplus mode_NE x (Bulp x)) = true /\ Bsign (Bplus mode_NE x (Bulp x)) = match Rcompare (succ radix2 fexp (B2R x)) 0 with | Eq => (Bsign x && Bsign (Bulp x))%bool | Lt => true | Gt => false end

(0 < succ radix2 fexp (B2R x))%R -> false = false
now simpl.
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite false mx ex Bx) = true
x:=B754_finite false mx ex Bx:binary_float
Hsucc:succ radix2 fexp 0 = bpow radix2 emin
Hulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = false
Px:(0 <= B2R x)%R
Hsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%R
Hover:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
Hplus:B2SF (Bplus mode_NE x (Bulp x)) = binary_overflow mode_NE (Bsign x) /\ Bsign x = Bsign (Bulp x)

B2SF (Bplus mode_NE x (Bulp x)) = S754_infinity false
now rewrite (proj1 Hplus).
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false

Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false

(if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc x) = true /\ Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool else B2SF (Bsucc x) = S754_infinity false) -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float

(if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx else B2SF (Bsucc' x) = S754_infinity false) -> (if Rlt_bool (succ radix2 fexp (B2R x)) (bpow radix2 emax) then B2R (Bsucc x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc x) = true /\ Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool else B2SF (Bsucc x) = S754_infinity false) -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R

B2R (Bsucc' x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc' x) = true /\ Bsign (Bsucc' x) = sx -> B2R (Bsucc x) = succ radix2 fexp (B2R x) /\ is_finite (Bsucc x) = true /\ Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
H1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)
H2:is_finite (Bsucc' x) = true
H3:Bsign (Bsucc' x) = sx
H4:B2R (Bsucc x) = succ radix2 fexp (B2R x)
H5:is_finite (Bsucc x) = true
H6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool

Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
H1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)
H2:is_finite (Bsucc' x) = true
H3:Bsign (Bsucc' x) = sx
H4:B2R (Bsucc x) = succ radix2 fexp (B2R x)
H5:is_finite (Bsucc x) = true
H6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool

B2R (Bsucc' x) = B2R (Bsucc x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
H1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)
H2:is_finite (Bsucc' x) = true
H3:Bsign (Bsucc' x) = sx
H4:B2R (Bsucc x) = succ radix2 fexp (B2R x)
H5:is_finite (Bsucc x) = true
H6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool
Bsign (Bsucc' x) = Bsign (Bsucc x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
H1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)
H2:is_finite (Bsucc' x) = true
H3:Bsign (Bsucc' x) = sx
H4:B2R (Bsucc x) = succ radix2 fexp (B2R x)
H5:is_finite (Bsucc x) = true
H6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool

Bsign (Bsucc' x) = Bsign (Bsucc x)
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
H1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)
H2:is_finite (Bsucc' x) = true
H3:Bsign (Bsucc' x) = sx
H4:B2R (Bsucc x) = succ radix2 fexp (B2R x)
H5:is_finite (Bsucc x) = true
H6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool

sx = (Bsign x && is_finite_strict x)%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(succ radix2 fexp (B2R x) < bpow radix2 emax)%R
H1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)
H2:is_finite (Bsucc' x) = true
H3:Bsign (Bsucc' x) = sx
H4:B2R (Bsucc x) = succ radix2 fexp (B2R x)
H5:is_finite (Bsucc x) = true
H6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%bool

sx = (sx && true)%bool
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R

B2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
H1:B2SF (Bsucc' x) = S754_infinity false
H2:B2SF (Bsucc x) = S754_infinity false

Bsucc' x = Bsucc x
prec, emax:Z
prec_gt_0_:Prec_gt_0 prec
prec_lt_emax_:Prec_lt_emax prec emax
Hp:(2 < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded mx ex = true
Fx:is_finite (B754_finite sx mx ex Bx) = true
x:=B754_finite sx mx ex Bx:binary_float
H:(bpow radix2 emax <= succ radix2 fexp (B2R x))%R
H1:B2SF (Bsucc' x) = S754_infinity false
H2:B2SF (Bsucc x) = S754_infinity false

B2SF (Bsucc' x) = B2SF (Bsucc x)
now rewrite H1, H2. Qed. End Binary. Arguments B754_zero {prec} {emax}. Arguments B754_infinity {prec} {emax}. Arguments B754_nan {prec} {emax}. Arguments B754_finite {prec} {emax}. Arguments SF2B {prec} {emax}. Arguments B2SF {prec} {emax}. Arguments B2R {prec} {emax}. Arguments is_finite_strict {prec} {emax}. Arguments is_finite {prec} {emax}. Arguments is_nan {prec} {emax}. Arguments erase {prec} {emax}. Arguments Bsign {prec} {emax}. Arguments Bcompare {prec} {emax}. Arguments Bopp {prec} {emax}. Arguments Babs {prec} {emax}. Arguments Bone {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bmax_float {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bplus {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bminus {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bmult {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bfma {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bdiv {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bsqrt {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bldexp {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bnormfr_mantissa {prec} {emax}. Arguments Bfrexp {prec} {emax} {prec_gt_0_}. Arguments Bulp {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bulp' {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bsucc {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bpred {prec} {emax} {prec_gt_0_} {prec_lt_emax_}. Arguments Bpred_pos' {prec} {emax} {prec_gt_0_} {prec_lt_emax_}.