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.

Relative error of the roundings

Require Import Core.
Require Import Psatz.  (* for lra *)

Section Fprop_relative.

Variable beta : radix.
Notation bpow e := (bpow beta e).

Section Fprop_relative_generic.

Variable fexp : Z -> Z.
Context { prop_exp : Valid_exp fexp }.

Section relative_error_conversion.

Variable rnd : R -> Z.
Context { valid_rnd : Valid_rnd rnd }.

beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (0 < b)%R -> (x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R) -> exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (0 < b)%R -> (x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R) -> exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R

exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x = 0%R

exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
(* *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x = 0%R

(Rabs 0 < b)%R /\ round beta fexp rnd x = (x * (1 + 0))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x = 0%R

(Rabs 0 < b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x = 0%R
round beta fexp rnd x = (x * (1 + 0))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x = 0%R

round beta fexp rnd x = (x * (1 + 0))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x = 0%R

round beta fexp rnd 0 = 0%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
(* *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

exists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) / x) < b)%R /\ round beta fexp rnd x = (x * (1 + (round beta fexp rnd x - x) / x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) / x) < b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
round beta fexp rnd x = (x * (1 + (round beta fexp rnd x - x) / x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) / x) < b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) * / x) < b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs (/ x) < b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(0 < Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R
(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x < b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x < b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs (/ x * x) < b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 < b)%R
Hxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs 1 < b * Rabs x)%R
now rewrite Rabs_R1, Rmult_1_r. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (0 <= b)%R -> (Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R -> exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (0 <= b)%R -> (Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R -> exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R

exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x = 0%R

exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
(* *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x = 0%R

(Rabs 0 <= b)%R /\ round beta fexp rnd x = (x * (1 + 0))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x = 0%R

(Rabs 0 <= b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x = 0%R
round beta fexp rnd x = (x * (1 + 0))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x = 0%R

round beta fexp rnd x = (x * (1 + 0))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x = 0%R

round beta fexp rnd 0 = 0%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R
(* *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) / x) <= b)%R /\ round beta fexp rnd x = (x * (1 + (round beta fexp rnd x - x) / x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) / x) <= b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
round beta fexp rnd x = (x * (1 + (round beta fexp rnd x - x) / x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) / x) <= b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs ((round beta fexp rnd x - x) * / x) <= b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs (/ x) <= b)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(0 < Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R
(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs (/ x * x) <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
Hb0:(0 <= b)%R
Hxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
Hx0:x <> 0%R

(Rabs (round beta fexp rnd x - x) * Rabs 1 <= b * Rabs x)%R
now rewrite Rabs_R1, Rmult_1_r. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R) -> (Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (exists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R) -> (Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b, eps:R
Beps:(Rabs eps <= b)%R
Heps:round beta fexp rnd x = (x * (1 + eps))%R

(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b, eps:R
Beps:(Rabs eps <= b)%R
Heps:round beta fexp rnd x = (x * (1 + eps))%R
Pb:(0 <= b)%R

(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b, eps:R
Beps:(Rabs eps <= b)%R
Heps:round beta fexp rnd x = (x * (1 + eps))%R
Pb:(0 <= b)%R

(Rabs (eps * x) <= b * Rabs x)%R
now rewrite Rabs_mult; apply Rmult_le_compat_r; [apply Rabs_pos|]. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (exists eps : R, (Rabs eps <= b)%R /\ x = (round beta fexp rnd x * (1 + eps))%R) -> (Rabs (round beta fexp rnd x - x) <= b * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x b : R, (exists eps : R, (Rabs eps <= b)%R /\ x = (round beta fexp rnd x * (1 + eps))%R) -> (Rabs (round beta fexp rnd x - x) <= b * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R

(exists eps : R, (Rabs eps <= b)%R /\ x = (round beta fexp rnd x * (1 + eps))%R) -> (Rabs (round beta fexp rnd x - x) <= b * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
rx:=round beta fexp rnd x:R

(exists eps : R, (Rabs eps <= b)%R /\ x = (rx * (1 + eps))%R) -> (Rabs (rx - x) <= b * Rabs rx)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
rx:=round beta fexp rnd x:R
eps:R
Beps:(Rabs eps <= b)%R
Heps:x = (rx * (1 + eps))%R

(Rabs (rx - x) <= b * Rabs rx)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
rx:=round beta fexp rnd x:R
eps:R
Beps:(Rabs eps <= b)%R
Heps:x = (rx * (1 + eps))%R
Pb:(0 <= b)%R

(Rabs (rx - x) <= b * Rabs rx)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x, b:R
rx:=round beta fexp rnd x:R
eps:R
Beps:(Rabs eps <= b)%R
Heps:x = (rx * (1 + eps))%R
Pb:(0 <= b)%R

(Rabs (- (eps * rx)) <= b * Rabs rx)%R
now rewrite Rabs_Ropp, Rabs_mult; apply Rmult_le_compat_r; [apply Rabs_pos|]. Qed. End relative_error_conversion. Variable emin p : Z. Hypothesis Hmin : forall k, (emin < k)%Z -> (p <= k - fexp k)%Z. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R

x <> 0%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
T:x = 0%R

~ (bpow emin <= 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(Rabs (round beta fexp rnd x - x) < ulp beta fexp x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp (Build_mag_prop beta x ex He)) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(emin < ex)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z
(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin < bpow ex)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z
(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z
(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z

(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z

((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(0 <= bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (ex - 1) <= Rabs x)%R
apply He. Qed.
1+ε property in any rounding
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow emin <= Rabs x)%R -> exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow emin <= Rabs x)%R -> exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R

exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R
x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R

x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
now apply relative_error. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Z.abs m)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
now apply Rabs_pos_lt. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%R
now apply relative_error_F2R_emin. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

(0 < p)%Z -> forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

(0 < p)%Z -> forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

x <> 0%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
T:x = 0%R

~ (bpow emin <= 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(Rabs (round beta fexp rnd x - x) < ulp beta fexp x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp (Build_mag_prop beta x ex He)) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(emin < ex)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin < bpow ex)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(0 <= bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (ex - 1) <= Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (ex - 1) <= Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (ex - 1) <= Rabs x < bpow ex)%R -> (bpow (ex - 1) <= Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

forall rnd0 : R -> Z, Valid_rnd rnd0 -> forall x0 : R, (0 <= x0)%R -> (bpow (ex - 1) <= x0 < bpow ex)%R -> (bpow (ex - 1) <= round beta fexp rnd0 x0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z

forall rnd : R -> Z, Valid_rnd rnd -> forall x : R, (0 <= x)%R -> (bpow (ex - 1) <= x < bpow ex)%R -> (bpow (ex - 1) <= round beta fexp rnd x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(bpow (ex - 1) <= round beta fexp rnd x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(round beta fexp rnd (bpow (ex - 1)) <= round beta fexp rnd x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R
generic_format beta fexp (bpow (ex - 1))
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

generic_format beta fexp (bpow (ex - 1))
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(fexp (ex - 1 + 1) <= ex - 1)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(fexp ex <= ex - 1)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= ex - 1)%Z
omega. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

(0 < p)%Z -> forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

(0 < p)%Z -> forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in x <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < p)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Z.abs m)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
now apply Rabs_pos_lt. Qed. Variable choice : Z -> bool.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * ulp beta fexp x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(/ 2 * ulp beta fexp x <= / 2 * (bpow (- p + 1) * Rabs x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 <= / 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < / 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

x <> 0%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
H:x = 0%R

False
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
H:x = 0%R

(Rabs x < bpow emin)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
H:x = 0%R

(0 < bpow emin)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp (Build_mag_prop beta x ex He)) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(emin < ex)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z
(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin < bpow ex)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z
(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z
(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z

(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
H:(emin < ex)%Z

((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(0 <= bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (ex - 1) <= Rabs x)%R
apply He. Qed.
1+ε property in rounding to nearest
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow emin <= Rabs x)%R -> exists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow emin <= Rabs x)%R -> exists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

exists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 <= / 2 * bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < / 2 * bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < / 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
now apply relative_error_N. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
(* . *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(Rabs (0 - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(Rabs (0 + - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(0 <= / 2 * bpow (- p + 1) * 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(0 <= 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
(* . *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Z.abs m)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
now apply Rabs_pos_lt. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

exists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 <= / 2 * bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < / 2 * bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < / 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R
now apply relative_error_N_F2R_emin. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 < p)%Z -> forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 < p)%Z -> forall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * ulp beta fexp x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(/ 2 * ulp beta fexp x <= / 2 * (bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x)))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(0 <= / 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < / 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(0 < 2)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R

x <> 0%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
H:x = 0%R

False
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
H:x = 0%R

(Rabs x < bpow emin)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
H:x = 0%R

(0 < bpow emin)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R

(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp (Build_mag_prop beta x ex He)) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(emin < ex)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin < bpow ex)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(0 <= bpow (- p + 1))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z
(bpow (ex - 1) <= Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (ex - 1) <= Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

(bpow (ex - 1) <= Rabs x < bpow ex)%R -> (bpow (ex - 1) <= Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
x:R
Hx:(bpow emin <= Rabs x)%R
Hx':x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
He':(emin < ex)%Z

forall rnd0 : R -> Z, Valid_rnd rnd0 -> forall x0 : R, (0 <= x0)%R -> (bpow (ex - 1) <= x0 < bpow ex)%R -> (bpow (ex - 1) <= round beta fexp rnd0 x0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z

forall rnd : R -> Z, Valid_rnd rnd -> forall x : R, (0 <= x)%R -> (bpow (ex - 1) <= x < bpow ex)%R -> (bpow (ex - 1) <= round beta fexp rnd x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(bpow (ex - 1) <= round beta fexp rnd x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(round beta fexp rnd (bpow (ex - 1)) <= round beta fexp rnd x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R
generic_format beta fexp (bpow (ex - 1))
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

generic_format beta fexp (bpow (ex - 1))
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(fexp (ex - 1 + 1) <= ex - 1)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

(fexp ex <= ex - 1)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
choice:Z -> bool
Hp:(0 < p)%Z
ex:Z
He':(emin < ex)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (ex - 1) <= x < bpow ex)%R

((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= ex - 1)%Z
omega. Qed.
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 < p)%Z -> forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 < p)%Z -> forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
(* . *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(Rabs (0 - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(Rabs (0 + - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(0 <= / 2 * bpow (- p + 1) * 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x = 0%R

(0 <= 0)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R
(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R
(* . *)
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs x)%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Z.abs m)%Z
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%R
beta:radix
fexp:Z -> Z
prop_exp:Valid_exp fexp
emin, p:Z
Hmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Hp:(0 < p)%Z
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:x <> 0%R

(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%R
now apply Rabs_pos_lt. Qed. End Fprop_relative_generic. Section Fprop_relative_FLX. Variable prec : Z. Variable Hp : Z.lt 0 prec.
beta:radix
prec:Z
Hp:(0 < prec)%Z

forall k : Z, (prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z

forall k : Z, (prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
k:Z

(prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
k:Z

(prec <= k - (k - prec))%Z
omega. Qed. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R

(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

forall k : Z, (ex - 1 < k)%Z -> (prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
k:Z

(prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (ex - 1) <= Rabs x)%R
apply He. Qed.
1+ε property in any rounding in FLX
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLX_exp prec) rnd x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLX_exp prec) rnd x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R

exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLX_exp prec) rnd x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R

(0 < bpow (- prec + 1))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R

x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
now apply relative_error_FLX. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) rnd x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) rnd x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R

(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) rnd x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) rnd x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) rnd x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

forall k : Z, (ex - 1 < k)%Z -> (prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
k:Z

(prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (ex - 1) <= Rabs x)%R
apply He. Qed. Variable choice : Z -> bool.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x = 0%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
(* . *)
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x = 0%R

(Rabs (0 - 0) <= / 2 * bpow (- prec + 1) * Rabs 0)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x = 0%R

(Rabs (0 + - 0) <= / 2 * bpow (- prec + 1) * Rabs 0)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x = 0%R

(0 <= / 2 * bpow (- prec + 1) * 0)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x = 0%R

(0 <= 0)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
(* . *)
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

forall k : Z, (ex - 1 < k)%Z -> (prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
k:Z

(prec <= k - FLX_exp prec k)%Z
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R
(bpow (ex - 1) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:x <> 0%R
ex:Z
He:(bpow (ex - 1) <= Rabs x < bpow ex)%R

(bpow (ex - 1) <= Rabs x)%R
apply He. Qed.
unit roundoff
Definition u_ro := (/2 * bpow (-prec + 1))%R.

beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 <= u_ro)%R
apply Rmult_le_pos; [lra|apply bpow_ge_0]. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(u_ro < 1)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(u_ro < 1)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(2 * (/ 2 * bpow (- prec + 1)) < 2 * 1)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(bpow (- prec + 1) < 2)%R
apply (Rle_lt_trans _ (bpow 0)); [apply bpow_le; omega|simpl; lra]. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(0 <= u_ro / (1 + u_ro))%R
apply Rmult_le_pos; [|apply Rlt_le, Rinv_0_lt_compat]; assert (H := u_ro_pos); lra. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(u_ro / (1 + u_ro) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

(u_ro / (1 + u_ro) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Pu_ro:(0 <= u_ro)%R

(u_ro / (1 + u_ro) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Pu_ro:(0 <= u_ro)%R

(u_ro / (1 + u_ro) * (1 + u_ro) <= u_ro * (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
Pu_ro:(0 <= u_ro)%R

(u_ro * 1 <= u_ro * (1 + u_ro))%R
assert (0 <= u_ro * u_ro)%R; [apply Rmult_le_pos|]; lra. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 <= u_ro)%R
apply Rmult_le_pos; [lra|apply bpow_ge_0].
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Zx:x = 0%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Zx:x = 0%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Zx:x = 0%R

(Rabs (0 - 0) <= 0)%R
now unfold Rminus; rewrite Rplus_0_l, Rabs_Ropp, Rabs_R0; right.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R

(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R

(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R

(Rabs (rx - x) <= u_ro * ufpx)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R

(Rabs (rx - x) <= u_ro * ufpx)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R

(/ 2 * ulp beta (FLX_exp prec) x)%R = (u_ro * ufpx)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R

(/ 2 * bpow (mag beta x - prec))%R = (/ 2 * bpow (- prec + 1) * bpow (mag beta x - 1))%R
rewrite Rmult_assoc, <-bpow_plus; do 2 f_equal; ring.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R

(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R

(ufpx + Rabs (rx - x) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R

(ufpx + Rabs (rx - x) <= Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R

(Rabs (rx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(Rabs (rx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R
(Rabs (rx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(Rabs (rx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(Rabs (rx - x) <= Rabs (ufpx - x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R
(Rabs (ufpx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(Rabs (rx - x) <= Rabs (ufpx - x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

generic_format beta (FLX_exp prec) ufpx
apply generic_format_bpow; unfold FLX_exp; lia.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(Rabs (ufpx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(x - ufpx <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R
(0 <= x - ufpx)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(x - ufpx <= - ufpx + Rabs x)%R
now rewrite Rabs_pos_eq; [right; ring|].
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(0 <= x - ufpx)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(0 <= x)%R

(ufpx <= x)%R
now rewrite <-(Rabs_pos_eq _ Sx); apply bpow_mag_le.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(Rabs (rx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(Rabs (rx - x) <= Rabs (- ufpx - x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R
(Rabs (- ufpx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(Rabs (rx - x) <= Rabs (- ufpx - x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

generic_format beta (FLX_exp prec) (- ufpx)
apply generic_format_opp, generic_format_bpow; unfold FLX_exp; lia.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(Rabs (- ufpx - x) <= - ufpx + Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(0 <= - ufpx - x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(x <= - ufpx)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
Sx:(x < 0)%R

(bpow (mag beta x - 1) <= - x)%R
rewrite <-mag_opp, <-Rabs_pos_eq; [apply bpow_mag_le|]; lra.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R

(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R

(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R
(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R

(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R

(0 < ufpx + Rabs (rx - x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R
(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R

(0 < ufpx + Rabs (rx - x))%R
apply Rplus_lt_le_0_compat; [apply bpow_gt_0|apply Rabs_pos].
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(Rabs ((rx - x) / x) <= Rabs (rx - x) / (ufpx + Rabs (rx - x)))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R
(Rabs (rx - x) / (ufpx + Rabs (rx - x)) <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(Rabs ((rx - x) / x) <= Rabs (rx - x) / (ufpx + Rabs (rx - x)))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(Rabs (/ x) <= / (ufpx + Rabs (rx - x)))%R
now rewrite (Rabs_Rinv _ Nzx); apply Rinv_le.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(Rabs (rx - x) / (ufpx + Rabs (rx - x)) <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(0 < (ufpx + Rabs (rx - x)) * (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R
(Rabs (rx - x) / (ufpx + Rabs (rx - x)) * ((ufpx + Rabs (rx - x)) * (1 + u_ro)) <= u_ro / (1 + u_ro) * ((ufpx + Rabs (rx - x)) * (1 + u_ro)))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(0 < (ufpx + Rabs (rx - x)) * (1 + u_ro))%R
apply Rmult_lt_0_compat; lra.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(0 < ufpx + Rabs (rx - x))%R

(Rabs (rx - x) / (ufpx + Rabs (rx - x)) * ((ufpx + Rabs (rx - x)) * (1 + u_ro)) <= u_ro / (1 + u_ro) * ((ufpx + Rabs (rx - x)) * (1 + u_ro)))%R
field_simplify; [try unfold Rdiv; rewrite ?Rinv_1, ?Rmult_1_r| |]; lra.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R

(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(Rabs (rx - x) * / Rabs x <= u_ro * / (1 + u_ro))%R

(Rabs (rx - x) <= u_ro * / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Pu_ro:(0 <= u_ro)%R
Nzx:x <> 0%R
ufpx:=bpow (mag beta x - 1):R
rx:=round beta (FLX_exp prec) (Znearest choice) x:R
Pufpx:(0 <= ufpx)%R
H_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R
H_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R
H:(Rabs (rx - x) * / Rabs x <= u_ro * / (1 + u_ro))%R

(Rabs (rx - x) * / Rabs x <= u_ro * / (1 + u_ro) * Rabs x * / Rabs x)%R
now apply (Rle_trans _ _ _ H); right; field; split; [apply Rabs_no_R0|lra]. Qed.
1+ε property in rounding to nearest in FLX
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 <= / 2 * bpow (- prec + 1))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 < / 2 * bpow (- prec + 1))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 < / 2)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(0 < bpow (- prec + 1))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 < 2)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(0 < bpow (- prec + 1))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 < bpow (- prec + 1))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
now apply relative_error_N_FLX. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 <= u_ro / (1 + u_ro))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(0 <= u_ro / (1 + u_ro))%R
apply u_rod1pu_ro_pos.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%R
now apply relative_error_N_FLX'. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x rx : R, (exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ rx = (x * (1 + eps))%R) -> exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x rx : R, (exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ rx = (x * (1 + eps))%R) -> exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Zfx:rx = 0%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Zfx:rx = 0%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Zfx:rx = 0%R

x = (rx * (1 + 0))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Zfx:rx = 0%R

x = 0%R
now rewrite Zfx in Hd; destruct (Rmult_integral _ _ (sym_eq Hd)); [|lra].
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Zx:x = 0%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Zx:x = 0%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
now exfalso; revert Hd; rewrite Zx, Rmult_0_l.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs d' <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R
Hd':(Rabs d' <= u_ro)%R
exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs d' <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs ((x - x * (1 + d)) / (x * (1 + d))) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs (- d / (1 + d)) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs d * Rabs (/ (1 + d)) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs d * / (1 + d) <= u_ro)%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs d * / (1 + d) * (1 + d) <= u_ro * (1 + d))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(Rabs d <= u_ro * (1 + d))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(u_ro / (1 + u_ro) <= u_ro * (1 + d))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R

(/ (1 + u_ro) <= 1 + d)%R
apply (Rle_trans _ (1 - u_ro / (1 + u_ro))); [right; field|]; lra.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x, rx, d:R
Bd:(Rabs d <= u_ro / (1 + u_ro))%R
Hd:rx = (x * (1 + d))%R
Pu_ro:(0 <= u_ro)%R
H:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%R
H':(u_ro / (1 + u_ro) <= u_ro)%R
H'':(u_ro < 1)%R
Nzfx:rx <> 0%R
Nzx:x <> 0%R
d':=((x - rx) / rx)%R:R
Hd':(Rabs d' <= u_ro)%R

exists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%R
now exists d'; split; [|unfold d'; field]. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps : R, (Rabs eps <= u_ro)%R /\ x = (round beta (FLX_exp prec) (Znearest choice) x * (1 + eps))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps : R, (Rabs eps <= u_ro)%R /\ x = (round beta (FLX_exp prec) (Znearest choice) x * (1 + eps))%R
intro x; apply relative_error_N_round_ex_derive, relative_error_N_FLX'_ex. Qed.
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) (Znearest choice) x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) (Znearest choice) x))%R
beta:radix
prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) (Znearest choice) x))%R
apply relative_error_le_conversion_round_inv, relative_error_N_FLX_round_ex. Qed. End Fprop_relative_FLX. Section Fprop_relative_FLT. Variable emin prec : Z. Variable Hp : Z.lt 0 prec.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z

forall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z

forall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
k:Z
Hk:(emin + prec - 1 < k)%Z

(prec <= k - FLT_exp emin prec k)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
k:Z
Hk:(emin + prec - 1 < k)%Z

(prec <= k - Z.max (k - prec) emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
k:Z
Hk:(emin + prec - 1 < k)%Z

(k - prec >= emin)%Z /\ Z.max (k - prec) emin = (k - prec)%Z \/ (k - prec < emin)%Z /\ Z.max (k - prec) emin = emin -> (prec <= k - Z.max (k - prec) emin)%Z
omega. Qed. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

forall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
apply relative_error_FLT_aux. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in x <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in x <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R

(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (x + - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 < bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 < Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 < Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x <= bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x < bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(bpow (emin + prec - 1) <= bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(emin + prec - 1 <= emin + prec)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(Rabs x < bpow (emin + prec - 1))%R

FIX_format beta emin x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Zx:x <> 0%R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
now apply relative_error_FLT. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
x <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

x <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
now apply relative_error_FLT_F2R_emin. Qed.
1+ε property in any rounding in FLT
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(0 < bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
x <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

x <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
intros _; now apply relative_error_FLT. Qed. Variable choice : Z -> bool.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

forall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
apply relative_error_FLT_aux. Qed.
1+ε property in rounding to nearest in FLT
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(0 <= / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(0 < / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(0 < / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(0 < bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(0 < 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(0 < bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(0 < bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
now apply relative_error_N_FLT. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

forall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
apply relative_error_FLT_aux. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (x + - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 < / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x <= bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x < bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(bpow (emin + prec - 1) <= bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(emin + prec - 1 <= emin + prec)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

FIX_format beta emin x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
now apply relative_error_N_FLT. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 <= / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 < / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
now apply relative_error_N_FLT_F2R_emin. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (x + - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= / 2 * bpow (- prec + 1) * Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 < / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(0 <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

generic_format beta (FLT_exp emin prec) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x <= bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x < bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(bpow (emin + prec - 1) <= bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

(emin + prec - 1 <= emin + prec)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R
generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

generic_format beta (FIX_exp emin) x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(Rabs x < bpow (emin + prec - 1))%R

FIX_format beta emin x
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLT_exp emin prec) (Znearest choice) x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
m:Z
x:=F2R {| Fnum := m; Fexp := emin |}:R
Hx:(bpow (emin + prec - 1) <= Rabs x)%R

forall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
apply relative_error_FLT_aux. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (0 < x)%R -> exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, (0 < x)%R -> exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
(* *)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R

Valid_exp (FLT_exp emin prec)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
forall k : Z, (emin + prec < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
(bpow (emin + prec) <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
exists eps0 eta : R, (Rabs eps0 <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps0 * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps0) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R

forall k : Z, (emin + prec < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
(bpow (emin + prec) <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
exists eps0 eta : R, (Rabs eps0 <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps0 * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps0) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
k:Z
H:(emin + prec < k)%Z

(prec <= k - Z.max (k - prec) emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
(bpow (emin + prec) <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
exists eps0 eta : R, (Rabs eps0 <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps0 * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps0) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R

(bpow (emin + prec) <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
exists eps0 eta : R, (Rabs eps0 <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps0 * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps0) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

exists eps0 eta : R, (Rabs eps0 <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps0 * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps0) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

(Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs 0 <= / 2 * bpow emin)%R /\ (eps * 0)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

(Rabs 0 <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
(eps * 0)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
(0 <= bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
(eps * 0)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

(0 <= bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
(eps * 0)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

(eps * 0)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(bpow (emin + prec) <= x)%R
eps:R
Heps1:(Rabs eps <= / 2 * bpow (- prec + 1))%R
Heps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R

round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
(* *)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(Rabs 0 <= / 2 * bpow (- prec + 1))%R /\ (Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%R /\ (0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(Rabs 0 <= / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%R /\ (0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%R /\ (0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(0 <= bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%R /\ (0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%R /\ (0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * ulp beta (FLT_exp emin prec) x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

Valid_exp (FLT_exp emin prec)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(ulp beta (FLT_exp emin prec) x <= bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(ulp beta (FLT_exp emin prec) x <= bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(bpow (cexp beta (FLT_exp emin prec) x) <= bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
x <> 0%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(bpow (cexp beta (FLT_exp emin prec) x) <= bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(cexp beta (FLT_exp emin prec) x <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(Z.max (mag beta x - prec) emin <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(emin <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(mag beta x - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(mag beta x - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R

(e - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R

(e - 1 < emin + prec)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R
H:(e - 1 < emin + prec)%Z
(e - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R

(bpow (e - 1) < bpow (emin + prec))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R
H:(e - 1 < emin + prec)%Z
(e - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R

(bpow (e - 1) <= x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R
H:(e - 1 < emin + prec)%Z
(e - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R

(bpow (e - 1) <= Rabs x)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R
H:(e - 1 < emin + prec)%Z
(e - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
e:Z
He:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R
H:(e - 1 < emin + prec)%Z

(e - prec <= emin)%Z
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R
(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
Hx2:(0 < x)%R
Hx:(x < bpow (emin + prec))%R

(0 * (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + 0) + (round beta (FLT_exp emin prec) (Znearest choice) x - x))%R
split ; ring. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R
exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R
d:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Hd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R
d:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Hd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R

(Rabs 0 <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R
d:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Hd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R
(d * 0)%R = 0%R /\ rx = (x * (1 + d) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R
d:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Hd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R

(Rabs 0 <= / 2 * bpow emin)%R
rewrite Rabs_R0; apply Rmult_le_pos; [lra|apply bpow_ge_0].
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R
d:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Hd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R

(d * 0)%R = 0%R /\ rx = (x * (1 + d) + 0)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
MX:(bpow (emin + prec - 1) <= Rabs x)%R
d:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Hd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R

rx = (x * (1 + d))%R
now rewrite <- Hd; apply round_FLT_FLX.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (rx - x) <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R
H:(Rabs (rx - x) <= / 2 * bpow emin)%R
exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs (rx - x) <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R

(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R

(Rabs x < bpow (emin + prec))%R
apply (Rlt_le_trans _ _ _ Mx), bpow_le; lia.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R
H:(Rabs (rx - x) <= / 2 * bpow emin)%R

exists eps eta : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ rx = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
Pb:(0 <= u_ro prec / (1 + u_ro prec))%R
Mx:(Rabs x < bpow (emin + prec - 1))%R
H:(Rabs (rx - x) <= / 2 * bpow emin)%R

(0 * (rx - x))%R = 0%R /\ rx = (x * (1 + 0) + (rx - x))%R
now rewrite Rmult_0_l, Rplus_0_r, Rmult_1_r; split; [|ring]. Qed.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = round beta (FLT_exp emin prec) (Znearest choice) x /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool

forall x : R, exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = round beta (FLT_exp emin prec) (Znearest choice) x /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R

exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = round beta (FLT_exp emin prec) (Znearest choice) x /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R

exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = rx /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R

exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = rx /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = rx /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = rx /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = rx /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

round beta (FLT_exp emin prec) (Znearest choice) rx = rx
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ rx = (x + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

round beta (FLT_exp emin prec) (Znearest choice) rx = rx
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

generic_format beta (FLT_exp emin prec) rx
now apply generic_format_round; [apply FLT_exp_valid|apply valid_rnd_N].
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ rx = (x + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ rx = (x + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

rx = (x + e)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
Zd:d = 0%R

(x * (1 + d) + e)%R = (x + e)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
Ze:e = 0%R
(x * (1 + d) + e)%R = (x + e)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
Zd:d = 0%R

(x * (1 + d) + e)%R = (x + e)%R
now rewrite Zd, Rplus_0_r, Rmult_1_r.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R
Ze:e = 0%R

(x * (1 + d) + e)%R = (x + e)%R
exfalso; revert HdxLte; rewrite Ze, Rabs_R0; apply Rle_not_lt, Rabs_pos.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + 0))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HdxLte:(Rabs (d * x) < Rabs e)%R

generic_format beta (FLT_exp emin prec) rx
now apply generic_format_round; [apply FLT_exp_valid|apply valid_rnd_N].
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R

exists x' : R, round beta (FLT_exp emin prec) (Znearest choice) x' = rx /\ (exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x' = (x + eta)%R) /\ (exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x' = (x' * (1 + eps))%R)
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R

exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x = (x + eta)%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R

exists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x = (x + eta)%R
exists 0%R; split; [rewrite Rabs_R0; apply Rmult_le_pos; [lra|apply bpow_ge_0]|ring].
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R

exists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Zd:d = 0%R

(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Ze:e = 0%R
(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Zd:d = 0%R

(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Zd:d = 0%R

(x * (1 + d) + e)%R = (x * (1 + d))%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Zd:d = 0%R

e = 0%R
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Zd:d = 0%R

(Rabs e <= 0)%R
now revert HeLedx; rewrite Zd, Rmult_0_l, Rabs_R0.
beta:radix
emin, prec:Z
Hp:(0 < prec)%Z
rnd:R -> Z
valid_rnd:Valid_rnd rnd
choice:Z -> bool
x:R
rx:=round beta (FLT_exp emin prec) (Znearest choice) x:R
d, e:R
Bd:(Rabs d <= u_ro prec / (1 + u_ro prec))%R
Be:(Rabs e <= / 2 * bpow emin)%R
Hde0:(d * e)%R = 0%R
Hde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%R
HeLedx:(Rabs e <= Rabs (d * x))%R
Ze:e = 0%R

(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%R
now rewrite Ze, Rplus_0_r. Qed. End Fprop_relative_FLT.
beta:radix

forall emin prec : Z, (0 < prec)%Z -> forall (choice : Z -> bool) (x : R), exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix

forall emin prec : Z, (0 < prec)%Z -> forall (choice : Z -> bool) (x : R), exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Px:(x > 0)%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R

(0 < - x)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R

(0 < - x)%R
now rewrite <- Ropp_0; apply Ropp_lt_contravar.
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

(Rabs (- e) <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R
(d * - e)%R = 0%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R
round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + - e)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

(Rabs (- e) <= / 2 * bpow emin)%R
now rewrite Rabs_Ropp.
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

(d * - e)%R = 0%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R
round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + - e)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

(d * - e)%R = 0%R
now rewrite Ropp_mult_distr_r_reverse, <- Ropp_0; apply f_equal.
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + - e)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Nx:(x < 0)%R
Pmx:(0 < - x)%R
d, e:R
Hd:(Rabs d <= / 2 * bpow (- prec + 1))%R
He:(Rabs e <= / 2 * bpow emin)%R
Hde:(d * e)%R = 0%R
Hr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%R

(- round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x))%R = (- - x * (1 + d) + - e)%R
now rewrite Ropp_mult_distr_l_reverse, <- Ropp_plus_distr; apply f_equal.
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Px:(x > 0)%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R

(0 <= / 2)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R

(2 * 0 <= 2 * / 2)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R

2%R <> 0%R
apply Rgt_not_eq, Rlt_gt, Rlt_0_2.
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

(Rabs 0 <= / 2 * bpow (- prec + 1))%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
(Rabs 0 <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
(0 * 0)%R = 0%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
round beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

(Rabs 0 <= / 2 * bpow (- prec + 1))%R
now rewrite Rabs_R0; apply Rmult_le_pos; [|apply bpow_ge_0].
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

(Rabs 0 <= / 2 * bpow emin)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
(0 * 0)%R = 0%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
round beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

(Rabs 0 <= / 2 * bpow emin)%R
now rewrite Rabs_R0; apply Rmult_le_pos; [|apply bpow_ge_0].
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

(0 * 0)%R = 0%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R
round beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%R
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

(0 * 0)%R = 0%R
now rewrite Rmult_0_l.
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Zx:x = 0%R
Ph2:(0 <= / 2)%R

round beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%R
now rewrite Rmult_0_l, Rplus_0_l, round_0; [|apply valid_rnd_N].
beta:radix
emin, prec:Z
Pprec:(0 < prec)%Z
choice:Z -> bool
x:R
Px:(x > 0)%R

exists eps eta : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ (Rabs eta <= / 2 * bpow emin)%R /\ (eps * eta)%R = 0%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + eta)%R
now apply error_N_FLT_aux. Qed. End Fprop_relative.