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.
Copyright (C) 2010-2018 Guillaume Melquiond
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, SF2R radix2 (B2SF x) = B2R xnow intros [sx|sx| |sx mx ex Hx]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, SF2R radix2 (B2SF x) = B2R xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), B2SF (SF2B x Hx) = xnow intros [sx|sx| |sx mx ex] Hx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), B2SF (SF2B x Hx) = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, valid_binary (B2SF x) = truenow intros [sx|sx| |sx mx ex Hx]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, valid_binary (B2SF x) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : binary_float) (H : valid_binary (B2SF x) = true), SF2B (B2SF x) H = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : binary_float) (H : valid_binary (B2SF x) = true), SF2B (B2SF x) H = xapply f_equal, eqbool_irrelevance. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:valid_binary (B2SF (B754_finite sx mx ex Hx)) = trueSF2B (B2SF (B754_finite sx mx ex Hx)) H = B754_finite sx mx ex Hxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, SF2B (B2SF x) (valid_binary_B2SF x) = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, SF2B (B2SF x) (valid_binary_B2SF x) = xapply SF2B_B2SF. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatSF2B (B2SF x) (valid_binary_B2SF x) = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), B2R (SF2B x Hx) = SF2R radix2 xnow intros [sx|sx| |sx mx ex] Hx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), B2R (SF2B x Hx) = SF2R radix2 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 endnow intros T fz fi fn ff [sx|sx| |sx mx ex] Hx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZH:canonical_mantissa mx ex = truecanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZH:canonical_mantissa mx ex = trueHx:fexp (Z.pos (digits2_pos mx) + ex) = excanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = exprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excexp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = fexp (Z.pos (digits2_pos mx) + ex)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = exmag radix2 (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = (Z.pos (digits2_pos mx) + ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = ex(Zdigits radix2 (cond_Zopp sx (Z.pos mx)) + ex)%Z = (Z.pos (digits2_pos mx) + ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excond_Zopp sx (Z.pos mx) <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excond_Zopp sx (Z.pos mx) <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excond_Zopp sx (Z.pos mx) <> 0%Znow case sx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:fexp (Z.pos (digits2_pos mx) + ex) = excond_Zopp sx (Z.pos mx) <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, generic_format radix2 fexp (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, generic_format radix2 fexp (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truegeneric_format radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truecanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}now destruct (andb_prop _ _ Hx) as (H, _). Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truecanonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, FLT_format radix2 emin prec (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, FLT_format radix2 emin prec (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFLT_format radix2 emin prec (B2R x)apply generic_format_B2R. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatgeneric_format radix2 (FLT_exp emin prec) (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, B2SF x = B2SF y -> x = yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, B2SF x = B2SF y -> x = y(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx, sy:boolB2SF (B754_zero sx) = B2SF (B754_zero sy) -> B754_zero sx = B754_zero syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx, sy:boolB2SF (B754_infinity sx) = B2SF (B754_infinity sy) -> B754_infinity sx = B754_infinity syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueB2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx, sy:boolH:B2SF (B754_zero sx) = B2SF (B754_zero sy)B754_zero sx = B754_zero syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx, sy:boolB2SF (B754_infinity sx) = B2SF (B754_infinity sy) -> B754_infinity sx = B754_infinity syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx, sy:boolB2SF (B754_infinity sx) = B2SF (B754_infinity sy) -> B754_infinity sx = B754_infinity syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueB2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx, sy:boolH:B2SF (B754_infinity sx) = B2SF (B754_infinity sy)B754_infinity sx = B754_infinity syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueB2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy) -> B754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH: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 Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH:B2SF (B754_finite sx mx ex Hx) = B2SF (B754_finite sy my ey Hy)H1:sx = syH2:mx = myH3:ex = eyB754_finite sy mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:sx = syH2:mx = myH3:ex = eyB754_finite sy mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueH1:sx = syH2:mx = myH3:ex = eyforall Hx : bounded mx ex = true, B754_finite sy mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueH1:sx = syH2:mx = myH3:ex = eyforall Hx : bounded my ey = true, B754_finite sy my ey Hx = B754_finite sy my ey Hyapply f_equal, eqbool_irrelevance. Qed. Definition is_finite_strict f := match f with | B754_finite _ _ _ _ => true | _ => false end.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueH1:sx = syH2:mx = myH3:ex = eyHx:bounded my ey = trueB754_finite sy my ey Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, B2R x <> 0%R -> is_finite_strict x = truenow intros [sx|sx| | sx mx ex Bx] Hx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, B2R x <> 0%R -> is_finite_strict x = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, is_finite_strict x = true -> is_finite_strict y = true -> B2R x = B2R y -> x = yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, is_finite_strict x = true -> is_finite_strict y = true -> B2R x = B2R y -> x = yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueis_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 Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truetrue = 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 Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueF2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} -> sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |} -> Falsesx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < R0)%Rsx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(R0 < F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(R0 < F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:ZF2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} > F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} > R0)%Rsx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(R0 > F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hysx:boolmx:positiveex:Zsy:boolmy:positiveey:Z(R0 > F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syB754_finite sx mx ex Hx = B754_finite sy my ey Hy(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = symx = my /\ ex = eyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq: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 = eyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq: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 = eyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical radix2 fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = sycanonical_mantissa my ey = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hy(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyB754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyforall Hx : bounded mx ex = true, B754_finite sx mx ex Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyforall Hx : bounded my ey = true, B754_finite sy my ey Hx = B754_finite sy my ey Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyHx:bounded my ey = trueB754_finite sy my ey Hx = B754_finite sy my ey Hyapply 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHy:bounded my ey = trueHeq:F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} = F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}Hs:sx = syH:mx = my /\ ex = eyHx:bounded my ey = trueHx = Hyprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (H : valid_binary x = true), Bsign (SF2B x H) = sign_SF xnow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (H : valid_binary x = true), Bsign (SF2B x H) = sign_SF xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), is_finite (SF2B x Hx) = is_finite_SF xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), is_finite (SF2B x Hx) = is_finite_SF xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite_SF (B2SF x) = is_finite xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite_SF (B2SF x) = is_finite xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, is_finite x = true -> is_finite y = true -> B2R x = B2R y -> Bsign x = Bsign y -> x = yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, is_finite x = true -> is_finite y = true -> B2R x = B2R y -> Bsign x = Bsign y -> x = yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx, y:binary_floatH:is_finite x = trueH0:is_finite y = trueH1:B2R x = B2R yH2:Bsign x = Bsign yx = yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolH:is_finite (B754_zero s) = trueH0:is_finite (B754_zero s0) = trueH1:B2R (B754_zero s) = B2R (B754_zero s0)H2:Bsign (B754_zero s) = Bsign (B754_zero s0)B754_zero s = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1: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 e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1: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 s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolH:is_finite (B754_zero s) = trueH0:is_finite (B754_zero s0) = trueH1:B2R (B754_zero s) = B2R (B754_zero s0)H2:Bsign (B754_zero s) = Bsign (B754_zero s0)B754_zero s = B754_zero s0congruence.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolH:is_finite (B754_zero s) = trueH0:is_finite (B754_zero s0) = trueH1:B2R (B754_zero s) = B2R (B754_zero s0)H2:s = s0B754_zero s = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1: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 e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1: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 e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1: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%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:IZR (Fnum {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:Fnum {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |} = 0%ZH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 (Fexp {| Fnum := cond_Zopp s0 (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)B754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)H3:(0 < bpow radix2 e)%RB754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)H3:(0 < 0)%RB754_zero s = B754_finite s0 m e e0destruct H3.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = trueH:is_finite (B754_zero s) = trueH0:is_finite (B754_finite s0 m e e0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_zero s) = Bsign (B754_finite s0 m e e0)H3:FalseB754_zero s = B754_finite s0 m e e0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1: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 s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1: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%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:IZR (Fnum {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:Fnum {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |} = 0%ZH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 (Fexp {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |}) = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)B754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)H3:(0 < bpow radix2 e)%RB754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)H3:(0 < 0)%RB754_finite s m e e0 = B754_zero s0destruct 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolH:is_finite (B754_finite s m e e0) = trueH0:is_finite (B754_zero s0) = trueH1:bpow radix2 e = 0%RH2:Bsign (B754_finite s m e e0) = Bsign (B754_zero s0)H3:FalseB754_finite s m e e0 = B754_zero s0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), is_nan (SF2B x Hx) = is_nan_SF xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (x : spec_float) (Hx : valid_binary x = true), is_nan (SF2B x Hx) = is_nan_SF xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan_SF (B2SF x) = is_nan xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan_SF (B2SF x) = is_nan xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatbinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatbinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolbinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolbinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxbinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:bounded m e = truebinary_floatexact (B754_zero s).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolbinary_floatexact (B754_infinity s).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolbinary_floatexact B754_nan.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxbinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:bounded m e = truebinary_floatprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:bounded m e = truebounded m e = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:true = truetrue = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:false = truefalse = trueexact H. Defined.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:false = truefalse = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, erase x = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, erase x = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:bounded m e = trueB754_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 Happly f_equal, eqbool_irrelevance. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:bounded m e = trueB754_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
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, Bopp (Bopp x) = xnow intros [sx|sx| |sx mx ex Hx] ; simpl ; try rewrite Bool.negb_involutive. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, Bopp (Bopp x) = xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, B2R (Bopp x) = (- B2R x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, B2R (Bopp x) = (- B2R x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = true(- B2R (B754_finite sx mx ex Hx))%R = B2R (Bopp (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx: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 |}now case sx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueF2R (Fopp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := cond_Zopp (negb sx) (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite (Bopp x) = is_finite xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite (Bopp x) = is_finite xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite_strict (Bopp x) = is_finite_strict xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite_strict (Bopp x) = is_finite_strict xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Bsign (Bopp x) = negb (Bsign x)now intros [s|s| |s m e H]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Bsign (Bopp x) = negb (Bsign x)
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, B2R (Babs x) = Rabs (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, B2R (Babs x) = Rabs (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueRabs (B2R (B754_finite sx mx ex Hx)) = B2R (Babs (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueRabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := Z.pos mx; Fexp := ex |}now destruct sx. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueF2R (Fabs {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite (Babs x) = is_finite xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite (Babs x) = is_finite xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Bsign (Babs x) = falsenow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Bsign (Babs x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Babs (Babs x) = Babs xnow intros [sx|sx| |sx mx ex Hx]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Babs (Babs x) = Babs xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Babs (Bopp x) = Babs xnow intros [| | |]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_nan x = false -> Babs (Bopp x) = Babs x
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall f1 f2 : binary_float, is_finite f1 = true -> is_finite f2 = true -> Bcompare f1 f2 = Some (Rcompare (B2R f1) (B2R f2))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall f1 f2 : binary_float, is_finite f1 = true -> is_finite f2 = true -> Bcompare f1 f2 = Some (Rcompare (B2R f1) (B2R f2))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall f1 f2 : binary_float, is_finite f1 = true -> is_finite f2 = true -> Bcompare f1 f2 = Some (Rcompare (B2R f1) (B2R f2))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf1, f2:binary_floatH1:is_finite f1 = trueH2:is_finite f2 = truematch 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolEq = Rcompare (B2R (B754_zero s)) (B2R (B754_zero s0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = true(if s0 then Gt else Lt) = Rcompare (B2R (B754_zero s)) (B2R (B754_finite s0 m e e0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:bool(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs, s0:boolm:positivee:Ze0:bounded m e = true(if s0 then Gt else Lt) = Rcompare (B2R (B754_zero s)) (B2R (B754_finite s0 m e e0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:bool(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = true(B2R (B754_finite true m e e0) < B2R (B754_zero s))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = true(B2R (B754_zero s) < B2R (B754_finite false m e e0))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:bool(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = true(B2R (B754_zero s) < B2R (B754_finite false m e e0))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:bool(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:bool(if s then Lt else Gt) = Rcompare (B2R (B754_finite s m e e0)) (B2R (B754_zero s0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:positivee:Ze0:bounded m e = trues0:bool(B2R (B754_finite true m e e0) < B2R (B754_zero s0))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:positivee:Ze0:bounded m e = trues0:bool(B2R (B754_zero s0) < B2R (B754_finite false m e e0))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:positivee:Ze0:bounded m e = trues0:bool(B2R (B754_zero s0) < B2R (B754_finite false m e e0))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:Ze0:bounded m e = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |}H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:Ze2: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |}H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zforall (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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zforall (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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zm1, m2:positivee0, e2:Zx:=(IZR (Z.pos m1) * bpow radix2 e0)%R:Ry:=(IZR (Z.pos m2) * bpow radix2 e2)%R:RH4:(cexp radix2 fexp x < cexp radix2 fexp y)%ZH5:(mag radix2 y <= mag radix2 x)%ZFalseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zm1, m2:positivee0, e2:Zx:=(IZR (Z.pos m1) * bpow radix2 e0)%R:Ry:=(IZR (Z.pos m2) * bpow radix2 e2)%R:RH4:(cexp radix2 fexp x < cexp radix2 fexp y)%ZH5:(y <= x)%R(0 < y)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zm1, m2:positivee0, e2:Zx:=(IZR (Z.pos m1) * bpow radix2 e0)%R:Ry:=(IZR (Z.pos m2) * bpow radix2 e2)%R:RH4:(cexp radix2 fexp x < cexp radix2 fexp y)%ZH5:(mag radix2 y <= mag radix2 x)%Z(cexp radix2 fexp y <= cexp radix2 fexp x)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zm1, m2:positivee0, e2:Zx:=(IZR (Z.pos m1) * bpow radix2 e0)%R:Ry:=(IZR (Z.pos m2) * bpow radix2 e2)%R:RH4:(cexp radix2 fexp x < cexp radix2 fexp y)%ZH5:(y <= x)%R(0 < y)%Rnow apply (F2R_gt_0 _ (Float radix2 (Zpos m2) e2)).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%Zm1, m2:positivee0, e2:Zx:=(IZR (Z.pos m1) * bpow radix2 e0)%R:Ry:=(IZR (Z.pos m2) * bpow radix2 e2)%R:RH4:(cexp radix2 fexp x < cexp radix2 fexp y)%ZH5:(y <= x)%R(0 < y)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%Rforall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%RH5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%Rforall (m1 m2 : positive) (e0 e2 : Z), (IZR (- Z.pos m1) * bpow radix2 e0 < IZR (Z.pos m2) * bpow radix2 e2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%Rm1, m2:positivee0, e2:Z(IZR (- Z.pos m1) * bpow radix2 e0 < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%Rm1, m2:positivee0, e2:Z(0 < IZR (Z.pos m2) * bpow radix2 e2)%Rnow apply (F2R_gt_0 _ (Float radix2 (Zpos m2) e2)).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%Rm1, m2:positivee0, e2:Z(0 < IZR (Z.pos m2) * bpow radix2 e2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%RH5: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 |})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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee:ZH:e = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m); Fexp := e |})H0:(e <=? emax - prec)%Z = trues0:boolm0:positivee1:ZH1:e1 = cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos m0); Fexp := e1 |})H2:(e1 <=? emax - prec)%Z = trueH3:Zcompare_prop e e1 (e ?= e1)%ZH4: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)%RH5: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)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, Bcompare y x = match Bcompare x y with | Some c => Some (CompOpp c) | None => None endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x y : binary_float, Bcompare y x = match Bcompare x y with | Some c => Some (CompOpp c) | None => None endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx, y:binary_floatBcompare y x = match Bcompare x y with | Some c => Some (CompOpp c) | None => None endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx, y:binary_floatSFcompare (B2SF y) (B2SF x) = match SFcompare (B2SF x) (B2SF y) with | Some c => Some (CompOpp c) | None => None endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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)now rewrite (Pcompare_antisym mx my).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome 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)now rewrite Pcompare_antisym. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = truemy:positiveey:ZBy:bounded my ey = trueSome match CompOpp Eq with | Eq => Pos.compare_cont Eq my mx | Lt => Lt | Gt => Gt end = Some (CompOpp (Pos.compare_cont Eq mx my))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:canonical_mantissa mx ex = trueH2:(ex <=? emax - prec)%Z = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:canonical_mantissa mx ex = trueH2:(ex <=? emax - prec)%Z = truefexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <=? emax - prec)%Z = truefexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <=? emax - prec)%Z = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = ex(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <=? emax - prec)%Z = trueH1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Z(F2R {| Fnum := Z.pos mx; Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z(bpow radix2 (ex + prec) + - bpow radix2 ex <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z(0 <= bpow radix2 (ex + prec) - bpow radix2 ex)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z(1 <= bpow radix2 (emax - prec - ex))%Rapply Rle_0_minus, bpow_le; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z(0 <= bpow radix2 (ex + prec) - bpow radix2 ex)%Rchange 1%R with (bpow radix2 0); apply bpow_le; lia. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZEx:(IZR (Z.pos mx) <= bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1)%RH':(IZR (Z.pos mx) * bpow radix2 ex <= (bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix2 ex)%RH1:Z.max (Z.pos (digits2_pos mx) + ex - prec) emin = exH1':(Zdigits radix2 (Z.pos mx) + ex <= ex + prec)%Z(1 <= bpow radix2 (emax - prec - ex))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex : Z), bounded mx ex = true -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:canonical_mantissa mx ex = trueH2:(ex <=? emax - prec)%Z = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:canonical_mantissa mx ex = trueH2:(ex <=? emax - prec)%Z = truefexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <=? emax - prec)%Z = truefexp (Z.pos (digits2_pos mx) + ex) = ex -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <=? emax - prec)%Z = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = ex(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <=? emax - prec)%Z = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = ex(ex <= emax - prec)%Z -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = ex(ex <= emax - prec)%Z -> (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Z(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 e' <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH: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')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 e' <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 e' <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZF2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 e' <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(F2R {| Fnum := Z.pos mx; Fexp := ex |} > 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 e' <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 e' <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(e' <= emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(Zdigits radix2 (Z.pos mx) + ex <= emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(Zdigits radix2 (Z.pos mx) + ex <= emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH2:(ex <= emax - prec)%Ze':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Zfexp (Z.pos (digits2_pos mx) + ex) = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Zprec, emax:Zmx:positiveex:ZH2:(ex <= emax - prec)%Zfexp (Z.pos (digits2_pos mx) + ex) = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Zprec, emax:Zmx:positiveex:ZH2:(ex <= emax - prec)%Zfexp (Zdigits radix2 (Z.pos mx) + ex) = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Zintros ; zify ; omega. Qed.prec, emax:Zmx:positiveex:ZH2:(ex <= emax - prec)%ZZ.max (Zdigits radix2 (Z.pos mx) + ex - prec) emin = ex -> (Zdigits radix2 (Z.pos mx) + ex <= emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex : Z), bounded mx ex = true -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex : Z), bounded mx ex = true -> (bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = true(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:canonical_mantissa mx ex = true(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = ex(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%Z(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Z(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Z(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Z(bpow radix2 emin <= bpow radix2 (e' - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%ZF2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Z(bpow radix2 emin <= bpow radix2 (e' - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Z(emin <= e' - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = trueH1:fexp (Z.pos (digits2_pos mx) + ex) = exe':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Z(emin <= Zdigits radix2 (Z.pos mx) + ex - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = truee':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Zfexp (Z.pos (digits2_pos mx) + ex) = ex -> (emin <= Zdigits radix2 (Z.pos mx) + ex - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = truee':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Zfexp (Zdigits radix2 (Z.pos mx) + ex) = ex -> (emin <= Zdigits radix2 (Z.pos mx) + ex - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = truee':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Zforall z : Z, (0 < z)%Z -> fexp (z + ex) = ex -> (emin <= z + ex - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZHx:bounded mx ex = truee':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e')%RH:Z.pos mx <> 0%Z -> e' = (Zdigits radix2 (Z.pos mx) + ex)%ZH0:Z.pos mx <> 0%Zforall z : Z, (0 < z)%Z -> Z.max (z + ex - prec) emin = ex -> (emin <= z + ex - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precex:Zforall z : Z, (0 < z)%Z -> Z.max (z + ex - prec) emin = ex -> (emin <= z + ex - 1)%Zintros ; zify ; omega. Qed.prec, emax:Zprec_gt_0_:(0 < prec)%Zex:Zforall z : Z, (0 < z)%Z -> Z.max (z + ex - prec) emin = ex -> (emin <= z + ex - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, (Rabs (B2R x) <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, (Rabs (B2R x) <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = true(Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) <= bpow radix2 emax - bpow radix2 (emax - prec))%Rnow apply bounded_le_emax_minus_prec. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = true(F2R {| Fnum := Z.abs (Z.pos mx); Fexp := ex |} <= bpow radix2 emax - bpow radix2 (emax - prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, (Rabs (B2R x) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, (Rabs (B2R x) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = true(Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) < bpow radix2 emax)%Rnow apply bounded_lt_emax. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = true(F2R {| Fnum := Z.abs (Z.pos mx); Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite_strict x = true -> (bpow radix2 emin <= Rabs (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite_strict x = true -> (bpow radix2 emin <= Rabs (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = truetrue = true -> (bpow radix2 emin <= Rabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.neg mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.neg mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= IZR (Z.pos mx) * Rabs (bpow radix2 ex))%Rnow apply bounded_ge_emin.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= IZR (Z.pos mx) * bpow radix2 ex)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= IZR (Z.pos mx) * Rabs (bpow radix2 ex))%Rnow apply bounded_ge_emin. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueH:true = true(bpow radix2 emin <= IZR (Z.pos mx) * bpow radix2 ex)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rbounded mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rcanonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rcanonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) (cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (fexp (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (fexp (Zdigits radix2 (Z.pos mx) + ex)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RZeq_bool (fexp (Zdigits radix2 (Z.pos mx) + ex)) (fexp (Zdigits radix2 (Z.pos mx) + ex)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:canonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%R(ex <= emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e' - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e')%RF2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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)%Zclear ; lia. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZCx:ex = cexp radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})Bx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Re':ZEx: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
Truncation
prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (m : Z) (l : location), shr_m (shr_record_of_loc m l) = mnow intros m [|[| |]]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (m : Z) (l : location), shr_m (shr_record_of_loc m l) = mprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (m : Z) (l : location), loc_of_shr_record (shr_record_of_loc m l) = lnow intros m [|[| |]]. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (m : Z) (l : location), loc_of_shr_record (shr_record_of_loc m l) = lprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)(0 < bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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_recordHm:(0 <= shr_m mrs)%Zloc_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zr, s:boolHm:(0 <= shr_m {| shr_m := m; shr_r := r; shr_s := s |})%Zloc_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl:inbetween_float radix2 (shr_m mrs) e x (loc_of_shr_record mrs)(e <= e + 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rmrs:shr_recorde:ZHm:(0 <= shr_m mrs)%ZHl: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))%Zmrs:shr_recordHm:(0 <= shr_m mrs)%Zshr_m mrs = (2 * shr_m (shr_1 mrs) + (if shr_r (shr_1 mrs) then 1 else 0))%Znow destruct m as [|[m|m|]|m] ; try (now elim Hm) ; destruct r as [|] ; destruct s as [|]. Qed.m:Zr, s:boolHm:(0 <= shr_m {| shr_m := m; shr_r := r; shr_s := s |})%Zshr_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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:ZHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x llet '(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x linbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x linbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x linbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x linbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x linbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x linbetween_float radix2 (shr_m (shr_record_of_loc m l)) e x (loc_of_shr_record (shr_record_of_loc m l))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natIHn0: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:natinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:Rm, e:Zl:locationn:positiveHm:(0 <= m)%ZHl:inbetween_float radix2 m e x ln0:nat(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Zm:Zl:locationHm:(0 <= m)%Zn0:nat(0 <= shr_m (iter_nat shr_1 n0 (shr_record_of_loc m l)))%Zm:Zl:locationHm:(0 <= m)%Z(0 <= shr_m (iter_nat shr_1 0 (shr_record_of_loc m l)))%Zm:Zl:locationHm:(0 <= m)%Zn0:natIHn0:(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)))%Zm:Zl:locationHm:(0 <= m)%Zn0:natIHn0:(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)))%Zm:Zl:locationHm:(0 <= m)%Zn0:natIHn0:(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))))%Zm:Zl:locationHm:(0 <= m)%Zn0: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))))%Zm:Zl:locationHm:(0 <= m)%Zn0:natforall s : shr_record, (0 <= shr_m s)%Z -> (0 <= shr_m (shr_1 s))%Zforall s : shr_record, (0 <= shr_m s)%Z -> (0 <= shr_m (shr_1 s))%Znow destruct m as [|[m|m|]|m] ; try (now elim Hm) ; destruct r as [|] ; destruct s as [|]. Qed. Notation shr_fexp := (shr_fexp prec emax).m:Zr, s:boolHm:(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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zshr_fexp m e l = (let '(m', e', l') := truncate radix2 fexp (m, e, l) in (shr_record_of_loc m' l', e'))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationtruncate radix2 fexp (m, e, l) = (m', e', l') -> shr_fexp m e l = (shr_record_of_loc m' l', e')prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationtruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationtruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationHe:(fexp (Zdigits radix2 m + e) - e)%Z = 0%Ztruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationHe:(fexp (Zdigits radix2 m + e) - e)%Z = 0%ZH:(m, e, l) = (m', e', l')(shr_record_of_loc m l, e) = (shr_record_of_loc m' l', e')prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos ptruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos p(e <= fexp (Zdigits radix2 m + e))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Ztruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Ztruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x ltruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x l(0 <= x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x l(0 <= F2R {| Fnum := m; Fexp := e |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x l(F2R {| Fnum := m; Fexp := e |} <= x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x l(F2R {| Fnum := m; Fexp := e |} <= x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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 mrsH6:l' = loc_of_shr_record mrsmrs = shr_record_of_loc m' l'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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 mrsH6:l' = loc_of_shr_record mrsmrs = shr_record_of_loc (shr_m mrs) (loc_of_shr_record mrs)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.pos pHe:(e <= fexp (Zdigits radix2 m + e))%Zx:RHx:inbetween_float radix2 m e x lHx0:(0 <= x)%Rmrs:shr_recorde'':ZH3: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 mrsH6:l' = loc_of_shr_record mrsforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg ptruncate 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(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')now inversion H. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm, e:Zl:locationHm:(0 <= m)%Zm', e':Zl':locationp:positiveHp:(fexp (Zdigits radix2 m + e) - e)%Z = Z.neg pH:(m, e, l) = (m', e', l')(shr_record_of_loc m l, e) = (shr_record_of_loc m' l', e')
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall m : mode, Valid_rnd (round_mode m)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (m : mode) (s : bool), valid_binary (binary_overflow m s) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (m : mode) (s : bool), valid_binary (binary_overflow m s) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolvalid_binary (binary_overflow m s) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolvalid_binary (if overflow_to_inf m s then S754_infinity s else S754_finite s (Z.to_pos (2 ^ prec - 1)) (emax - prec)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolvalid_binary (S754_infinity s) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolvalid_binary (S754_finite s (Z.to_pos (2 ^ prec - 1)) (emax - prec)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolvalid_binary (S754_finite s (Z.to_pos (2 ^ prec - 1)) (emax - prec)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:bool(canonical_mantissa (Z.to_pos (2 ^ prec - 1)) (emax - prec) && (emax - prec <=? emax - prec)%Z)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:bool(canonical_mantissa (Z.to_pos (2 ^ prec - 1)) (emax - prec) && true)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolcanonical_mantissa (Z.to_pos (2 ^ prec - 1)) (emax - prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolfexp (Z.pos (digits2_pos (Z.to_pos (2 ^ prec - 1))) + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolfexp (Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1))) + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolfexp (prec + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolprec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolZ.max (prec + (emax - prec) - prec) (3 - emax - prec) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolprec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:bool(0 < prec)%Z -> (prec < emax)%Z -> Z.max (prec + (emax - prec) - prec) (3 - emax - prec) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolprec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolprec = Zdigits radix2 (Z.pos (Z.to_pos (2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolprec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:bool(0 < radix2 ^ prec - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Zprec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:bool(Z.succ 0 < radix2 ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Zprec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Zprec = Zdigits radix2 (Z.pos (Z.to_pos (radix2 ^ prec - 1)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Zprec = Zdigits radix2 (radix2 ^ prec - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(prec <= Zdigits radix2 (radix2 ^ prec - 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(Zdigits radix2 (radix2 ^ prec - 1) <= prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(prec <= Zdigits radix2 (radix2 ^ prec - 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(Z.pred prec < Zdigits radix2 (radix2 ^ prec - 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(radix2 ^ Z.pred prec <= Z.abs (radix2 ^ prec - 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(radix2 ^ Z.pred prec <= radix2 ^ prec - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(radix2 ^ Z.pred prec < radix2 ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(0 <= prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(Z.pred prec < prec)%Zapply Z.lt_pred_l.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(Z.pred prec < prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(Zdigits radix2 (radix2 ^ prec - 1) <= prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(Z.abs (radix2 ^ prec - 1) < radix2 ^ prec)%Zapply 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modes:boolH:(0 < radix2 ^ prec - 1)%Z(radix2 ^ prec - 1 < radix2 ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = truelet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falsevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = truebounded mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = truebounded mx ex = truenow rewrite Cx.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = true(canonical_mantissa mx ex && (ex <=? emax - prec)%Z)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = truevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = trueif 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 sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = trueSF2R 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) = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = trueSF2R radix2 (S754_finite sx mx ex) = cond_Ropp sx (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rnow apply bounded_lt_emax.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = trueHb:bounded mx ex = true(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falsevalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falsevalid_binary (binary_overflow m sx) = true /\ binary_overflow m sx = binary_overflow m sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = false(bpow radix2 emax <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falsevalid_binary (binary_overflow m sx) = true /\ binary_overflow m sx = binary_overflow m sxapply binary_overflow_correct.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falsevalid_binary (binary_overflow m sx) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = false(bpow radix2 emax <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = false~ (F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falseHx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RFalseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falseHx:bounded mx ex = trueFalseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falseHx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rcanonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falsebounded mx ex = true -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falseHx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rcanonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = false(canonical_mantissa mx ex && (ex <=? emax - prec)%Z)%bool = true -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falseHx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rcanonical 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZCx:canonical_mantissa mx ex = trueHe:(ex <=? emax - prec)%Z = falseHx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rcanonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zz:=binary_round_aux m (Rlt_bool x 0) mx ex lx:spec_floatvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zz:=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_floatvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zround 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zround 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:Zinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* . *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* . *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs m1'; Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs (cond_Zopp (Rlt_bool x 0) m1'); Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* . *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* . m1' = 0 *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationm2 = 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationm2 = 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Zif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%ZSF2R 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 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%ZSF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%ZF2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} = SF2R radix2 (S754_zero (Rlt_bool x 0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* . 0 < m1' *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactZ.pos m1' <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactround radix2 fexp (round_mode m) x <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp true (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z(0 < Rabs (round radix2 fexp (round_mode m) x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%ZZ.pos m1' <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z(0 <= Z.pos m1')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2, e2:Zl2:locationF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2, e2:Zl2:locationF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2, e2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Ze2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Ze2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Ze2:Zl2:locationH3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2canonical_mantissa m2 e2 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2fexp (Z.pos (digits2_pos m2) + e2) = e2prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2fexp (Zdigits radix2 (Z.pos m2) + e2) = e2prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2fexp (mag radix2 (F2R {| Fnum := Z.pos m2; Fexp := e2 |})) = e2prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (round radix2 fexp (round_mode m) x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* . not m1' < 0 *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp (Rabs x))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* all the modes are valid *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zm:modeforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zm:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zm:modeforall (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:modeforall (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:modeforall (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:modeforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zm:modeforall (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:modeforall (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:modeforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zm:modeforall (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:modeforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zm:modeforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Z(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:inbetween_float radix2 mx ex (Rabs x) lxEx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%REx:(ex <= cexp radix2 fexp x)%Z(0 <= mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%REx:(ex <= cexp radix2 fexp x)%Z(0 < Z.succ mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%REx:(ex <= cexp radix2 fexp x)%Z(0 < F2R {| Fnum := Z.succ mx; Fexp := ?e |})%Rapply Rabs_pos. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx, ex:Zlx:locationPx:x <> 0%RBx:(F2R {| Fnum := mx; Fexp := ex |} <= Rabs x < F2R {| Fnum := mx + 1; Fexp := ex |})%REx:(ex <= cexp radix2 fexp x)%Z(0 <= Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zz:=binary_round_aux m (Rlt_bool x 0) (Z.pos mx) ex lx:spec_floatvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zz:=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_floatvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 <= Z.pos mx)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zround 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:Zinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := m1'; Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs m1'; Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = F2R {| Fnum := Z.abs (cond_Zopp (Rlt_bool x 0) m1'); Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZRabs (round radix2 fexp (round_mode m) x) = Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':=choice_mode m (Rlt_bool x 0) m1 l1:ZH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationm2 = 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationm2 = 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Zif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%ZSF2R 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 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%ZSF2R radix2 (S754_zero (Rlt_bool x 0)) = F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%ZF2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |} = SF2R radix2 (S754_zero (Rlt_bool x 0))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(Rabs (F2R {| Fnum := cond_Zopp (Rlt_bool x 0) 0; Fexp := e1 |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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)%ZHr: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_Exactm2, e2:Zl2:locationHm2:m2 = 0%Z(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactZ.pos m1' <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactround radix2 fexp (round_mode m) x <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp (Rlt_bool x 0) (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp true (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactF2R {| Fnum := cond_Zopp false (Z.pos m1'); Fexp := e1 |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z(0 < Rabs (round radix2 fexp (round_mode m) x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%ZZ.pos m1' <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Z(0 <= Z.pos m1')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2, e2:Zl2:locationF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2, e2:Zl2:locationF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2, e2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Ze2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Ze2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Ze2:Zl2:locationH3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2canonical_mantissa m2 e2 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2fexp (Z.pos (digits2_pos m2) + e2) = e2prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2fexp (Zdigits radix2 (Z.pos m2) + e2) = e2prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2fexp (mag radix2 (F2R {| Fnum := Z.pos m2; Fexp := e2 |})) = e2prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5:valid_binary (binary_fit_aux m (Rlt_bool x 0) m2 e2) = trueH6: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2H5: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)) l2valid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zm2:positivee2:Zl2:locationH3: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (F2R {| Fnum := Z.pos m1'; Fexp := e1 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (Rabs (round radix2 fexp (round_mode m) x))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_ExactHe:(e1 <= fexp (Zdigits radix2 (Z.pos m1') + e1))%Zgeneric_format radix2 fexp (round radix2 fexp (round_mode m) x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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_Exactvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zm1, e1:Zl1:locationm1':positiveH1a:inbetween_float radix2 m1 e1 (Rabs x) l1H1b: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')%ZHr: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < Rabs x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Z(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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 *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:Rmx:positiveex:Zlx:locationBx:inbetween_float radix2 (Z.pos mx) ex (Rabs x) lxEx:(ex <= fexp (Zdigits radix2 (Z.pos mx) + ex))%Zforall (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)m:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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:modeforall (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.m:modeforall (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)
Multiplication
prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rinbetween_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_Exactprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRabs (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RF2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RZ.abs (cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my)) = Z.pos (mx * my)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos (mx * my)) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:R(ex + ey <= fexp (Zdigits radix2 (Z.pos mx * Z.pos my) + (ex + ey)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:Rforall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = eprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zforall (m : positive) (e : Z), bounded m e = true -> fexp (Zdigits radix2 (Z.pos m) + e) = eprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zm:positivee:ZHb:bounded m e = truefexp (Zdigits radix2 (Z.pos m) + e) = eprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zm:positivee:ZHb:bounded m e = trueH:canonical_mantissa m e = truefexp (Zdigits radix2 (Z.pos m) + e) = eprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zm:positivee:ZHb:bounded m e = trueH:canonical_mantissa m e = trueZeq_bool (fexp (Zdigits radix2 (Z.pos m) + e)) e = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH: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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RH:forall (m0 : positive) (e : Z), bounded m0 e = true -> fexp (Zdigits radix2 (Z.pos m0) + e) = efexp (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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey:Zfexp (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)))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey:ZZ.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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey:Zforall 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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey, dx, dy, dxy:ZHx:(0 < dx)%ZHy:(0 < dy)%ZHxy:(dx + dy - 1 <= dxy)%ZZ.max (dx + ex - prec) emin = ex -> Z.max (dy + ey - prec) emin = ey -> (ex + ey <= Z.max (dxy + (ex + ey) - prec) emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey, dx, dy, dxy:ZHx:(0 < dx)%ZHy:(0 < dy)%ZHxy:(dx + dy - 1 <= dxy)%ZZ.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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:Zmy:positiveey, dx, dy, dxy:ZHx:(0 < dx)%ZHy:(0 < dy)%ZHxy:(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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx sy(* *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx) * cond_Zopp sy (Z.pos my); Fexp := ex + ey |}) 0 = xorb sx syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb true trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb true falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb true falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb true falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp true (Z.pos my); Fexp := ex + ey |}) 0 = xorb false trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx) * cond_Zopp false (Z.pos my); Fexp := ex + ey |}) 0 = xorb false falsenow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Ry:=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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syis_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syis_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syis_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))))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syis_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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syis_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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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) = trueH4:sign_SF (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = xorb sx syis_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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueforall 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)now rewrite B2SF_SF2B. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueH1:valid_binary (binary_round_aux m (xorb sx sy) (Z.pos (mx * my)) (ex + ey) loc_Exact) = trueH2: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)
Normalization and rounding
prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zlet (mx', ex'') := shl_align mx ex ex' in F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex'' |} /\ (ex'' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zlet (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(* d = 0 *)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Z(ex' - ex)%Z = 0%Z -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZH:(ex' - ex)%Z = 0%ZF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZH:(ex' - ex)%Z = 0%Z(ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZH:(ex' - ex)%Z = 0%Z(ex <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall p : positive, (ex' - ex)%Z = Z.pos p -> F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.pos dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx; Fexp := ex |} /\ (ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.pos d(ex <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.pos d(ex <= ex' - ex + ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.pos d(ex <= Z.pos d + ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.pos d(0 + ex <= Z.pos d + ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zforall 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')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos (shift_pos d mx); Fexp := ex' |} /\ (ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * Z.pow_pos 2 d; Fexp := ex' |} /\ (ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ Z.pos d; Fexp := ex' |} /\ (ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (- Z.neg d); Fexp := ex' |} /\ (ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (- (ex' - ex)); Fexp := ex' |} /\ (ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (- (ex' - ex)); Fexp := ex' |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg dF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx * radix2 ^ (ex - ex'); Fexp := ex' |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(0 <= ex - ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(0 <= - (ex' - ex))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex')%Zapply Z.le_refl. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':Zd:positiveHd:(ex' - ex)%Z = Z.neg d(ex' <= ex')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex ex' : Z), (ex' <= ex)%Z -> snd (shl_align mx ex ex') = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (mx : positive) (ex ex' : Z), (ex' <= ex)%Z -> snd (shl_align mx ex ex') = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zsnd (shl_align mx ex ex') = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zsnd match (ex' - ex)%Z with | Z.neg d => (shift_pos d mx, ex') | _ => (mx, ex) end = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Z(ex' - ex)%Z = 0%Z -> ex = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.pos p -> ex = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%ZH:(ex' - ex)%Z = 0%Zex = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.pos p -> ex = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.pos p -> ex = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zp:positive(ex' - ex)%Z = Z.pos p -> ex = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (ex' - ex)%Z = Z.neg p -> ex' = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zforall p : positive, (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex, ex':ZHe:(ex' <= ex)%Zp:positiveH:(ex' - ex)%Z = Z.neg pex' = ex'prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zlet (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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zlet (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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex: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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex: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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zforall (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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%ZF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |} /\ (ex' <= fexp (Zdigits radix2 (Z.pos mx') + ex'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%ZF2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1: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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1: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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1: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' |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mx'; Fexp := ex' |}H2:(ex' <= fexp (Zdigits radix2 (Z.pos mx) + ex))%ZZ.pos mx' <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1: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' |})))%Znow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:Zmx':positiveex':ZH1: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool x 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rinbetween_float radix2 (Z.pos mz) ez (Rabs x) loc_Exactprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool x 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRabs x = F2R {| Fnum := Z.pos mz; Fexp := ez |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool x 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRabs (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) = F2R {| Fnum := Z.pos mz; Fexp := ez |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool x 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool x 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool x 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}) 0 = sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}) 0 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:RRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) 0 = falsenow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zmz:positiveez:ZH1:F2R {| Fnum := Z.pos mx; Fexp := ex |} = F2R {| Fnum := Z.pos mz; Fexp := ez |}H2:(ez <= fexp (Zdigits radix2 (Z.pos mz) + ez))%Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:R(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx, ez:Zszero:boollet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:bool0%R = 0%R /\ true = true /\ szero = match Rcompare 0 0 with | Eq => szero | Lt => true | Gt => false endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:bool(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:booltrue = true /\ szero = match Rcompare 0 0 with | Eq => szero | Lt => true | Gt => false endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:bool(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:boolszero = match Rcompare 0 0 with | Eq => szero | Lt => true | Gt => false endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:bool(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modeez:Zszero:bool(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseis_finite (SF2B (binary_round m false mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falseBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = falsefalse = match Rcompare (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = false(0 < F2R {| Fnum := Z.pos mz; Fexp := ez |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = false(0 < Fnum {| Fnum := Z.pos mz; Fexp := ez |})%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m false mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m false mz ez) = false(0 < Z.pos mz)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%RVz:valid_binary (binary_round m false mz ez) = trueRz:binary_round m false mz ez = binary_overflow m falseB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%RVz:valid_binary (binary_round m false mz ez) = trueRz:binary_round m false mz ez = binary_overflow m falsebinary_overflow m false = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%RVz:valid_binary (binary_round m false mz ez) = trueRz:binary_round m false mz ez = binary_overflow m falsefalse = Rlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%RVz:valid_binary (binary_round m false mz ez) = trueRz:binary_round m false mz ez = binary_overflow m falseRlt_bool (F2R {| Fnum := Z.pos mz; Fexp := ez |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.pos mz; Fexp := ez |})))%RVz:valid_binary (binary_round m false mz ez) = trueRz:binary_round m false mz ez = binary_overflow m false(0 <= F2R {| Fnum := Z.pos mz; Fexp := ez |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueis_finite (SF2B (binary_round m true mz ez) (proj1 (conj Vz (conj Rz (conj Rz' Rz''))))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = trueBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = truetrue = match Rcompare (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = true(F2R {| Fnum := Z.neg mz; Fexp := ez |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = true(Fnum {| Fnum := Z.neg mz; Fexp := ez |} < 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolVz:valid_binary (binary_round m true mz ez) = trueRz: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) = trueRz'':sign_SF (binary_round m true mz ez) = true(Z.neg mz < 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%RVz:valid_binary (binary_round m true mz ez) = trueRz:binary_round m true mz ez = binary_overflow m trueB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%RVz:valid_binary (binary_round m true mz ez) = trueRz:binary_round m true mz ez = binary_overflow m truebinary_overflow m true = binary_overflow m (Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%RVz:valid_binary (binary_round m true mz ez) = trueRz:binary_round m true mz ez = binary_overflow m truetrue = Rlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%RVz:valid_binary (binary_round m true mz ez) = trueRz:binary_round m true mz ez = binary_overflow m trueRlt_bool (F2R {| Fnum := Z.neg mz; Fexp := ez |}) 0 = truenow apply F2R_lt_0. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemz:positiveez:Zszero:boolHz':(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := Z.neg mz; Fexp := ez |})))%RVz:valid_binary (binary_round m true mz ez) = trueRz:binary_round m true mz ez = binary_overflow m true(F2R {| Fnum := Z.neg mz; Fexp := ez |} < 0)%R
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 yprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = trueB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = trueB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = trueB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truesy = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truesy = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truesy = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truesy = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = true(Rabs (B2R (B754_finite sy my ey Hy)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_zero sx) = trueFy:is_finite (B754_finite sy my ey Hy) = truegeneric_format radix2 fexp (B2R (B754_finite sy my ey Hy))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = trueBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truesx = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truesx = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truesx = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truesx = 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(0 < bpow radix2 (Fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = true(Rabs (B2R (B754_finite sx mx ex Hx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_zero sy) = truegeneric_format radix2 fexp (B2R (B754_finite sx mx ex Hx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Zif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Zsnd (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Zsnd (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:Zsnd (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Zsnd (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:Zey' = 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:ZH1:ey' = ezH2:ex' = ezF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:ZH1:ey' = ezH2:ex' = ezF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:ZF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:ZH1: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(cond_Zopp sx (Z.pos (fst (mx', ex'))) + cond_Zopp sy (Z.pos (fst (my', ey'))))%Z:ZH1: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmx':positiveex':Zmy':positiveey':Zmz:=(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%Rsx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sysy = Rlt_bool (F2R {| Fnum := cond_Zopp sy (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp sy (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |}) 0 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0 + 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(F2R {| Fnum := cond_Zopp true (Z.pos my); Fexp := ey |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = syRlt_bool (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |}) 0 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(0 + 0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(0 <= F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(0 <= F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx = sy(0 <= F2R {| Fnum := cond_Zopp false (Z.pos my); Fexp := ey |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> sysx = Rlt_bool (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}) 0 /\ sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RHx':canonical_mantissa mx ex = trueHy':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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 |})))%RHs:sx <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RHx':canonical_mantissa mx ex = trueHy':canonical_mantissa my ey = truecanonical 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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHs:sx <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%Rcanonical 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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:ZHs:sx <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:true <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZHs:true <> trueBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZHs:true <> falseBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZHs:true <> falseBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zsy:boolmy:positiveey:ZHs:false <> syBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZHs:false <> trueBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZHs:false <> falseBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZHs:false <> trueBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precm:modemx:positiveex:Zmy:positiveey:ZBx:(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%RBy:(F2R {| Fnum := Z.pos my; Fexp := ey |} < bpow radix2 emax)%RCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syif 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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endB2R (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endis_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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endBsign (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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endmatch 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 endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endF2R {| Fnum := mz; Fexp := ez |} = 0%R -> szero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |} + F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |})%R = 0%RSz:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:F2R {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |} = (- F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})%RSz:(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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:{| 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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:{| 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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%RH0:cond_Zopp sy (Z.pos my) = (- cond_Zopp sx (Z.pos mx))%ZH4:ey = exszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = sym:modesx:boolmx:positivesy:boolmy:positiveszero:=match m with | mode_DN => true | _ => false end:boolH0:cond_Zopp sy (Z.pos my) = (- cond_Zopp sx (Z.pos mx))%Zszero = match m with | mode_DN => (sx || sy)%bool | _ => (sx && sy)%bool endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 ?fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical_mantissa my ey = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:canonical_mantissa my ey = true /\ (ey <=? emax - prec)%Z = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical_mantissa my ey = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 fexp {| Fnum := - cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical radix2 fexp {| Fnum := cond_Zopp (negb sx) (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:canonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp: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 = syHz:(Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})) < bpow radix2 emax)%RH1: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) = trueH3:Bsign (binary_normalize m mz ez szero) = match Rcompare (F2R {| Fnum := mz; Fexp := ez |}) 0 with | Eq => szero | Lt => true | Gt => false endHz':F2R {| Fnum := mz; Fexp := ez |} = 0%Rcanonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RB2SF (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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz: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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz: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 = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz: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 sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)sx = syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz: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 sxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)sx = syapply Sz. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueszero:=match m with | mode_DN => true | _ => false end:boolez:=Z.min ex ey:Zmz:=(cond_Zopp sx (Z.pos (fst (shl_align mx ex ez))) + cond_Zopp sy (Z.pos (fst (shl_align my ey ez))))%Z:ZHp:(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 = syHz:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (F2R {| Fnum := mz; Fexp := ez |})))%RVz:B2SF (binary_normalize m mz ez szero) = binary_overflow m (Rlt_bool (F2R {| Fnum := mz; Fexp := ez |}) 0)sx = sy
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = truesy:boolmy:positiveey:ZHy:bounded my ey = trueFx:is_finite (B754_finite sx mx ex Hx) = trueFy:is_finite (B754_finite sy my ey Hy) = trueH: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatFx:is_finite x = trueFy:is_finite y = trueH: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)
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> PropPROP (Bfma m x y z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolPROP (Bfma m x y z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolforall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolforall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolmr, er:ZE:F2R {| Fnum := mr; Fexp := er |} = resPROP (binary_normalize m mr er szero)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolmr, er:ZE: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolmr, er:ZE: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)tauto.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolmr, er:ZE: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)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatPROP (Bfma m x y z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatB2R x = 0%R \/ B2R y = 0%R -> PROP add_zeroprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatADDZERO:B2R x = 0%R \/ B2R y = 0%R -> PROP add_zeroPROP (Bfma m x y z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatB2R x = 0%R \/ B2R y = 0%R -> PROP add_zeroprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RPROP add_zeroprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%Rres = B2R zprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R zPROP add_zeroprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%Rres = B2R zdestruct Z as [E|E]; rewrite E, ?Rmult_0_l, ?Rmult_0_r, Rplus_0_l; auto.prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%R(B2R x * B2R y + B2R z)%R = B2R zprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R zPROP add_zeroprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%Rif 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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%RB2R (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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%RB2R (B754_zero szero) = 0%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%Ris_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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%Ris_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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%Ris_finite (B754_zero szero) = trueprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%RBsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%RBsign (B754_zero szero) = match Rcompare 0 0 with | Eq => Bfma_szero m x y (B754_zero sz) | Lt => true | Gt => false endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%RBsign (B754_zero szero) = Bfma_szero m x y (B754_zero sz)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rrewrite Rabs_R0; apply bpow_gt_0.prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolres:=(B2R x * B2R y + B2R (B754_zero sz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_zero sz):boolBINORM:forall mr er : BinNums.Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = 0%R(Rabs 0 < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)is_finite (B754_finite sz mz ez Bz) = trueprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite true mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite true mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite true mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite true mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite true mz ez Bz)Bsign (B754_finite true mz ez Bz) = trueprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite true mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite true mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite true mz ez Bz)(F2R {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} < 0)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite true mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite true mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite true mz ez Bz)(F2R {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} < 0)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite true mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite true mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite true mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite true mz ez Bz)(Fnum {| Fnum := cond_Zopp true (Z.pos mz); Fexp := ez |} < 0)%Zprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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 endprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite false mz ez Bz)Bsign (B754_finite false mz ez Bz) = falseprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite false mz ez Bz)(0 < F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |})%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite false mz ez Bz)(0 < F2R {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |})%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite false mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite false mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite false mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite false mz ez Bz)(0 < Fnum {| Fnum := cond_Zopp false (Z.pos mz); Fexp := ez |})%Zprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)(Rabs (B2R (B754_finite sz mz ez Bz)) < bpow radix2 emax)%Rprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)Valid_rnd (round_mode m)prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES: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:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y:binary_floatsz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R x * B2R y + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m x y (B754_finite sz mz ez Bz):boolBINORM: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_floatZ:B2R x = 0%R \/ B2R y = 0%RRES:res = B2R (B754_finite sz mz ez Bz)generic_format radix2 fexp (B2R (B754_finite sz mz ez Bz))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex, y, z:binary_floatres:=(B2R x * B2R y + B2R z)%R:RH:is_finite x = trueH0:is_finite y = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m x y z:boolBINORM: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_floatADDZERO:B2R x = 0%R \/ B2R y = 0%R -> PROP add_zeroPROP (Bfma m x y z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolz:binary_floatres:=(B2R (B754_zero sx) * B2R (B754_zero sy) + B2R z)%R:RH:is_finite (B754_zero sx) = trueH0:is_finite (B754_zero sy) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_zero sx) (B754_zero sy) z:boolBINORM: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_floatADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zeroPROP (Bfma m (B754_zero sx) (B754_zero sy) z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZBy:bounded my ey = truez:binary_floatres:=(B2R (B754_zero sx) * B2R (B754_finite sy my ey By) + B2R z)%R:RH:is_finite (B754_zero sx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_zero sx) (B754_finite sy my ey By) z:boolBINORM: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_floatADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (Bfma m (B754_zero sx) (B754_finite sy my ey By) z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolz:binary_floatres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_zero sy) + B2R z)%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_zero sy) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_zero sy) z:boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zeroPROP (Bfma m (B754_finite sx mx ex Bx) (B754_zero sy) z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truez:binary_floatres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R z)%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z:boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (Bfma m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z)apply ADDZERO; auto.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolz:binary_floatres:=(B2R (B754_zero sx) * B2R (B754_zero sy) + B2R z)%R:RH:is_finite (B754_zero sx) = trueH0:is_finite (B754_zero sy) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_zero sx) (B754_zero sy) z:boolBINORM: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_floatADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zeroPROP (Bfma m (B754_zero sx) (B754_zero sy) z)apply ADDZERO; auto.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx, sy:boolmy:positiveey:ZBy:bounded my ey = truez:binary_floatres:=(B2R (B754_zero sx) * B2R (B754_finite sy my ey By) + B2R z)%R:RH:is_finite (B754_zero sx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_zero sx) (B754_finite sy my ey By) z:boolBINORM: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_floatADDZERO:B2R (B754_zero sx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (Bfma m (B754_zero sx) (B754_finite sy my ey By) z)apply ADDZERO; auto.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolz:binary_floatres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_zero sy) + B2R z)%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_zero sy) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_zero sy) z:boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_zero sy) = 0%R -> PROP add_zeroPROP (Bfma m (B754_finite sx mx ex Bx) (B754_zero sy) z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truez:binary_floatres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R z)%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite z = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z:boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (Bfma m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) z)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolmz:positiveez:ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2PROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr er : Z, F2R {| Fnum := mr; Fexp := er |} = res -> PROP (binary_normalize m mr er szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2PROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2mr, er:ZFRES: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2mr, er:ZFRES:Fmult X Y = {| Fnum := mr; Fexp := er |}F2R {| Fnum := mr; Fexp := er |} = resprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2mr, er:ZFRES: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))%Rauto.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_zero sz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_zero sz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_zero sz):boolBINORM:forall mr0 er0 : Z, F2R {| Fnum := mr0; Fexp := er0 |} = res -> PROP (binary_normalize m mr0 er0 szero)add_zero:=B754_zero szero:binary_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2mr, er:ZFRES: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolmz:positiveez:ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroPROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolmz:positiveez:ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2PROP (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZBx:bounded mx ex = truesy:boolmy:positiveey:ZBy:bounded my ey = truesz:boolmz:positiveez:ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2PROP (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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:BinNums.ZBx:bounded mx ex = truesy:boolmy:positiveey:BinNums.ZBy:bounded my ey = truesz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2PROP (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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:BinNums.ZBx:bounded mx ex = truesy:boolmy:positiveey:BinNums.ZBy:bounded my ey = truesz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2mr, er:BinNums.ZFRES: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.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:BinNums.ZBx:bounded mx ex = truesy:boolmy:positiveey:BinNums.ZBy:bounded my ey = truesz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2mr, er:BinNums.ZFRES:Fplus (Fmult X Y) Z = {| Fnum := mr; Fexp := er |}F2R {| Fnum := mr; Fexp := er |} = resprec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:BinNums.ZBx:bounded mx ex = truesy:boolmy:positiveey:BinNums.ZBy:bounded my ey = truesz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2mr, er:BinNums.ZFRES: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))%Rauto. Qed.prec, emax:BinNums.Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:BinNums.ZBx:bounded mx ex = truesy:boolmy:positiveey:BinNums.ZBy:bounded my ey = truesz:boolmz:positiveez:BinNums.ZBz:bounded mz ez = trueres:=(B2R (B754_finite sx mx ex Bx) * B2R (B754_finite sy my ey By) + B2R (B754_finite sz mz ez Bz))%R:RH:is_finite (B754_finite sx mx ex Bx) = trueH0:is_finite (B754_finite sy my ey By) = trueH1:is_finite (B754_finite sz mz ez Bz) = truePROP:=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 -> Propszero:=Bfma_szero m (B754_finite sx mx ex Bx) (B754_finite sy my ey By) (B754_finite sz mz ez Bz):boolBINORM: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_floatADDZERO:B2R (B754_finite sx mx ex Bx) = 0%R \/ B2R (B754_finite sy my ey By) = 0%R -> PROP add_zeroX:={| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:float radix2Y:={| Fnum := cond_Zopp sy (Z.pos my); Fexp := ey |}:float radix2Z:={| Fnum := cond_Zopp sz (Z.pos mz); Fexp := ez |}:float radix2mr, er:BinNums.ZFRES: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
Division
prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Zlet 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zvalid_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zmx' = (Z.pos mx * radix2 ^ (ex - ey - e'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zmx' = (Z.pos mx * radix2 ^ (ex - ey - e'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zmatch (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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=Z.pos mx:ZZ.pos mx = (Z.pos mx * radix2 ^ 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zp:positivemx':=Z.shiftl (Z.pos mx) (Z.pos p):ZZ.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zp:positivemx':=0%Z:Z0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zp:positivemx':=Z.shiftl (Z.pos mx) (Z.pos p):ZZ.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zp:positivemx':=0%Z:Z0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Zeasy.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zp:positivemx':=0%Z:Z0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':=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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx':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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:Zinbetween_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}) 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}) 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rnow apply F2R_gt_0.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rnow apply F2R_neq_0 ; case sy.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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) rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolp:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos p~0) + ey))) (ex - ey):Zmx', q, r:ZBz: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) rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolp:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos p~0) + ey))) (ex - ey):Zmx', q, r:ZBz: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) rnow case Zeq_bool; [|case r as [|rp|rp]; case Z.compare].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolp:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos p~0) + ey))) (ex - ey):Zmx', q, r:ZBz: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 apply F2R_neq_0 ; case sy.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rnow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:Zsy:boolmy:positiveey:Ze':=Z.min (fexp (Zdigits radix2 (Z.pos mx) + ex - (Zdigits radix2 (Z.pos my) + ey))) (ex - ey):Zmx', q, r:ZBz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modex:binary_floatsy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syis_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syis_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syis_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))))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syis_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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syis_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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2: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) = trueH4: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 syis_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 syprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueforall 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)now rewrite B2SF_SF2B. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesy:boolmy:positiveey:ZHy:bounded my ey = trueZy:B2R (B754_finite sy my ey Hy) <> 0%Rsx:boolmx:positiveex:ZHx:bounded mx ex = trueH1: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) = trueH2:(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)
Square root
prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truelet 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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truevalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truevalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Zvalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z(2 * e' <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zvalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):Z(2 * e' <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZH:(e' <= Z.div2 ex)%Z(2 * e' <= ex)%Zdestruct Z.odd ; omega.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZH:(e' <= Z.div2 ex)%Z(2 * e' <= 2 * Z.div2 ex + (if Z.odd ex then 1 else 0))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zvalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=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:Zmx' = (Z.pos mx * radix2 ^ (ex - 2 * e'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=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:Zmx' = (Z.pos mx * radix2 ^ (ex - 2 * e'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=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:Zmatch (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'))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=Z.pos mx:ZZ.pos mx = (Z.pos mx * radix2 ^ 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zp:positivemx':=Z.shiftl (Z.pos mx) (Z.pos p):ZZ.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zp:positivemx':=0%Z:Z0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zp:positivemx':=Z.shiftl (Z.pos mx) (Z.pos p):ZZ.shiftl (Z.pos mx) (Z.pos p) = (Z.pos mx * radix2 ^ Z.pos p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zp:positivemx':=0%Z:Z0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Zeasy.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zp:positivemx':=0%Z:Z0%Z = (Z.pos mx * radix2 ^ Z.neg p)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':=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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx':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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zinbetween_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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:=if Zeq_bool r 0 then loc_Exact else loc_Inexact (if (r <=? mz)%Z then Lt else Gt):locationinbetween_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationinbetween_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzvalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzsqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzinbetween_float radix2 mz e' (Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) lzprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzinbetween_float radix2 mz e' (Rabs (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))) lzprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzinbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))² < (bpow radix2 emax)²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))² < (bpow radix2 emax)²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))² * (1 + eps)² < (bpow radix2 emax)²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} * (1 + eps)² < (bpow radix2 emax)²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} * (1 + eps)² < (bpow radix2 emax)²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} * ((1 + eps) * (1 + eps)) < bpow radix2 emax * bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) >= 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(bpow radix2 emax > 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= (1 + eps) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(bpow radix2 emax > 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(bpow radix2 emax > 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R((1 + eps) * (1 + eps) < 4)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(1 + eps < 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(eps < R1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(1 + - (1) <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(- (1) <= eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(- (1) < eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 2)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(4 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(bpow radix2 2 <= bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(2 <= emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 < prec)%Z -> (prec < emax)%Z -> (2 <= emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}) * (1 + eps))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(0 <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(1 + - (1) <= 1 + eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(- (1) <= eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzeps:RHeps:(Rabs eps < bpow radix2 (- prec + 1))%RHr: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))%RHeps':(Rabs eps < 1)%R(- (1) < eps)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |}))²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= bpow radix2 (emin + prec - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |}))²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |}))²)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz((bpow radix2 (emin + prec - 1))² <= bpow radix2 emin)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(emin + prec - 1 + (emin + prec - 1) <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzforall e : Z, (emin <= fexp e)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzgeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lze:Z(emin <= fexp e)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzgeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzgeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzgeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzcanonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzcanonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lzgeneric_format radix2 fexp 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rapply 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modemx:positiveex:ZHx:bounded mx ex = truee':=Z.min (fexp (Z.div2 (Zdigits radix2 (Z.pos mx) + ex + 1))) (Z.div2 ex):ZHe:(2 * e' <= ex)%Zmx', mz, r:Zlz:locationBz:inbetween_float radix2 mz e' (sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |})) lz(0 <= sqrt (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R B754_nan = round radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |}))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseround radix2 fexp (round_mode m) (sqrt (F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |})) = B2R B754_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseround 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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4: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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseforall 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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseround radix2 fexp (round_mode m) 0 = B2R B754_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseforall 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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseValid_rnd (round_mode m)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseforall 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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseforall 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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseH:(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%Rround 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_nanprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseH:(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} >= 0)%R(F2R {| Fnum := cond_Zopp true (Z.pos mx); Fexp := ex |} < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_nan B754_nan = false -> Bsign B754_nan = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_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))))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseis_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))))) = falsenow rewrite Bsign_SF2B. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modesx:boolmx:positiveex:ZHx:bounded mx ex = trueH1:valid_binary (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = trueH2: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) = trueH4:sign_SF (let '(mz, ez, lz) := SFsqrt_core_binary prec emax (Z.pos mx) ex in binary_round_aux m false mz ez lz) = falseBsign (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
A few values
Definition Bone := SF2B _ (proj1 (binary_round_correct mode_NE false 1 0)).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxB2R Bone = 1%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxB2R Bone = 1%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxB2R (SF2B (binary_round mode_NE false 1 0) (proj1 (binary_round_correct mode_NE false 1 0))) = 1%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHr:=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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHr:=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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = trueHr: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 falseSF2R radix2 (binary_round mode_NE false 1 0) = 1%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = truegeneric_format radix2 fexp (F2R {| Fnum := 1; Fexp := 0 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = trueSF2R 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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(Rabs 1 < bpow radix2 emax)%Rnow intros (Hr, Hr'); rewrite Hr.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = trueSF2R 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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(Rabs 1 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(1 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(0 < emax)%Zlia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(0 < prec)%Z -> (prec < emax)%Z -> (0 < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = truegeneric_format radix2 fexp (F2R {| Fnum := 1; Fexp := 0 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(cexp radix2 fexp (F2R {| Fnum := 1; Fexp := 0 |}) <= 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(Z.max (1 - prec) emin <= 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(Z.max (1 - prec) (3 - emax - prec) <= 0)%Zlia. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxVz:valid_binary (binary_round mode_NE false 1 0) = true(0 < prec)%Z -> (prec < emax)%Z -> (Z.max (1 - prec) (3 - emax - prec) <= 0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxis_finite Bone = truegeneralize Bone_correct; case Bone; simpl; try (intros; reflexivity); intros; exfalso; lra. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxis_finite Bone = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxBsign Bone = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxBsign Bone = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs':boolm:positivee:ZF2R {| Fnum := cond_Zopp s' (Z.pos m); Fexp := e |} = 1%R -> s' = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs':boolm:positivee:Z(IZR (Z.neg m) * bpow radix2 e)%R = 1%R -> true = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs':boolm:positivee:Z(IZR (Z.neg m) * bpow radix2 e <= 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs':boolm:positivee:Z(0 <= - (IZR (Z.neg m) * bpow radix2 e))%Runfold IZR; rewrite <-INR_IPR; generalize (INR_pos m); lra. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs':boolm:positivee:Z(0 <= - IZR (Z.neg m))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxvalid_binary (S754_finite false (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxvalid_binary (S754_finite false (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxcanonical_mantissa (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(emax - prec <=? emax - prec)%Z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxcanonical_mantissa (shift_pos (Z.to_pos prec) 1 - 1) (emax - prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxfexp (Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)) + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Zfexp (p + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Zp = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZH:p = precfexp (p + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Zp = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZZdigits radix2 (Z.pos (shift_pos (Z.to_pos prec) 1) - 1) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(1 < shift_pos (Z.to_pos prec) 1)%positiveprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZZdigits radix2 (Z.pos (shift_pos (Z.to_pos prec) 1) - 1) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZZdigits radix2 (Z.pow_pos 2 (Z.to_pos prec) - 1) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(0 <= 2 ^ prec - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%ZZdigits radix2 (Z.pow_pos 2 (Z.to_pos prec) - 1) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(0 <= 2 ^ prec - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(1 <= 2 ^ prec)%Zapply Zpower_le; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z((radix2 : Z) ^ 0 <= (radix2 : Z) ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%ZZdigits radix2 (Z.pow_pos 2 (Z.to_pos prec) - 1) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(2 ^ (prec - 1) <= Z.abs (2 ^ prec - 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(Z.abs (2 ^ prec - 1) < 2 ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(2 ^ (prec - 1) <= Z.abs (2 ^ prec - 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(2 ^ (prec - 1) <= 2 ^ prec - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(2 ^ (prec - 1) <= 2 ^ (prec - 1 + 1) - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(2 ^ (prec - 1) <= 2 ^ (prec - 1) * 2 ^ 1 - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(2 ^ (prec - 1) <= 2 ^ (prec - 1) * 2 - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(1 <= 2 ^ (prec - 1))%Zapply Zpower_le; simpl; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z((radix2 : Z) ^ 0 <= (radix2 : Z) ^ (prec - (radix2 : Z) ^ 0))%Znow rewrite Z.abs_eq; [lia|].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZP2pm1:(0 <= 2 ^ prec - 1)%Z(Z.abs (2 ^ prec - 1) < 2 ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(1 < shift_pos (Z.to_pos prec) 1)%positiveprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(1 < Z.pos (shift_pos (Z.to_pos prec) 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(1 < 2 ^ Z.pos (Z.to_pos prec))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z(1 < 2 ^ prec)%Zapply Zpower_lt; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):Z((radix2 : Z) ^ 0 < (radix2 : Z) ^ prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZH:p = precfexp (p + (emax - prec)) = (emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZH:p = prec(emin <= prec + (emax - prec) - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZH:p = prec(3 - emax - prec <= prec + (emax - prec) - prec)%Zlia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxp:=Z.pos (digits2_pos (shift_pos (Z.to_pos prec) 1 - 1)):ZH:p = prec(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec <= prec + (emax - prec) - prec)%Zapply Zle_bool_true; unfold emin; unfold Prec_gt_0 in prec_gt_0_; lia. Qed. Definition Bmax_float := SF2B _ Bmax_float_proof.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(emax - prec <=? emax - prec)%Z = true
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zforall 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))now rewrite Rabs_R0, Rlt_bool_true; [|now apply bpow_gt_0].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolif Rlt_bool (Rabs 0) (bpow radix2 emax) then 0%R = 0%R /\ true = true /\ s = s else S754_zero s = binary_overflow m sprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zforall 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))now rewrite Rabs_R0, Rlt_bool_true; [|now apply bpow_gt_0].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolif Rlt_bool (Rabs 0) (bpow radix2 emax) then 0%R = 0%R /\ false = false /\ s = s else S754_infinity s = binary_overflow m sprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zif 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)now rewrite Rabs_R0, Rlt_bool_true; [|now apply bpow_gt_0].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zif Rlt_bool (Rabs 0) (bpow radix2 emax) then 0%R = 0%R /\ false = false /\ false = false else S754_nan = binary_overflow m falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zforall (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueif 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%RB2SF (Bldexp m (B754_finite s mf ef Hmef) e) = binary_overflow m (Bsign (B754_finite s mf ef Hmef))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RSF2R 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RSF2R 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)) = sprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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 sSF2R 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)) = sprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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)) = sSF2R 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)) = sprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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)%Rnow destruct Hr as (Hr, (Hfr, Hsr)); rewrite Hr, Hfr, Hsr.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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)) = sSF2R 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)) = snow revert Hover; unfold B2R, F2R; simpl; rewrite Rmult_assoc, bpow_plus.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)) < bpow radix2 emax)%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%RB2SF (Bldexp m (B754_finite s mf ef Hmef) e) = binary_overflow m (Bsign (B754_finite s mf ef Hmef))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%Rbinary_round m s mf (ef + e) = binary_overflow m sprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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 sbinary_round m s mf (ef + e) = binary_overflow m snow revert Hover; unfold B2R, F2R; simpl; rewrite Rmult_assoc, bpow_plus. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxm:modef:binary_floate:Zs:boolmf:positiveef:ZHmef:bounded mf ef = trueHover:(bpow radix2 emax <= Rabs (round radix2 fexp (round_mode m) (B2R (B754_finite s mf ef Hmef) * bpow radix2 e)))%RHf:valid_binary (binary_round m s mf (ef + e)) = trueHr: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floate:ZBldexp mode_NE (Bopp x) e = Bopp (Bldexp mode_NE x e)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floate:ZBldexp mode_NE (Bopp x) e = Bopp (Bldexp mode_NE x e)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:ZBldexp mode_NE (Bopp (B754_finite s m e' B)) e = Bopp (Bldexp mode_NE (B754_finite s m e' B) e)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:ZB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:ZB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:ZSFopp (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:ZB2SF (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zbinary_round mode_NE (negb s) m (e' + e) = SFopp (binary_round mode_NE s m (e' + e))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zshl:=shl_align_fexp m (e' + e):(positive * Z)%typemz:positiveez:Zbinary_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zshl:=shl_align_fexp m (e' + e):(positive * Z)%typemz:positiveez: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zshl:=shl_align_fexp m (e' + e):(positive * Z)%typemz:positiveez:Zshr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%typemrs:shr_recorde'':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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zshl:=shl_align_fexp m (e' + e):(positive * Z)%typemz:positiveez:Zshr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%typemrs:shr_recorde'':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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zshl:=shl_align_fexp m (e' + e):(positive * Z)%typemz:positiveez:Zshr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%typemrs:shr_recorde'':Zshr':=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)%typemrs':shr_recorde''':Zmatch 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 endnow case (shr_m mrs') as [|p|p]; [|case Z.leb|].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:Zshl:=shl_align_fexp m (e' + e):(positive * Z)%typemz:positiveez:Zshr:=shr_fexp (Z.pos mz) ez loc_Exact:(shr_record * Z)%typemrs:shr_recorde'':Zshr':=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)%typemrs':shr_recorde''':Zmatch 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 endnow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxs:boolm:positivee':ZB:bounded m e' = truee:ZSFopp (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall (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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truelet 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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rlet 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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floatlet 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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):Zvalid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):Z(Z.pos (digits2_pos mx) <= prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Zvalid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):Z(Z.pos (digits2_pos mx) <= prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):Zcanonical_mantissa mx ex = true /\ (ex <=? emax - prec)%Z = true -> (Z.pos (digits2_pos mx) <= prec)%Zcase (Z.max_spec (Z.pos (digits2_pos mx) + ex - prec) emin); lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:Zx:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZZ.max (Z.pos (digits2_pos mx) + ex - prec) emin = ex /\ (ex <=? emax - prec)%Z = true -> (Z.pos (digits2_pos mx) <= prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Zvalid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z(digits2_pos mx <= Z.to_pos prec)%positiveprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positivevalid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z(digits2_pos mx <= Z.to_pos prec)%positivenow rewrite Z2Pos.id; [|now apply prec_gt_0_].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%Z(Z.pos (digits2_pos mx) <= Z.pos (Z.to_pos prec))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positivevalid_binary z = true /\ ((2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 z) < 1)%R) /\ x = (SF2R radix2 z * bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positivevalid_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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(- prec < 3 - emax - prec)%Zvalid_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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%Zvalid_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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(- prec < 3 - emax - prec)%Zvalid_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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(- 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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(- prec < 3 - emax - prec)%Z(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z))) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(- prec < 3 - emax - prec)%Zx = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%Rnow rewrite Rmult_1_r.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(- prec < 3 - emax - prec)%Zx = (SF2R radix2 (fst (S754_finite sx mx ex, 0%Z)) * bpow radix2 (snd (S754_finite sx mx ex, 0%Z)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%Zvalid_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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positivebounded 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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positivebounded (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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positivebounded 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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positivedigits2_pos mx = Z.to_pos precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':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))%Rnow apply Pos.le_antisym.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positivedigits2_pos mx = Z.to_pos precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precZ.pos (digits2_pos mx) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':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))%Rnow rewrite Dmx', Z2Pos.id; [|apply prec_gt_0_].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precZ.pos (digits2_pos mx) = precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precx = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(canonical_mantissa mx (- prec) && (- prec <=? emax - prec)%Z)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = preccanonical_mantissa mx (- prec) = true /\ (- prec <=? emax - prec)%Z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(- prec <=? emax - prec)%Z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = preccanonical_mantissa mx (- prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(- prec <=? emax - prec)%Z = trueclear -Hp ; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(- prec <= emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = preccanonical_mantissa mx (- prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precZ.max (Z.pos (digits2_pos mx) + - prec - prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precZ.max (prec + - prec - prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(prec + - prec - prec)%Z = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(emin <= prec + - prec - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(emin <= prec + - prec - prec)%Zunfold emin ; lia.prec, emax:ZHp:(3 - emax - prec <= - prec)%Z(emin <= prec + - prec - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(2 < emax)%Z -> (/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec)) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 <= Rabs (IZR (cond_Zopp sx (Z.pos mx))) * bpow radix2 (- prec) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 <= IZR (Z.pos mx) * bpow radix2 (- prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 <= IZR (Z.pos mx) * bpow radix2 (- prec))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 * bpow radix2 prec <= IZR (Z.pos mx) * bpow radix2 (- prec) * bpow radix2 prec)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 * bpow radix2 prec <= IZR (Z.pos mx) * 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(/ 2 * bpow radix2 prec <= IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(bpow radix2 (-1 + prec) <= IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1) <= IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precb:=bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1):R(b <= IZR (Z.pos mx))%Rapply bpow_mag_le; apply IZR_neq; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precb:=bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1):R(b <= Rabs (IZR (Z.pos mx)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(IZR (Z.pos mx) * bpow radix2 (- prec) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(IZR (Z.pos mx) * bpow radix2 (- prec) * bpow radix2 prec < 1 * bpow radix2 prec)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(IZR (Z.pos mx) * 1 < 1 * bpow radix2 prec)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(IZR (Z.pos mx) < bpow radix2 prec)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = prec(IZR (Z.pos mx) < bpow radix2 (mag radix2 (IZR (Z.pos mx))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precb:=bpow radix2 (mag radix2 (IZR (Z.pos mx))):R(IZR (Z.pos mx) < b)%Rapply bpow_mag_gt; apply IZR_neq; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precb:=bpow radix2 (mag radix2 (IZR (Z.pos mx))):R(Rabs (IZR (Z.pos mx)) < b)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precx = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec) * bpow radix2 (ex + prec))%Rnow replace (_ + _)%Z with ex by ring.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(Z.to_pos prec <= digits2_pos mx)%positiveDmx':digits2_pos mx = Z.to_pos precDmx'':Z.pos (digits2_pos mx) = precx = (IZR (cond_Zopp sx (Z.pos mx)) * bpow radix2 (- prec + (ex + prec)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positivebounded (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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positive(Z.pos (digits2_pos mx) < prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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))))%Rnow rewrite <-(Z2Pos.id prec); [|now apply prec_gt_0_].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positive(Z.pos (digits2_pos mx) < prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zcanonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = true /\ (- prec <=? emax - prec)%Z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Z(- prec <=? emax - prec)%Z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zcanonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Z(- prec <=? emax - prec)%Z = trueclear -Hp ; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Z(- prec <= emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zcanonical_mantissa (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx) (- prec) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%ZZ.max (Z.pos (digits2_pos (shift_pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) mx)) + - prec - prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%ZZ.max (Zdigits radix2 (2 ^ Z.pos (Z.to_pos (prec - Z.pos (digits2_pos mx))) * Z.pos mx) + - prec - prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%ZZ.max (Zdigits radix2 (2 ^ (prec - Z.pos (digits2_pos mx)) * Z.pos mx) + - prec - prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%ZZ.max (Zdigits radix2 (Z.pos mx * (radix2 : Z) ^ (prec - Z.pos (digits2_pos mx))) + - prec - prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%ZZ.max (Zdigits radix2 (Z.pos mx) + (prec - Z.pos (digits2_pos mx)) + - prec - prec) emin = (- prec)%Znow apply Z.max_l.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%ZZ.max (- prec) emin = (- prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):Z(2 < emax)%Z -> (/ 2 <= bpow radix2 (- prec + (prec - d)) * IZR (Z.pos mx) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(/ 2 <= bpow radix2 (- d) * IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 (- d) * IZR (Z.pos mx) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(/ 2 <= bpow radix2 (- d) * IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 d * / 2 <= bpow radix2 d * (bpow radix2 (- d) * IZR (Z.pos mx)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 d * / 2 <= bpow radix2 0 * IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 d * / 2 <= IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 (d + -1) <= IZR (Z.pos mx))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 (d + -1) <= Rabs (IZR (Z.pos mx)))%Rapply bpow_mag_le; apply IZR_neq; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 (mag radix2 (IZR (Z.pos mx)) + -1) <= Rabs (IZR (Z.pos mx)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 (- d) * IZR (Z.pos mx) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 d * (bpow radix2 (- d) * IZR (Z.pos mx)) < bpow radix2 d * 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(bpow radix2 0 * IZR (Z.pos mx) < bpow radix2 d * 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(IZR (Z.pos mx) < bpow radix2 d)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(Rabs (IZR (Z.pos mx)) < bpow radix2 d)%Rapply bpow_mag_gt; apply IZR_neq; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zd:=Z.pos (digits2_pos mx):ZH:(2 < emax)%Z(Rabs (IZR (Z.pos mx)) < bpow radix2 (mag radix2 (IZR (Z.pos mx))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (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))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (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)))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (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)))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (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)))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (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)))))%Rnow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZBx:bounded mx ex = truex:=F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}:Rz:=fst (Ffrexp_core_binary sx mx ex):spec_floate:=snd (Ffrexp_core_binary sx mx ex):ZDmx_le_prec:(Z.pos (digits2_pos mx) <= prec)%ZDmx_le_prec':(digits2_pos mx <= Z.to_pos prec)%positiveHp:(3 - emax - prec <= - prec)%ZDmx:(digits2_pos mx < Z.to_pos prec)%positiveDmx':(Z.pos (digits2_pos mx) < prec)%Zx = (bpow radix2 (- prec + (ex + prec - (prec - Z.pos (digits2_pos mx))) + (prec - Z.pos (digits2_pos mx))) * IZR (cond_Zopp sx (Z.pos mx)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = truelet (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RF2R {| 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RF2R {| 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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(2 < emax)%Z -> (/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%Z(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%Zsnd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%Zsnd (Ffrexp_core_binary s m e) = mag radix2 (F2R {| Fnum := cond_Zopp s (Z.pos m); Fexp := e |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%Zsnd (Ffrexp_core_binary s m e) = (mag radix2 (SF2R radix2 (fst (Ffrexp_core_binary s m e))) + snd (Ffrexp_core_binary s m e))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%ZSF2R radix2 (fst (Ffrexp_core_binary s m e)) <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%Zsnd (Ffrexp_core_binary s m e) = (mag radix2 (SF2R radix2 (fst (Ffrexp_core_binary s m e))) + snd (Ffrexp_core_binary s m e))%Znow ring_simplify; symmetry; apply mag_unique.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(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)))%Zintro H; destruct Hb as (Hb, _); revert Hb; rewrite H, Rabs_R0; lra. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxf:binary_floats:boolm:positivee:ZHf:bounded m e = trueHb:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary s m e))) < 1)%RHeq: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)))%RHp:(2 < emax)%ZSF2R radix2 (fst (Ffrexp_core_binary s m e)) <> 0%R
Ulp
prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxbounded 1 emin = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxbounded 1 emin = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(Zeq_bool (fexp (Z.pos (digits2_pos 1) + emin)) emin && (emin <=? emax - prec)%Z)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(true && (emin <=? emax - prec)%Z)%bool = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxfexp (Z.pos (digits2_pos 1) + emin) = eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(emin <= emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxfexp (Z.pos (digits2_pos 1) + emin) = eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(3 - emax - prec <= emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxfexp (Z.pos (digits2_pos 1) + emin) = eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec <= emax - prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxfexp (Z.pos (digits2_pos 1) + emin) = eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxfexp (Z.pos (digits2_pos 1) + emin) = eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(Z.pos (digits2_pos 1) + emin - prec <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(1 + emin - prec <= emin)%Zlia. 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(0 < prec)%Z -> (1 + emin - prec <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite x = true -> B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall x : binary_float, is_finite x = true -> B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolFx:is_finite (B754_zero sx) = trueF2R {| Fnum := 1; Fexp := emin |} = ulp radix2 fexp 0 /\ true = true /\ false = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueB2R (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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolFx:is_finite (B754_zero sx) = trueF2R {| Fnum := 1; Fexp := emin |} = ulp radix2 fexp 0 /\ true = true /\ false = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolFx:is_finite (B754_zero sx) = trueF2R {| Fnum := 1; Fexp := emin |} = ulp radix2 fexp 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolFx:is_finite (B754_zero sx) = trueF2R {| Fnum := 1; Fexp := emin |} = ulp radix2 (FLT_exp emin prec) 0apply F2R_bpow.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolFx:is_finite (B754_zero sx) = trueF2R {| Fnum := 1; Fexp := emin |} = bpow radix2 eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueB2R (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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH2: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 falseB2R (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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueforall 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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueforall 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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueforall 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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueforall 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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truebpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueforall 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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(Rabs (bpow radix2 ex) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truebpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(Rabs (bpow radix2 ex) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truebpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseis_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseBsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(Rabs (bpow radix2 ex) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truebpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseSF2R radix2 (binary_round mode_ZR false 1 ex) = ulp radix2 fexp (F2R {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseSF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falsecond_Zopp sx (Z.pos mx) <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falsecanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falsecond_Zopp sx (Z.pos mx) <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falsecanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}now apply canonical_canonical_mantissa.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falsecanonical radix2 fexp {| Fnum := cond_Zopp sx (Z.pos mx); Fexp := ex |}now rewrite is_finite_SF2B.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseis_finite (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = truenow rewrite Bsign_SF2B.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueH2:SF2R radix2 (binary_round mode_ZR false 1 ex) = bpow radix2 exH3:is_finite_SF (binary_round mode_ZR false 1 ex) = trueH4:sign_SF (binary_round mode_ZR false 1 ex) = falseBsign (SF2B (binary_round mode_ZR false 1 ex) (proj1 (conj H1 (conj H2 (conj H3 H4))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(Rabs (bpow radix2 ex) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(bpow radix2 ex < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(ex < emax)%Zclear ; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(0 < prec)%Z -> (ex <= emax - prec)%Z -> (ex < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truebpow radix2 ex = round radix2 fexp Ztrunc (F2R {| Fnum := 1; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truebpow radix2 ex = round radix2 fexp Ztrunc (bpow radix2 ex)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = trueValid_rnd Ztruncprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truegeneric_format radix2 fexp (bpow radix2 ex)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truegeneric_format radix2 fexp (bpow radix2 ex)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = truePrec_gt_0 precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(emin <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(emin <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(emin <= cexp radix2 fexp (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}))%Znow right. Qed. Definition Bulp' x := Bldexp mode_NE Bone (fexp (snd (Bfrexp x))).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueH1:valid_binary (binary_round mode_ZR false 1 ex) = trueH5:canonical_mantissa mx ex = trueH6:(ex <=? emax - prec)%Z = true(emin <= mag radix2 (F2R {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}) - prec)%Z \/ (emin <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bulp' x = Bulp xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bulp' x = Bulp xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueBulp' x = Bulp xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueB2R (Bulp' x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp' x) = true /\ Bsign (Bulp' x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueH1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)H2:is_finite (Bulp' x) = trueH3:Bsign (Bulp' x) = falseBulp' x = Bulp xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueB2R (Bulp' x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp' x) = true /\ Bsign (Bulp' x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_infinity sx) = trueB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%ZFx:is_finite B754_nan = trueB2R (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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueemin = fexp (snd (Bfrexp (B754_zero sx)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueHr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminHf:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneHs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonebpow radix2 emin = ulp radix2 fexp (B2R (B754_zero sx)) /\ is_finite Bone = true /\ Bsign Bone = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueHr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminHf:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneHs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonebpow radix2 emin = ulp radix2 fexp (B2R (B754_zero sx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueHr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminHf:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneHs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonebpow radix2 emin = match negligible_exp fexp with | Some n => bpow radix2 (fexp n) | None => 0%R endprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueHr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminHf:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneHs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonen:ZHn:negligible_exp (FLT_exp emin prec) = Some nHn':(n <= emin)%Zbpow radix2 emin = match negligible_exp fexp with | Some n0 => bpow radix2 (fexp n0) | None => 0%R endnow unfold FLT_exp; rewrite Z.max_r; [|unfold Prec_gt_0 in prec_gt_0_; lia].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueHr:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminHf:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneHs:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonen:ZHn:negligible_exp (FLT_exp emin prec) = Some nHn':(n <= emin)%Zbpow radix2 emin = bpow radix2 (FLT_exp emin prec n)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Runfold emin; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(emin < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueemin = fexp (snd (Bfrexp (B754_zero sx)))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueemin = fexp (-2 * emax - prec)unfold emin; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(-2 * emax - prec - prec <= emin)%Zdiscriminate.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_infinity sx) = trueB2R (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))))) = falsediscriminate.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%ZFx:is_finite B754_nan = trueB2R (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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = trueB2R (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))))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatB2R (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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatB2R (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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatB2R f <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatB2R (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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZB2R (Bldexp mode_NE Bone e') = bpow radix2 e' /\ is_finite (Bldexp mode_NE Bone e') = true /\ Bsign (Bldexp mode_NE Bone e') = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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') = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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') = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Zgeneric_format radix2 fexp (bpow radix2 e')prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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') = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZB2R (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') = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZB2R (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') = falsenow split; [|split; [apply is_finite_Bone|apply Bsign_Bone]].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZHr:B2R (Bldexp mode_NE Bone e') = bpow radix2 e'Hf:is_finite (Bldexp mode_NE Bone e') = is_finite BoneHs:Bsign (Bldexp mode_NE Bone e') = Bsign Bonebpow radix2 e' = bpow radix2 e' /\ is_finite Bone = true /\ Bsign Bone = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Z(bpow radix2 e' < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZHm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z(mag radix2 (B2R f) - prec < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZHm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z(mag radix2 (B2R f) < prec + emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZHm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%Z(mag radix2 (B2R f) <= emax)%Znow unfold f, B2R; apply F2R_neq_0; case sx.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):ZHm:Z.max (mag radix2 (B2R f) - prec) emin = (mag radix2 (B2R f) - prec)%ZB2R f <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Zgeneric_format radix2 fexp (bpow radix2 e')prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Z(e' + 1 - prec <= e')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Z(emin <= e')%Zunfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Z(e' + 1 - prec <= e')%Zapply Z.le_max_r.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatHfr1: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)))%RHfr2:(/ 2 <= Rabs (B2R (SF2B (fst (Ffrexp_core_binary sx mx ex)) (proj1 (Bfrexp_correct_aux sx mx ex Hx)))) < 1)%RHfr3:snd (Ffrexp_core_binary sx mx ex) = mag radix2 (B2R f)e':=fexp (mag radix2 (B2R f)):Z(emin <= e')%Znow unfold f, B2R; apply F2R_neq_0; case sx.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Hx) = truef:=B754_finite sx mx ex Hx:binary_floatB2R f <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueH1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)H2:is_finite (Bulp' x) = trueH3:Bsign (Bulp' x) = falseBulp' x = Bulp xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueH1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)H2:is_finite (Bulp' x) = trueH3:Bsign (Bulp' x) = falseH4:B2R (Bulp x) = ulp radix2 fexp (B2R x)H5:is_finite (Bulp x) = trueH6:Bsign (Bulp x) = falseBulp' x = Bulp xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueH1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)H2:is_finite (Bulp' x) = trueH3:Bsign (Bulp' x) = falseH4:B2R (Bulp x) = ulp radix2 fexp (B2R x)H5:is_finite (Bulp x) = trueH6:Bsign (Bulp x) = falseB2R (Bulp' x) = B2R (Bulp x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueH1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)H2:is_finite (Bulp' x) = trueH3:Bsign (Bulp' x) = falseH4:B2R (Bulp x) = ulp radix2 fexp (B2R x)H5:is_finite (Bulp x) = trueH6:Bsign (Bulp x) = falseBsign (Bulp' x) = Bsign (Bulp x)now rewrite H3. Qed.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueH1:B2R (Bulp' x) = ulp radix2 fexp (B2R x)H2:is_finite (Bulp' x) = trueH3:Bsign (Bulp' x) = falseH4:B2R (Bulp x) = ulp radix2 fexp (B2R x)H5:is_finite (Bulp x) = trueH6:Bsign (Bulp x) = falseBsign (Bulp' x) = Bsign (Bulp x)
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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolF2R {| Fnum := 1; Fexp := emin |} = bpow radix2 emin /\ true = true /\ false = (sx && false)%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(bpow radix2 emin < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolfalse = (sx && false)%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolF2R {| Fnum := 1; Fexp := emin |} = bpow radix2 eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(bpow radix2 emin < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:boolF2R {| Fnum := 1; Fexp := emin |} = bpow radix2 eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(bpow radix2 emin < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(bpow radix2 emin < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(emin < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(3 - emax - prec < emax)%Zlia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxsx:bool(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueB2R (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))%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}) <= - 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(0 <= pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueValid_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truegeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = true(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truegeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truegeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})now apply (canonical_canonical_mantissa false).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truecanonical radix2 fexp {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueB2R (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))%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueB2R (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)))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueSF2R 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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatF2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatF2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatF2R {| 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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatF2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = F2R {| Fnum := Z.pos mx * radix2 ^ (ex - (ex - 1)) - 1; Fexp := ex - 1 |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatZ.pos (mx~0 - 1) = (Z.pos mx * radix2 ^ (ex - (ex - 1)) - 1)%Znow rewrite Zmult_comm.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatZ.pos (mx~0 - 1) = (Z.pos mx * radix2 ^ 1 - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rvalid_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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueSF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%R /\ is_finite_SF z = true /\ sign_SF z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueSF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueis_finite_SF z = true /\ sign_SF z = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueSF2R radix2 z = (- pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueround 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueValid_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = truegeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = truegeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = truegeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 < F2R {| Fnum := 1; Fexp := ex - 1 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(F2R {| Fnum := 1; Fexp := ex - 1 |} <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(bpow radix2 (ex - 1) <= ulp radix2 fexp (pred radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = truegeneric_format radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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 |})))%Rapply (generic_format_B2R (B754_finite false mx ex Bx)).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = truegeneric_format radix2 (FLT_exp emin prec) (F2R {| Fnum := Z.pos mx; Fexp := ex |})now apply F2R_ge_0.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = true(0 <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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 |})))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%RZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rcanonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%RZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rcanonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%RZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rcanonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%RZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rcanonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%RZ.pos mx <> 0%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rcanonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}now apply (canonical_canonical_mantissa false).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RH1:SF2R radix2 z = (- round radix2 fexp Zfloor (F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |}))%RH2:is_finite_SF z = trueH3:sign_SF z = trueHu1: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)%Rcanonical radix2 (FLT_exp emin prec) {| Fnum := Z.pos mx; Fexp := ex |}prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RValid_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%RValid_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rgeneric_format radix2 fexp 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH:F2R {| Fnum := Z.pos (mx~0 - 1); Fexp := ex - 1 |} = (F2R {| Fnum := Z.pos mx; Fexp := ex |} - F2R {| Fnum := 1; Fexp := ex - 1 |})%Rgeneric_format radix2 fexp 0prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rnow apply F2R_ge_0.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = truez:=binary_round mode_ZR true (mx~0 - 1) (ex - 1):spec_floatH: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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical_mantissa mx ex = trueif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 |})%Rnow rewrite Fplus_same_exp.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Valid_rnd Zceilprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Hs:(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 emax)%Rvalid_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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%Rforall 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%Rforall 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%RH:valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP falseB2SF (SF2B (binary_round mode_UP false (mx + 1) ex) (proj1 H)) = S754_infinity falsenow rewrite (proj2 H).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Hs:(bpow radix2 emax <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%RH:valid_binary (binary_round mode_UP false (mx + 1) ex) = true /\ binary_round mode_UP false (mx + 1) ex = binary_overflow mode_UP falsebinary_round mode_UP false (mx + 1) ex = S754_infinity falseapply valid_rnd_UP.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}Valid_rnd Zceilprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= Rabs (F2R {| Fnum := Z.pos mx; Fexp := ex |}) < bpow radix2 e)%Rgeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%Rgeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:F2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%R -> (bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RF2R {| Fnum := Z.pos mx; Fexp := ex |} <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%Rgeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%Rgeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%Rgeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%RZ.pos (mx + 1) <> 0%Z -> (cexp radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(cexp radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |}) <= ex)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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 |}))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%RMonotone_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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 |}))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(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 |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(Z.pos mx <= Z.pos (mx + 1))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%Rexact H.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:(F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} < bpow radix2 e)%R(F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} < bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos mx + 1; Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (bpow radix2 e)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 ePrec_gt_0 precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(emin <= e)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(emin <= e)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(bpow radix2 emin <= bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(bpow radix2 emin < bpow radix2 e)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(bpow radix2 emin <= F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 eforall e0 : Z, (emin <= fexp e0)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 ee':Z(emin <= fexp e')%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 e(0 < F2R {| Fnum := Z.pos mx; Fexp := ex |})%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 egeneric_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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxmx:positiveex:ZBx:bounded mx ex = trueCx:canonical radix2 fexp {| Fnum := cond_Zopp false (Z.pos mx); Fexp := ex |}e:ZHe:(bpow radix2 (e - 1) <= F2R {| Fnum := Z.pos mx; Fexp := ex |} < bpow radix2 e)%RH:F2R {| Fnum := Z.pos (mx + 1); Fexp := ex |} = bpow radix2 egeneric_format radix2 fexp (F2R {| Fnum := Z.pos mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxforall 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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueif 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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueis_finite (Bopp x) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueif 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 truenow rewrite is_finite_Bopp.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueis_finite (Bopp x) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueif 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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueif 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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueif 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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox: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 trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueB2R (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))%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueB2SF (Bsucc (Bopp x)) = S754_infinity false -> B2SF (Bpred x) = S754_infinity trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueB2R (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))%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolB2R (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))%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS: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))%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolis_finite (Bsucc (Bopp x)) = true /\ Bsign (Bopp (Bsucc (Bopp x))) = negb (negb (Bsign x) && is_finite_strict x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolBsign (Bopp (Bsucc (Bopp x))) = negb (negb (Bsign x) && is_finite_strict x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolnegb (Bsign (Bopp x) && is_finite_strict (Bopp x)) = negb (Bsign (Bopp x) && is_finite_strict x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolis_nan x = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolis_nan (Bsucc (Bopp x)) = falsenow rewrite is_finite_strict_Bopp.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolnegb (Bsign (Bopp x) && is_finite_strict (Bopp x)) = negb (Bsign (Bopp x) && is_finite_strict x)now revert Fx; case x.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolis_nan x = falsenow revert HF; case (Bsucc _).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueHR:B2R (Bsucc (Bopp x)) = succ radix2 fexp (B2R (Bopp x))HF:is_finite (Bsucc (Bopp x)) = trueHS:Bsign (Bsucc (Bopp x)) = (Bsign (Bopp x) && is_finite_strict (Bopp x))%boolis_nan (Bsucc (Bopp x)) = falsenow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxx:binary_floatFx:is_finite x = trueFox:is_finite (Bopp x) = trueB2SF (Bsucc (Bopp x)) = S754_infinity false -> B2SF (Bpred x) = S754_infinity trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(2 < emax)%Z -> forall x : binary_float, (0 < B2R x)%R -> Bpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(2 < emax)%Z -> forall x : binary_float, (0 < B2R x)%R -> Bpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RBpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RB2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x) /\ is_finite (Bpred_pos' x) = true /\ Bsign (Bpred_pos' x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseBpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RB2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x) /\ is_finite (Bpred_pos' x) = true /\ Bsign (Bpred_pos' x) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Bx))%RHfrexpx: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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Bx))%RHfrexpx: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Bx))%RHfrexpx: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 = falseB2R (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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Bx))%RHfrexpx: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(0 < cond_Zopp sx (Z.pos mx))%ZHfrexpx: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 = falsenow case sx.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueHfrexpx: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Bx))%RHfrexpx: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 = falseB2R (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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueHfrexpx: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 = falseB2R (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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx: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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx: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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx: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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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))) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatB2R (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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RB2R (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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:Rxr <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RB2R (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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:Rxr <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:R(IZR (Z.pos mx) * bpow radix2 ex)%R <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RH:(IZR (Z.pos mx) * bpow radix2 ex)%R = (0 * bpow radix2 ex)%RFalseapply eq_IZR in H; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RH:IZR (Z.pos mx) = 0%RFalseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RB2R (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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp x') = true /\ Bsign (Bulp x') = falseB2R (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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseB2R (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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Zunfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Zapply Z.le_max_r.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Rexact Nzxr.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Rchange xr with (B2R x'); apply abs_B2R_lt_emax.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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)%Rapply bpow_le; unfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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')) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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') = truenow rewrite (proj1 (proj2 Hldexp)), is_finite_Bone.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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))) = truenow rewrite (proj1 (proj2 Hulp)).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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') = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = trueB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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')%Rnow apply Rmult_le_pos; [apply IZR_le|apply bpow_ge_0].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= B2R d)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= B2R d)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= B2R (Bulp' x'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))))%Rnow rewrite round_generic; [apply bpow_ge_0|apply valid_rnd_N|].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))))%Rrewrite (proj1 Hulp); apply ulp_ge_0.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%R(0 <= B2R (Bulp' x'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(B2R d <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(B2R d <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(B2R (Bulp' x') <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(B2R (Bldexp mode_NE Bone (fexp (mag radix2 xr - 1))) <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(round radix2 fexp (round_mode mode_NE) (bpow radix2 (fexp (mag radix2 xr - 1))) <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (fexp (mag radix2 xr - 1)) <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (fexp (mag radix2 xr - 1)) <= bpow radix2 (mag radix2 xr - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (mag radix2 xr - 1) <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (fexp (mag radix2 xr - 1)) <= bpow radix2 (mag radix2 xr - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(mag radix2 xr - 1 - prec <= mag radix2 xr - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(emin <= mag radix2 xr - 1)%Zunfold Prec_gt_0 in prec_gt_0_; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(mag radix2 xr - 1 - prec <= mag radix2 xr - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(emin <= mag radix2 xr - 1)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(emin + 1 <= mag radix2 xr)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (emin + 1 - 1) <= Rabs xr)%Rnow change xr with (B2R x'); apply abs_B2R_ge_emin.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 emin <= Rabs xr)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (mag radix2 xr - 1) <= B2R x')%Rnow change xr with (B2R x'); apply bpow_mag_le.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(bpow radix2 (mag radix2 xr - 1) <= Rabs (B2R x'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(B2R (Bulp' x') <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(0 < B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%Rgeneric_format radix2 fexp (B2R x')assert (B2R x' <> 0%R); [exact Nzxr|lra].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%R(0 < B2R x')%Rapply generic_format_B2R.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%Rgeneric_format radix2 fexp (B2R x')prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RRlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RRlt_bool (Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d))) (bpow radix2 emax) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(Rabs (round radix2 fexp (round_mode mode_NE) (B2R x' - B2R d)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(round radix2 fexp ZnearestE (Rabs (B2R x' - B2R d)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(round radix2 fexp ZnearestE (B2R x' - B2R d) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(round radix2 fexp ZnearestE (B2R x' - B2R d) <= B2R x')%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(B2R x' < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(round radix2 fexp ZnearestE (B2R x' - B2R d) <= B2R x')%Rapply generic_format_B2R.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%Rgeneric_format radix2 fexp (B2R x')apply (Rle_lt_trans _ _ _ (Rle_abs _)), abs_B2R_lt_emax.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%R(B2R x' < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RB2R (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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%Rround 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) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%Rround radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) = pred_pos radix2 fexp (B2R x') /\ true = true /\ Bsign (Bminus mode_NE x' d) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%Rround 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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%Rround radix2 fexp (round_mode mode_NE) (B2R x' - B2R d) = pred_pos radix2 fexp (B2R x')prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%Rround 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)generic_format radix2 fexp (pred_pos radix2 fexp (B2R x'))change xr with (B2R x') in Nzxr; lra.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)(0 < B2R x')%Rnow unfold pred_pos; rewrite Req_bool_true.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)IZR (Z.pos mx) = bpow radix2 (prec - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)IZR (Z.pos mx) = bpow radix2 (prec - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)IZR (2 * Z.pos mx) = (2 * bpow radix2 (prec - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)IZR (Z.pos (shift_pos (Z.to_pos prec) 1)) = (2 * bpow radix2 (prec - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)IZR (Z.pow_pos 2 (Z.to_pos prec)) = (2 * bpow radix2 (prec - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)bpow radix2 (Z.pos (Z.to_pos prec)) = (2 * bpow radix2 (prec - 1))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)bpow radix2 prec = (2 * bpow radix2 (prec - 1))%Rf_equal; ring.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)bpow radix2 prec = bpow radix2 (1 + (prec - 1))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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))%Rright; f_equal; ring.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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))%Rapply bpow_lt; lia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive = shift_pos (Z.to_pos prec) 1Hpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)ulp radix2 fexp (B2R x') = bpow radix2 (fexp (mag radix2 (B2R x') - 1))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)ulp radix2 fexp (B2R x') = bpow radix2 (fexp (mag radix2 (B2R x') - 1))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)fexp (mag radix2 (B2R x')) = fexp (mag radix2 (B2R x') - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)(mag radix2 (B2R x') <= emin + prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)H:(mag radix2 (B2R x') <= emin + prec)%Zfexp (mag radix2 (B2R x')) = fexp (mag radix2 (B2R x') - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)(mag radix2 (B2R x') <= emin + prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)canonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hcm:canonical_mantissa mx ex = true(mag radix2 (B2R x') <= emin + prec)%Znow generalize Bx; unfold bounded; rewrite Bool.andb_true_iff.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)canonical_mantissa mx ex = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hcm:canonical_mantissa mx ex = true(mag radix2 (B2R x') <= emin + prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hex:ex = fexp (mag radix2 (B2R x'))(mag radix2 (B2R x') <= emin + prec)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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) 1prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hex:ex = fexp (mag radix2 (B2R x'))H':(emin + prec < mag radix2 (B2R x'))%ZZ.pos mx~0 = Z.pow_pos 2 (Z.to_pos prec)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hex:ex = fexp (mag radix2 (B2R x'))H':(emin + prec < mag radix2 (B2R x'))%ZIZR (Z.pos mx~0) = bpow radix2 (Z.pos (Z.to_pos prec))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hex:ex = fexp (mag radix2 (B2R x'))H':(emin + prec < mag radix2 (B2R x'))%ZIZR (Z.pos mx~0) = bpow radix2 precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)Hex:ex = fexp (mag radix2 (B2R x'))H':(emin + prec < mag radix2 (B2R x'))%ZIZR (2 * Z.pos mx) = bpow radix2 precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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 precprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:(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'))%Zbpow radix2 (mag radix2 (F2R {| Fnum := Z.pos mx; Fexp := ex |}) - 1) = bpow radix2 (prec + (ex - 1))unfold fexp, FLT_exp; rewrite Z.max_l; [f_equal; ring|lia].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:(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'))%Zbpow radix2 (mag radix2 (B2R x') - 1) = bpow radix2 (prec + (fexp (mag radix2 (B2R x')) - 1))now unfold fexp, FLT_exp; do 2 (rewrite Z.max_r; [|lia]).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)H:(mag radix2 (B2R x') <= emin + prec)%Zfexp (mag radix2 (B2R x')) = fexp (mag radix2 (B2R x') - 1)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)generic_format radix2 fexp (pred_pos radix2 fexp (B2R x'))apply generic_format_B2R.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' = bpow radix2 (mag radix2 (B2R x') - 1)generic_format radix2 fexp (B2R x')now unfold pred_pos; rewrite Req_bool_true.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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)))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)pred_pos radix2 fexp (B2R x') = (B2R x' - ulp radix2 fexp (B2R x'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)generic_format radix2 fexp (pred_pos radix2 fexp (B2R x'))change xr with (B2R x') in Nzxr; lra.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)(0 < B2R x')%Rnow unfold pred_pos; rewrite Req_bool_false.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueHfrexpx_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)))%RHfrexpx_eq:(/ 2 <= Rabs (SF2R radix2 (fst (Ffrexp_core_binary false mx ex))) < 1)%RHfrexpx_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_floatxr:=F2R {| Fnum := Z.pos mx; Fexp := ex |}:RNzxr:xr <> 0%RHulp:B2R (Bulp' x') = ulp radix2 fexp (B2R x') /\ is_finite (Bulp' x') = true /\ Bsign (Bulp' x') = falseHldexp: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 BoneFbpowxr: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_floatHminus: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 endFd:is_finite d = truePx:(0 <= B2R x')%RPd:(0 <= B2R d)%RHdlex:(B2R d <= B2R x')%RHd:(mx~0)%positive <> shift_pos (Z.to_pos prec) 1Hpred:B2R x' <> bpow radix2 (mag radix2 (B2R x') - 1)pred_pos radix2 fexp (B2R x') = (B2R x' - ulp radix2 fexp (B2R x'))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseBpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseis_finite x = true /\ Bsign x = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseBpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseis_finite x = true /\ Bsign x = falseprec, emax:Zx:binary_floatFx:(0 < B2R x)%Ris_finite x = true /\ Bsign x = falseprec, emax:Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Hx))%Ris_finite (B754_finite sx mx ex Hx) = true /\ Bsign (B754_finite sx mx ex Hx) = falseprec, emax:Zsx:boolmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite sx mx ex Hx))%RBsign (B754_finite sx mx ex Hx) = falseprec, emax:Zmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite true mx ex Hx))%RBsign (B754_finite true mx ex Hx) = falseprec, emax:Zmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite false mx ex Hx))%RBsign (B754_finite false mx ex Hx) = falseprec, emax:Zmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite true mx ex Hx))%R(B2R (B754_finite true mx ex Hx) <= 0)%Rprec, emax:Zmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite false mx ex Hx))%RBsign (B754_finite false mx ex Hx) = falseeasy.prec, emax:Zmx:positiveex:ZHx:bounded mx ex = trueFx:(0 < B2R (B754_finite false mx ex Hx))%RBsign (B754_finite false mx ex Hx) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseBpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5: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 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(- bpow radix2 emax < pred radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseB2R (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 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(- bpow radix2 emax < pred radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(- bpow radix2 emax < 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 <= pred radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(- bpow radix2 emax < - 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 <= pred radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 <= pred radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 <= pred radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseValid_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 < B2R x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falsegeneric_format radix2 fexp (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = false(0 < B2R x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falsegeneric_format radix2 fexp (B2R x)apply generic_format_B2R.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falsegeneric_format radix2 fexp (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseB2R (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 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolBpred_pos' x = Bpred xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolBpred x = Bpred_pos' xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolB2R (Bpred x) = B2R (Bpred_pos' x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolBsign (Bpred x) = Bsign (Bpred_pos' x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolpred radix2 fexp (B2R x) = pred_pos radix2 fexp (B2R x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolBsign (Bpred x) = Bsign (Bpred_pos' x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool(0 <= B2R x)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolBsign (Bpred x) = Bsign (Bpred_pos' x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%boolBsign (Bpred x) = Bsign (Bpred_pos' x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool(Bsign x || negb (is_finite_strict x))%bool = falsenow 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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:(0 < B2R x)%RH1:B2R (Bpred_pos' x) = pred_pos radix2 fexp (B2R x)H2:is_finite (Bpred_pos' x) = trueH3:Bsign (Bpred_pos' x) = falseH4:is_finite x = trueH5:Bsign x = falseH7:B2R (Bpred x) = pred radix2 fexp (B2R x)H8:is_finite (Bpred x) = trueH9:Bsign (Bpred x) = (Bsign x || negb (is_finite_strict x))%bool(Bsign x || negb true)%bool = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emax(2 < emax)%Z -> forall x : binary_float, is_finite x = true -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zx:binary_floatFx:is_finite x = trueBsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueBsucc' (B754_zero sx) = Bsucc (B754_zero sx)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = trueBsucc' (B754_finite sx mx ex Bx) = Bsucc (B754_finite sx mx ex Bx)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueBsucc' (B754_zero sx) = Bsucc (B754_zero sx)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueB2R (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_auxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneBldexp mode_NE Bone emin = B754_finite false 1 emin Bulp_correct_auxprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Boneis_finite_strict (Bldexp mode_NE Bone emin) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Boneis_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Boneis_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonebpow radix2 emin <> 0%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Boneis_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bone(bpow radix2 emin > 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Boneis_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Boneis_finite_strict (B754_finite false 1 emin Bulp_correct_aux) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign BoneB2R (Bldexp mode_NE Bone emin) = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueH1:B2R (Bldexp mode_NE Bone emin) = bpow radix2 eminH2:is_finite (Bldexp mode_NE Bone emin) = is_finite BoneH3:Bsign (Bldexp mode_NE Bone emin) = Bsign Bonebpow radix2 emin = B2R (B754_finite false 1 emin Bulp_correct_aux)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Rabs (bpow radix2 emin) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(bpow radix2 emin < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 <= bpow radix2 emin)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(emin < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 <= bpow radix2 emin)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(3 - emax - prec < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 <= bpow radix2 emin)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 <= bpow radix2 emin)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 <= bpow radix2 emin)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = trueValid_rnd (round_mode mode_NE)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = truegeneric_format radix2 fexp (bpow radix2 emin)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(fexp (emin + 1) <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(Z.max (emin + 1 - prec) emin <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(emin <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(emin + 1 - prec <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(emin + 1 - prec <= emin)%Zlia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolFx:is_finite (B754_zero sx) = true(0 < prec)%Z -> (emin + 1 - prec <= emin)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = trueBsucc' (B754_finite sx mx ex Bx) = Bsucc (B754_finite sx mx ex Bx)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatBsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH: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 falseBsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatsucc radix2 fexp 0 = bpow radix2 eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatsucc radix2 fexp 0 = bpow radix2 eminnow apply ulp_FLT_0.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatulp radix2 fexp 0 = bpow radix2 eminprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%RB2R (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)))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(bpow radix2 emax <= succ radix2 fexp (B2R (B754_finite true mx ex Bx)))%RB2SF (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = S754_infinity falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%RB2R (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)))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(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))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(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))) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%booltrue = true /\ Bsign (Bopp (Bpred ox)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolsucc radix2 fexp (- B2R ox) = succ radix2 fexp (B2R (B754_finite true mx ex Bx))prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%booltrue = true /\ Bsign (Bopp (Bpred ox)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolsucc radix2 fexp (- F2R {| Fnum := Z.pos mx; Fexp := ex |}) = succ radix2 fexp (F2R {| Fnum := Z.neg mx; Fexp := ex |})prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%booltrue = true /\ Bsign (Bopp (Bpred ox)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%booltrue = true /\ Bsign (Bopp (Bpred ox)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolBsign (Bopp (Bpred ox)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolnegb (Bsign ox || negb (is_finite_strict ox)) = trueprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolis_nan (Bpred ox) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolis_nan (Bpred ox) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred:B2R (Bpred ox) = pred radix2 fexp (B2R ox) /\ is_finite (Bpred ox) = true /\ Bsign (Bpred ox) = (Bsign ox || negb (is_finite_strict ox))%boolis_finite (Bpred ox) = true -> is_nan (Bpred ox) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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 trueValid_exp fexpprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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 truegeneric_format radix2 fexp (B2R ox)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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 truegeneric_format radix2 fexp (B2R ox)apply generic_format_B2R.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rox:=B754_finite false mx ex Bx:binary_floatHpred: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 truegeneric_format radix2 fexp (B2R ox)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHover:(bpow radix2 emax <= succ radix2 fexp (B2R (B754_finite true mx ex Bx)))%RB2SF (Bopp (Bpred_pos' (Bopp (B754_finite true mx ex Bx)))) = S754_infinity falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) <= succ radix2 fexp 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(succ radix2 fexp 0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(succ radix2 fexp (B2R (B754_finite true mx ex Bx)) <= succ radix2 fexp 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(B2R (B754_finite true mx ex Bx) <= 0)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(IZR (- Z.pos mx) * bpow radix2 ex <= 0)%Rnow apply Rmult_le_pos; [apply IZR_le|apply bpow_ge_0].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(0 <= IZR (Z.pos mx) * bpow radix2 ex)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(succ radix2 fexp 0 < bpow radix2 emax)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(emin < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(3 - emax - prec < emax)%Zlia.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite true mx ex Bx) = truex:=B754_finite true mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 emin(0 < prec)%Z -> (prec < emax)%Z -> (3 - emax - prec < emax)%Zprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%Rif 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 falsenow apply F2R_ge_0.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%Rif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%Rsucc radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rif 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 falsenow unfold succ; rewrite (Rle_bool_true _ _ Px).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%Rsucc radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falseHplus: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)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%Rif 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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 endB2R (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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RHplus: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 endB2R (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)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 endBsign (Bplus mode_NE x (Bulp x)) = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 endsucc radix2 fexp (B2R x) = 0%R -> (Bsign x && Bsign (Bulp x))%bool = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 = falseapply Rle_not_lt, (Rle_trans _ _ _ Px), succ_ge_id.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 -> Falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 endsucc radix2 fexp (B2R x) = 0%R -> (Bsign x && Bsign (Bulp x))%bool = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 endsucc radix2 fexp (B2R x) = 0%R -> (Bsign x && Bsign (Bulp x))%bool = falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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))%Rnow apply Rmult_lt_0_compat; [apply IZR_lt|apply bpow_gt_0].prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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)%Rnow simpl.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RHplus: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 = falsenow rewrite (proj1 Hplus).prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite false mx ex Bx) = truex:=B754_finite false mx ex Bx:binary_floatHsucc:succ radix2 fexp 0 = bpow radix2 eminHulp:B2R (Bulp x) = ulp radix2 fexp (B2R x) /\ is_finite (Bulp x) = true /\ Bsign (Bulp x) = falsePx:(0 <= B2R x)%RHsucc':succ radix2 fexp (B2R x) = (B2R x + ulp radix2 fexp (B2R x))%RHover:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RHplus: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 falseprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH: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 falseBsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH: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 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=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 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RB2R (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 xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RH1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)H2:is_finite (Bsucc' x) = trueH3:Bsign (Bsucc' x) = sxH4:B2R (Bsucc x) = succ radix2 fexp (B2R x)H5:is_finite (Bsucc x) = trueH6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%boolBsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RH1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)H2:is_finite (Bsucc' x) = trueH3:Bsign (Bsucc' x) = sxH4:B2R (Bsucc x) = succ radix2 fexp (B2R x)H5:is_finite (Bsucc x) = trueH6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%boolB2R (Bsucc' x) = B2R (Bsucc x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RH1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)H2:is_finite (Bsucc' x) = trueH3:Bsign (Bsucc' x) = sxH4:B2R (Bsucc x) = succ radix2 fexp (B2R x)H5:is_finite (Bsucc x) = trueH6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%boolBsign (Bsucc' x) = Bsign (Bsucc x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RH1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)H2:is_finite (Bsucc' x) = trueH3:Bsign (Bsucc' x) = sxH4:B2R (Bsucc x) = succ radix2 fexp (B2R x)H5:is_finite (Bsucc x) = trueH6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%boolBsign (Bsucc' x) = Bsign (Bsucc x)prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RH1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)H2:is_finite (Bsucc' x) = trueH3:Bsign (Bsucc' x) = sxH4:B2R (Bsucc x) = succ radix2 fexp (B2R x)H5:is_finite (Bsucc x) = trueH6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%boolsx = (Bsign x && is_finite_strict x)%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(succ radix2 fexp (B2R x) < bpow radix2 emax)%RH1:B2R (Bsucc' x) = succ radix2 fexp (B2R x)H2:is_finite (Bsucc' x) = trueH3:Bsign (Bsucc' x) = sxH4:B2R (Bsucc x) = succ radix2 fexp (B2R x)H5:is_finite (Bsucc x) = trueH6:Bsign (Bsucc x) = (Bsign x && is_finite_strict x)%boolsx = (sx && true)%boolprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RB2SF (Bsucc' x) = S754_infinity false -> B2SF (Bsucc x) = S754_infinity false -> Bsucc' x = Bsucc xprec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RH1:B2SF (Bsucc' x) = S754_infinity falseH2:B2SF (Bsucc x) = S754_infinity falseBsucc' x = Bsucc xnow 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_}.prec, emax:Zprec_gt_0_:Prec_gt_0 precprec_lt_emax_:Prec_lt_emax prec emaxHp:(2 < emax)%Zsx:boolmx:positiveex:ZBx:bounded mx ex = trueFx:is_finite (B754_finite sx mx ex Bx) = truex:=B754_finite sx mx ex Bx:binary_floatH:(bpow radix2 emax <= succ radix2 fexp (B2R x))%RH1:B2SF (Bsucc' x) = S754_infinity falseH2:B2SF (Bsucc x) = S754_infinity falseB2SF (Bsucc' x) = B2SF (Bsucc x)