Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
This file is part of the Flocq formalization of floating-point
arithmetic in Coq: http://flocq.gforge.inria.fr/
Copyright (C) 2010-2018 Sylvie Boldo
Copyright (C) 2010-2018 Guillaume Melquiond
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
COPYING file for more details.
Copyright (C) 2010-2018 Guillaume Melquiond
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:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R(* *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x = 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x = 0%R(Rabs 0 < b)%R /\ round beta fexp rnd x = (x * (1 + 0))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x = 0%R(Rabs 0 < b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x = 0%Rround beta fexp rnd x = (x * (1 + 0))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x = 0%Rround beta fexp rnd x = (x * (1 + 0))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x = 0%Rround beta fexp rnd 0 = 0%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R(* *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:x <> 0%R -> (Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps < b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs ((round beta fexp rnd x - x) / x) < b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%Rround beta fexp rnd x = (x * (1 + (round beta fexp rnd x - x) / x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs ((round beta fexp rnd x - x) / x) < b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs ((round beta fexp rnd x - x) * / x) < b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x) < b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(0 < Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x < b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x < b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x * x) < b * Rabs x)%Rnow rewrite Rabs_R1, Rmult_1_r. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 < b)%RHxb:(Rabs (round beta fexp rnd x - x) < b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs 1 < b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R(* *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x = 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x = 0%R(Rabs 0 <= b)%R /\ round beta fexp rnd x = (x * (1 + 0))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x = 0%R(Rabs 0 <= b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x = 0%Rround beta fexp rnd x = (x * (1 + 0))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x = 0%Rround beta fexp rnd x = (x * (1 + 0))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x = 0%Rround beta fexp rnd 0 = 0%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%R(* *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rexists eps : R, (Rabs eps <= b)%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs ((round beta fexp rnd x - x) / x) <= b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%Rround beta fexp rnd x = (x * (1 + (round beta fexp rnd x - x) / x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs ((round beta fexp rnd x - x) / x) <= b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs ((round beta fexp rnd x - x) * / x) <= b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x) <= b)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(0 < Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x <= b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x) * Rabs x <= b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs (/ x * x) <= b * Rabs x)%Rnow rewrite Rabs_R1, Rmult_1_r. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:RHb0:(0 <= b)%RHxb:(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%RHx0:x <> 0%R(Rabs (round beta fexp rnd x - x) * Rabs 1 <= b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b, eps:RBeps:(Rabs eps <= b)%RHeps:round beta fexp rnd x = (x * (1 + eps))%R(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b, eps:RBeps:(Rabs eps <= b)%RHeps:round beta fexp rnd x = (x * (1 + eps))%RPb:(0 <= b)%R(Rabs (round beta fexp rnd x - x) <= b * Rabs x)%Rnow rewrite Rabs_mult; apply Rmult_le_compat_r; [apply Rabs_pos|]. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b, eps:RBeps:(Rabs eps <= b)%RHeps:round beta fexp rnd x = (x * (1 + eps))%RPb:(0 <= b)%R(Rabs (eps * x) <= b * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:Rrx:=round beta fexp rnd x:R(exists eps : R, (Rabs eps <= b)%R /\ x = (rx * (1 + eps))%R) -> (Rabs (rx - x) <= b * Rabs rx)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:Rrx:=round beta fexp rnd x:Reps:RBeps:(Rabs eps <= b)%RHeps:x = (rx * (1 + eps))%R(Rabs (rx - x) <= b * Rabs rx)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:Rrx:=round beta fexp rnd x:Reps:RBeps:(Rabs eps <= b)%RHeps:x = (rx * (1 + eps))%RPb:(0 <= b)%R(Rabs (rx - x) <= b * Rabs rx)%Rnow 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:radixfexp:Z -> Zprop_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, b:Rrx:=round beta fexp rnd x:Reps:RBeps:(Rabs eps <= b)%RHeps:x = (rx * (1 + eps))%RPb:(0 <= b)%R(Rabs (- (eps * rx)) <= b * Rabs rx)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%Rx <> 0%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RT:x = 0%R~ (bpow emin <= 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < ulp beta fexp x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe: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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(emin < ex)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin < bpow ex)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(0 <= bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rapply He. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%R
1+ε property in any rounding
beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, (bpow emin <= Rabs x)%R -> exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, (bpow emin <= Rabs x)%R -> exists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%Rexists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%Rx <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%Rx <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rnow apply relative_error. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Z.abs m)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%Rnow apply Rabs_pos_lt. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rexists eps : R, (Rabs eps < bpow (- p + 1))%R /\ round beta fexp rnd x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rx <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rnow apply relative_error_F2R_emin. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rx <> 0%R -> (Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%Rx <> 0%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RT:x = 0%R~ (bpow emin <= 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(Rabs (round beta fexp rnd x - x) < ulp beta fexp x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(emin < ex)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin < bpow ex)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(0 <= bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (ex - 1) <= Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (ex - 1) <= Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (ex - 1) <= Rabs x < bpow ex)%R -> (bpow (ex - 1) <= Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Zforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(bpow (ex - 1) <= round beta fexp rnd x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(round beta fexp rnd (bpow (ex - 1)) <= round beta fexp rnd x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%Rgeneric_format beta fexp (bpow (ex - 1))beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%Rgeneric_format beta fexp (bpow (ex - 1))beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(fexp (ex - 1 + 1) <= ex - 1)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(fexp ex <= ex - 1)%Zomega. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%ZHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= ex - 1)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp rnd x - x) < bpow (- p + 1) * Rabs (round beta fexp rnd x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < p)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Z.abs m)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%Rnow apply Rabs_pos_lt. Qed. Variable choice : Z -> bool.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, (bpow emin <= Rabs x)%R -> (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * ulp beta fexp x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(/ 2 * ulp beta fexp x <= / 2 * (bpow (- p + 1) * Rabs x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 <= / 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < / 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%Rx <> 0%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RH:x = 0%RFalsebeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RH:x = 0%R(Rabs x < bpow emin)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RH:x = 0%R(0 < bpow emin)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe: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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(emin < ex)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin < bpow ex)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RH:(emin < ex)%Z((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(0 <= bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rapply He. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%R
1+ε property in rounding to nearest
beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%Rexists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 <= / 2 * bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < / 2 * bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < / 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rnow apply relative_error_N. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall m : Z, let x := F2R {| Fnum := m; Fexp := emin |} in (Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R(* . *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(Rabs (0 - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(Rabs (0 + - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(0 <= / 2 * bpow (- p + 1) * 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(0 <= 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%R(* . *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Z.abs m)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%Rnow apply Rabs_pos_lt. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rexists eps : R, (Rabs eps <= / 2 * bpow (- p + 1))%R /\ round beta fexp (Znearest choice) x = (x * (1 + eps))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 <= / 2 * bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < / 2 * bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < / 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rnow apply relative_error_N_F2R_emin. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * ulp beta fexp x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(/ 2 * ulp beta fexp x <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(/ 2 * ulp beta fexp x <= / 2 * (bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x)))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(0 <= / 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(0 < / 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(0 < 2)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%Rx <> 0%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RH:x = 0%RFalsebeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RH:x = 0%R(Rabs x < bpow emin)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RH:x = 0%R(0 < bpow emin)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(ulp beta fexp x <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (cexp beta fexp x) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%R(bpow (fexp (mag beta x)) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(emin < ex)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin < bpow ex)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1) * bpow (ex - 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (fexp ex) <= bpow (- p + 1 + (ex - 1)))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= - p + 1 + (ex - 1))%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (- p + 1) * bpow (ex - 1) <= bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(0 <= bpow (- p + 1))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (ex - 1) <= Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (ex - 1) <= Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Z(bpow (ex - 1) <= Rabs x < bpow ex)%R -> (bpow (ex - 1) <= Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zx:RHx:(bpow emin <= Rabs x)%RHx':x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%RHe':(emin < ex)%Zforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zforall 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)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(bpow (ex - 1) <= round beta fexp rnd x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(round beta fexp rnd (bpow (ex - 1)) <= round beta fexp rnd x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%Rgeneric_format beta fexp (bpow (ex - 1))beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%Rgeneric_format beta fexp (bpow (ex - 1))beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(fexp (ex - 1 + 1) <= ex - 1)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R(fexp ex <= ex - 1)%Zomega. Qed.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zchoice:Z -> boolHp:(0 < p)%Zex:ZHe':(emin < ex)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (ex - 1) <= x < bpow ex)%R((emin < ex)%Z -> (p <= ex - fexp ex)%Z) -> (fexp ex <= ex - 1)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice: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))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=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:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(Rabs (0 - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(Rabs (0 + - 0) <= / 2 * bpow (- p + 1) * Rabs 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(0 <= / 2 * bpow (- p + 1) * 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x = 0%R(0 <= 0)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%R(* . *)beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(Rabs (round beta fexp (Znearest choice) x - x) <= / 2 * bpow (- p + 1) * Rabs (round beta fexp (Znearest choice) x))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs x)%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(bpow emin <= F2R {| Fnum := Z.abs m; Fexp := emin |})%Rbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Z.abs m)%Zbeta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(F2R {| Fnum := 0; Fexp := emin |} < F2R {| Fnum := Z.abs m; Fexp := emin |})%Rnow apply Rabs_pos_lt. Qed. End Fprop_relative_generic. Section Fprop_relative_FLX. Variable prec : Z. Variable Hp : Z.lt 0 prec.beta:radixfexp:Z -> Zprop_exp:Valid_exp fexpemin, p:ZHmin:forall k : Z, (emin < k)%Z -> (p <= k - fexp k)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolHp:(0 < p)%Zm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:x <> 0%R(0 < Rabs (F2R {| Fnum := m; Fexp := emin |}))%Rbeta:radixprec:ZHp:(0 < prec)%Zforall k : Z, (prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zforall k : Z, (prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zk:Z(prec <= k - FLX_exp prec k)%Zomega. Qed. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.beta:radixprec:ZHp:(0 < prec)%Zk:Z(prec <= k - (k - prec))%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, x <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe: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)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%Rforall k : Z, (ex - 1 < k)%Z -> (prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%Rk:Z(prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rapply He. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%R
1+ε property in any rounding in FLX
beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLX_exp prec) rnd x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, exists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLX_exp prec) rnd x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:Rexists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLX_exp prec) rnd x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:R(0 < bpow (- prec + 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:Rx <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_FLX. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:Rx <> 0%R -> (Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) rnd x - x) < bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) rnd x))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe: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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%Rforall k : Z, (ex - 1 < k)%Z -> (prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%Rk:Z(prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rapply He. Qed. Variable choice : Z -> bool.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R(* . *)beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x = 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x = 0%R(Rabs (0 - 0) <= / 2 * bpow (- prec + 1) * Rabs 0)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x = 0%R(Rabs (0 + - 0) <= / 2 * bpow (- prec + 1) * Rabs 0)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x = 0%R(0 <= / 2 * bpow (- prec + 1) * 0)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x = 0%R(0 <= 0)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%R(* . *)beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe: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)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%Rforall k : Z, (ex - 1 < k)%Z -> (prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%Rk:Z(prec <= k - FLX_exp prec k)%Zbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rapply He. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:x <> 0%Rex:ZHe:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%R
unit roundoff
Definition u_ro := (/2 * bpow (-prec + 1))%R.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(0 <= u_ro)%Rapply Rmult_le_pos; [lra|apply bpow_ge_0]. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(0 <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(u_ro < 1)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(u_ro < 1)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(2 * (/ 2 * bpow (- prec + 1)) < 2 * 1)%Rapply (Rle_lt_trans _ (bpow 0)); [apply bpow_le; omega|simpl; lra]. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(bpow (- prec + 1) < 2)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(0 <= u_ro / (1 + u_ro))%Rapply Rmult_le_pos; [|apply Rlt_le, Rinv_0_lt_compat]; assert (H := u_ro_pos); lra. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(0 <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(u_ro / (1 + u_ro) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> bool(u_ro / (1 + u_ro) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolPu_ro:(0 <= u_ro)%R(u_ro / (1 + u_ro) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolPu_ro:(0 <= u_ro)%R(u_ro / (1 + u_ro) * (1 + u_ro) <= u_ro * (1 + u_ro))%Rassert (0 <= u_ro * u_ro)%R; [apply Rmult_le_pos|]; lra. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolPu_ro:(0 <= u_ro)%R(u_ro * 1 <= u_ro * (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, (Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rapply Rmult_le_pos; [lra|apply bpow_ge_0].beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RZx:x = 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RZx:x = 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rnow unfold Rminus; rewrite Rplus_0_l, Rabs_Ropp, Rabs_R0; right.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RZx:x = 0%R(Rabs (0 - 0) <= 0)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%R(Rabs (rx - x) <= u_ro * ufpx)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%R(Rabs (rx - x) <= u_ro * ufpx)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%R(/ 2 * ulp beta (FLX_exp prec) x)%R = (u_ro * ufpx)%Rrewrite Rmult_assoc, <-bpow_plus; do 2 f_equal; ring.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%R(/ 2 * bpow (mag beta x - prec))%R = (/ 2 * bpow (- prec + 1) * bpow (mag beta x - 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R(ufpx + Rabs (rx - x) <= Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R(ufpx + Rabs (rx - x) <= Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%R(Rabs (rx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(Rabs (rx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(Rabs (rx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(Rabs (rx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(Rabs (rx - x) <= Rabs (ufpx - x))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(Rabs (ufpx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(Rabs (rx - x) <= Rabs (ufpx - x))%Rapply generic_format_bpow; unfold FLX_exp; lia.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%Rgeneric_format beta (FLX_exp prec) ufpxbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(Rabs (ufpx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(x - ufpx <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(0 <= x - ufpx)%Rnow rewrite Rabs_pos_eq; [right; ring|].beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(x - ufpx <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(0 <= x - ufpx)%Rnow rewrite <-(Rabs_pos_eq _ Sx); apply bpow_mag_le.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(0 <= x)%R(ufpx <= x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(Rabs (rx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(Rabs (rx - x) <= Rabs (- ufpx - x))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(Rabs (- ufpx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(Rabs (rx - x) <= Rabs (- ufpx - x))%Rapply generic_format_opp, generic_format_bpow; unfold FLX_exp; lia.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%Rgeneric_format beta (FLX_exp prec) (- ufpx)beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(Rabs (- ufpx - x) <= - ufpx + Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(0 <= - ufpx - x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(x <= - ufpx)%Rrewrite <-mag_opp, <-Rabs_pos_eq; [apply bpow_mag_le|]; lra.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RSx:(x < 0)%R(bpow (mag beta x - 1) <= - x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R(0 < ufpx + Rabs (rx - x))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%Rapply Rplus_lt_le_0_compat; [apply bpow_gt_0|apply Rabs_pos].beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%R(0 < ufpx + Rabs (rx - x))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs ((rx - x) / x) <= Rabs (rx - x) / (ufpx + Rabs (rx - x)))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs (rx - x) / (ufpx + Rabs (rx - x)) <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs ((rx - x) / x) <= Rabs (rx - x) / (ufpx + Rabs (rx - x)))%Rnow rewrite (Rabs_Rinv _ Nzx); apply Rinv_le.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs (/ x) <= / (ufpx + Rabs (rx - x)))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(Rabs (rx - x) / (ufpx + Rabs (rx - x)) <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(0 < (ufpx + Rabs (rx - x)) * (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(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)))%Rapply Rmult_lt_0_compat; lra.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(0 < ufpx + Rabs (rx - x))%R(0 < (ufpx + Rabs (rx - x)) * (1 + u_ro))%Rfield_simplify; [try unfold Rdiv; rewrite ?Rinv_1, ?Rmult_1_r| |]; lra.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(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)))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(Rabs ((rx - x) / x) <= u_ro / (1 + u_ro))%R(Rabs (rx - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(Rabs (rx - x) * / Rabs x <= u_ro * / (1 + u_ro))%R(Rabs (rx - x) <= u_ro * / (1 + u_ro) * Rabs x)%Rnow apply (Rle_trans _ _ _ H); right; field; split; [apply Rabs_no_R0|lra]. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RPu_ro:(0 <= u_ro)%RNzx:x <> 0%Rufpx:=bpow (mag beta x - 1):Rrx:=round beta (FLX_exp prec) (Znearest choice) x:RPufpx:(0 <= ufpx)%RH_2_1:(Rabs (rx - x) <= u_ro * ufpx)%RH_2_3:(ufpx + Rabs (rx - x) <= Rabs x)%RH:(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
1+ε property in rounding to nearest in FLX
beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, exists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rexists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 <= / 2 * bpow (- prec + 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 < / 2 * bpow (- prec + 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 < / 2)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 < bpow (- prec + 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 < 2)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 < bpow (- prec + 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 < bpow (- prec + 1))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_N_FLX. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, exists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rexists eps : R, (Rabs eps <= u_ro / (1 + u_ro))%R /\ round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 <= u_ro / (1 + u_ro))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rapply u_rod1pu_ro_pos.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(0 <= u_ro / (1 + u_ro))%Rnow apply relative_error_N_FLX'. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= u_ro / (1 + u_ro) * Rabs x)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RZfx:rx = 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RZfx:rx = 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RZfx:rx = 0%Rx = (rx * (1 + 0))%Rnow rewrite Zfx in Hd; destruct (Rmult_integral _ _ (sym_eq Hd)); [|lra].beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RZfx:rx = 0%Rx = 0%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RZx:x = 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rnow exfalso; revert Hd; rewrite Zx, Rmult_0_l.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RZx:x = 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs d' <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:RHd':(Rabs d' <= u_ro)%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs d' <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs ((x - x * (1 + d)) / (x * (1 + d))) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs (- d / (1 + d)) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs d * Rabs (/ (1 + d)) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs d * / (1 + d) <= u_ro)%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs d * / (1 + d) * (1 + d) <= u_ro * (1 + d))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(Rabs d <= u_ro * (1 + d))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(u_ro / (1 + u_ro) <= u_ro * (1 + d))%Rapply (Rle_trans _ (1 - u_ro / (1 + u_ro))); [right; field|]; lra.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:R(/ (1 + u_ro) <= 1 + d)%Rnow exists d'; split; [|unfold d'; field]. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx, rx, d:RBd:(Rabs d <= u_ro / (1 + u_ro))%RHd:rx = (x * (1 + d))%RPu_ro:(0 <= u_ro)%RH:(- (u_ro / (1 + u_ro)) <= d <= u_ro / (1 + u_ro))%RH':(u_ro / (1 + u_ro) <= u_ro)%RH'':(u_ro < 1)%RNzfx:rx <> 0%RNzx:x <> 0%Rd':=((x - rx) / rx)%R:RHd':(Rabs d' <= u_ro)%Rexists eps : R, (Rabs eps <= u_ro)%R /\ x = (rx * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, exists eps : R, (Rabs eps <= u_ro)%R /\ x = (round beta (FLX_exp prec) (Znearest choice) x * (1 + eps))%Rintro x; apply relative_error_N_round_ex_derive, relative_error_N_FLX'_ex. Qed.beta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall x : R, exists eps : R, (Rabs eps <= u_ro)%R /\ x = (round beta (FLX_exp prec) (Znearest choice) x * (1 + eps))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rapply 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:radixprec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:R(Rabs (round beta (FLX_exp prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs (round beta (FLX_exp prec) (Znearest choice) x))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zforall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zforall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zk:ZHk:(emin + prec - 1 < k)%Z(prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zk:ZHk:(emin + prec - 1 < k)%Z(prec <= k - Z.max (k - prec) emin)%Zomega. Qed. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.beta:radixemin, prec:ZHp:(0 < prec)%Zk:ZHk:(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)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall x : R, (bpow (emin + prec - 1) <= Rabs x)%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rapply relative_error_FLT_aux. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rforall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (x + - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(0 < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(0 < bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(0 < Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(0 < Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x <= bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x < bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(bpow (emin + prec - 1) <= bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%R(emin + prec - 1 <= emin + prec)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(Rabs x < bpow (emin + prec - 1))%RFIX_format beta emin xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_FLT. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RZx:x <> 0%RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rexists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rx <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_FLT_F2R_emin. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rx <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%R
1+ε property in any rounding in FLT
beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rexists eps : R, (Rabs eps < bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) rnd x = (x * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rx <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rintros _; now apply relative_error_FLT. Qed. Variable choice : Z -> bool.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rx <> 0%R -> (Rabs (round beta (FLT_exp emin prec) rnd x - x) < bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rapply relative_error_FLT_aux. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rforall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Z
1+ε property in rounding to nearest in FLT
beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rexists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(0 < bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_N_FLT. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(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))%Rapply relative_error_FLT_aux. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rforall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (x + - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 < / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x <= bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x < bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(bpow (emin + prec - 1) <= bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(emin + prec - 1 <= emin + prec)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%RFIX_format beta emin xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_N_FLT. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:Rexists eps : R, (Rabs eps <= / 2 * bpow (- prec + 1))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 <= / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 < / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rnow apply relative_error_N_FLT_F2R_emin. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (x - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (x + - x) <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= / 2 * bpow (- prec + 1) * Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 < / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(0 <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x <= bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x < bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(bpow (emin + prec - 1) <= bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%R(emin + prec - 1 <= emin + prec)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%Rgeneric_format beta (FIX_exp emin) xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(Rabs x < bpow (emin + prec - 1))%RFIX_format beta emin xbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(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))%Rapply relative_error_FLT_aux. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolm:Zx:=F2R {| Fnum := m; Fexp := emin |}:RHx:(bpow (emin + prec - 1) <= Rabs x)%Rforall k : Z, (emin + prec - 1 < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%RValid_exp (FLT_exp emin prec)beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Rforall k : Z, (emin + prec < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%R(bpow (emin + prec) <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Rforall k : Z, (emin + prec < k)%Z -> (prec <= k - FLT_exp emin prec k)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%R(bpow (emin + prec) <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Rk:ZH:(emin + prec < k)%Z(prec <= k - Z.max (k - prec) emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%R(bpow (emin + prec) <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%R(bpow (emin + prec) <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2: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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R(Rabs 0 <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2: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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R(0 <= / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R(0 <= bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2: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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%R(0 <= bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2: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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2: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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(bpow (emin + prec) <= x)%Reps:RHeps1:(Rabs eps <= / 2 * bpow (- prec + 1))%RHeps2:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rround beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps) + 0)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(Rabs 0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(0 <= / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(0 <= bpow (- prec + 1))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(Rabs (round beta (FLT_exp emin prec) (Znearest choice) x - x) <= / 2 * ulp beta (FLT_exp emin prec) x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%RValid_exp (FLT_exp emin prec)beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(0 <= / 2)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(ulp beta (FLT_exp emin prec) x <= bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(ulp beta (FLT_exp emin prec) x <= bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(bpow (cexp beta (FLT_exp emin prec) x) <= bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Rx <> 0%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(bpow (cexp beta (FLT_exp emin prec) x) <= bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(cexp beta (FLT_exp emin prec) x <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(Z.max (mag beta x - prec) emin <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(emin <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(mag beta x - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%R(mag beta x - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(e - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(e - 1 < emin + prec)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%RH:(e - 1 < emin + prec)%Z(e - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(bpow (e - 1) < bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%RH:(e - 1 < emin + prec)%Z(e - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(bpow (e - 1) <= x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%RH:(e - 1 < emin + prec)%Z(e - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(bpow (e - 1) <= Rabs x)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%RH:(e - 1 < emin + prec)%Z(e - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(x < bpow (emin + prec))%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%RH:(e - 1 < emin + prec)%Z(e - prec <= emin)%Zbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rsplit ; ring. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:RHx2:(0 < x)%RHx:(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))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rd:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RHd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rd:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RHd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R(Rabs 0 <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rd:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RHd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R(d * 0)%R = 0%R /\ rx = (x * (1 + d) + 0)%Rrewrite Rabs_R0; apply Rmult_le_pos; [lra|apply bpow_ge_0].beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rd:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RHd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R(Rabs 0 <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rd:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RHd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%R(d * 0)%R = 0%R /\ rx = (x * (1 + d) + 0)%Rnow rewrite <- Hd; apply round_FLT_FLX.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMX:(bpow (emin + prec - 1) <= Rabs x)%Rd:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RHd:round beta (FLX_exp prec) (Znearest choice) x = (x * (1 + d))%Rrx = (x * (1 + d))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (rx - x) <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%RH:(Rabs (rx - x) <= / 2 * bpow emin)%Rexists 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)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%R(Rabs (rx - x) <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%R(/ 2 * ulp beta (FLT_exp emin prec) x <= / 2 * bpow emin)%Rapply (Rlt_le_trans _ _ _ Mx), bpow_le; lia.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%R(Rabs x < bpow (emin + prec))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%RH:(Rabs (rx - x) <= / 2 * bpow emin)%Rexists 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)%Rnow rewrite Rmult_0_l, Rplus_0_r, Rmult_1_r; split; [|ring]. Qed.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:RPb:(0 <= u_ro prec / (1 + u_ro prec))%RMx:(Rabs x < bpow (emin + prec - 1))%RH:(Rabs (rx - x) <= / 2 * bpow emin)%R(0 * (rx - x))%R = 0%R /\ rx = (x * (1 + 0) + (rx - x))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolforall 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rround beta (FLT_exp emin prec) (Znearest choice) rx = rxbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ rx = (x + eta)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rround beta (FLT_exp emin prec) (Znearest choice) rx = rxnow apply generic_format_round; [apply FLT_exp_valid|apply valid_rnd_N].beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rgeneric_format beta (FLT_exp emin prec) rxbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ rx = (x + eta)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ rx = (x + eta)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rrx = (x + e)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%RZd:d = 0%R(x * (1 + d) + e)%R = (x + e)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%RZe:e = 0%R(x * (1 + d) + e)%R = (x + e)%Rnow rewrite Zd, Rplus_0_r, Rmult_1_r.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%RZd:d = 0%R(x * (1 + d) + e)%R = (x + e)%Rexfalso; revert HdxLte; rewrite Ze, Rabs_R0; apply Rle_not_lt, Rabs_pos.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%RZe:e = 0%R(x * (1 + d) + e)%R = (x + e)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rexists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rround beta (FLT_exp emin prec) (Znearest choice) rx = (rx * (1 + 0))%Rnow apply generic_format_round; [apply FLT_exp_valid|apply valid_rnd_N].beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHdxLte:(Rabs (d * x) < Rabs e)%Rgeneric_format beta (FLT_exp emin prec) rxbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%Rexists 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:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%Rexists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x = (x + eta)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%Rexists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rexists 0%R; split; [rewrite Rabs_R0; apply Rmult_le_pos; [lra|apply bpow_ge_0]|ring].beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%Rexists eta : R, (Rabs eta <= / 2 * bpow emin)%R /\ x = (x + eta)%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%Rexists eps : R, (Rabs eps <= u_ro prec / (1 + u_ro prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + eps))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZd:d = 0%R(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZe:e = 0%R(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZd:d = 0%R(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZd:d = 0%R(x * (1 + d) + e)%R = (x * (1 + d))%Rbeta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZd:d = 0%Re = 0%Rnow revert HeLedx; rewrite Zd, Rmult_0_l, Rabs_R0.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZd:d = 0%R(Rabs e <= 0)%Rnow rewrite Ze, Rplus_0_r. Qed. End Fprop_relative_FLT.beta:radixemin, prec:ZHp:(0 < prec)%Zrnd:R -> Zvalid_rnd:Valid_rnd rndchoice:Z -> boolx:Rrx:=round beta (FLT_exp emin prec) (Znearest choice) x:Rd, e:RBd:(Rabs d <= u_ro prec / (1 + u_ro prec))%RBe:(Rabs e <= / 2 * bpow emin)%RHde0:(d * e)%R = 0%RHde:round beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + e)%RHeLedx:(Rabs e <= Rabs (d * x))%RZe:e = 0%R(Rabs d <= u_ro prec / (1 + u_ro prec))%R /\ (x * (1 + d) + e)%R = (x * (1 + d))%Rbeta:radixforall 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)%Rbeta:radixforall 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RPx:(x > 0)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%R(0 < - x)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rexists 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)%Rnow rewrite <- Ropp_0; apply Ropp_lt_contravar.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%R(0 < - x)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr: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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr: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%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%Rround beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + - e)%Rnow rewrite Rabs_Ropp.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr: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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr: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%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%Rround beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + - e)%Rnow rewrite Ropp_mult_distr_r_reverse, <- Ropp_0; apply f_equal.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr: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%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr:round beta (FLT_exp emin prec) (Znearest (fun t : Z => negb (choice (- (t + 1))%Z))) (- x) = (- x * (1 + d) + e)%Rround beta (FLT_exp emin prec) (Znearest choice) x = (x * (1 + d) + - e)%Rnow rewrite Ropp_mult_distr_l_reverse, <- Ropp_plus_distr; apply f_equal.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RNx:(x < 0)%RPmx:(0 < - x)%Rd, e:RHd:(Rabs d <= / 2 * bpow (- prec + 1))%RHe:(Rabs e <= / 2 * bpow emin)%RHde:(d * e)%R = 0%RHr: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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RPx:(x > 0)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%R(0 <= / 2)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%R(0 <= / 2)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%R(2 * 0 <= 2 * / 2)%Rapply Rgt_not_eq, Rlt_gt, Rlt_0_2.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%R2%R <> 0%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%Rexists 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)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(Rabs 0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(Rabs 0 <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(0 * 0)%R = 0%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%Rround beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%Rnow rewrite Rabs_R0; apply Rmult_le_pos; [|apply bpow_ge_0].beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(Rabs 0 <= / 2 * bpow (- prec + 1))%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(Rabs 0 <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(0 * 0)%R = 0%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%Rround beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%Rnow rewrite Rabs_R0; apply Rmult_le_pos; [|apply bpow_ge_0].beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(Rabs 0 <= / 2 * bpow emin)%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(0 * 0)%R = 0%Rbeta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%Rround beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%Rnow rewrite Rmult_0_l.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%R(0 * 0)%R = 0%Rnow rewrite Rmult_0_l, Rplus_0_l, round_0; [|apply valid_rnd_N].beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RZx:x = 0%RPh2:(0 <= / 2)%Rround beta (FLT_exp emin prec) (Znearest choice) 0 = (0 * (1 + 0) + 0)%Rnow apply error_N_FLT_aux. Qed. End Fprop_relative.beta:radixemin, prec:ZPprec:(0 < prec)%Zchoice:Z -> boolx:RPx:(x > 0)%Rexists 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