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 Psatz. Require Import Raux Defs Float_prop Generic_fmt. Require Import FIX FLX FLT Ulp Operations. Require Import Relative. Section Fprop_plus_error. Variable beta : radix. Notation bpow e := (bpow beta e). Variable fexp : Z -> Z. Context { valid_exp : Valid_exp fexp }. Section round_repr_same_exp. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall m e : Z, exists m' : Z, round beta fexp rnd (F2R {| Fnum := m; Fexp := e |}) = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall m e : Z, exists m' : Z, round beta fexp rnd (F2R {| Fnum := m; Fexp := e |}) = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Zexists m' : Z, round beta fexp rnd (F2R {| Fnum := m; Fexp := e |}) = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):Zexists m' : Z, round beta fexp rnd (F2R {| Fnum := m; Fexp := e |}) = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- cexp beta fexp (F2R {| Fnum := m; Fexp := e |}))); Fexp := cexp beta fexp (F2R {| Fnum := m; Fexp := e |}) |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := rnd (IZR (Fnum {| Fnum := m; Fexp := e |}) * bpow (Fexp {| Fnum := m; Fexp := e |}) * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := rnd (IZR m * bpow e * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := rnd (IZR m * bpow (e + - e')); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := rnd (IZR m * IZR (beta ^ (e + - e'))); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(0 <= e + - e')%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := rnd (IZR m * IZR (beta ^ (e + - e'))); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%ZF2R {| Fnum := m * beta ^ (e + - e'); Fexp := e' |} = F2R {| Fnum := m; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR (Fnum {| Fnum := m * beta ^ (e + - e'); Fexp := e' |}) * bpow (Fexp {| Fnum := m * beta ^ (e + - e'); Fexp := e' |}))%R = (IZR (Fnum {| Fnum := m; Fexp := e |}) * bpow (Fexp {| Fnum := m; Fexp := e |}))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR (m * beta ^ (e + - e')) * bpow e')%R = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR m * IZR (beta ^ (e + - e')) * bpow e')%R = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR m * (IZR (beta ^ (e + - e')) * bpow e'))%R = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR m * (bpow (e + - e') * bpow e'))%R = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(0 <= e + - e')%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR m * (bpow (e + - e') * bpow e'))%R = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(IZR m * bpow (e + - e' + e'))%R = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e' <= e)%Z(e + - e' + e')%Z = ebeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Zexists m' : Z, F2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := m'; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%ZF2R {| Fnum := rnd (F2R {| Fnum := m; Fexp := e |} * bpow (- e')); Fexp := e' |} = F2R {| Fnum := rnd (IZR m * bpow (e - e')) * beta ^ (e' - e); Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (Fnum {| Fnum := rnd (IZR (Fnum {| Fnum := m; Fexp := e |}) * bpow (Fexp {| Fnum := m; Fexp := e |}) * bpow (- e')); Fexp := e' |}) * bpow (Fexp {| Fnum := rnd (IZR (Fnum {| Fnum := m; Fexp := e |}) * bpow (Fexp {| Fnum := m; Fexp := e |}) * bpow (- e')); Fexp := e' |}))%R = (IZR (Fnum {| Fnum := rnd (IZR m * bpow (e - e')) * beta ^ (e' - e); Fexp := e |}) * bpow (Fexp {| Fnum := rnd (IZR m * bpow (e - e')) * beta ^ (e' - e); Fexp := e |}))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (rnd (IZR m * bpow e * bpow (- e'))) * bpow e')%R = (IZR (rnd (IZR m * bpow (e - e')) * beta ^ (e' - e)) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (rnd (IZR m * bpow e * bpow (- e'))) * bpow e')%R = (IZR (rnd (IZR m * bpow (e - e'))) * IZR (beta ^ (e' - e)) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (rnd (IZR m * bpow e * bpow (- e'))) * bpow e')%R = (IZR (rnd (IZR m * bpow (e - e'))) * bpow (e' - e) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(0 <= e' - e)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (rnd (IZR m * bpow e * bpow (- e'))) * bpow e')%R = (IZR (rnd (IZR m * bpow (e - e'))) * bpow (e' - e) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (rnd (IZR m * (bpow e * bpow (- e')))) * bpow e')%R = (IZR (rnd (IZR m * bpow (e - e'))) * (bpow (e' - e) * bpow e))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Z(IZR (rnd (IZR m * bpow (e + - e'))) * bpow e')%R = (IZR (rnd (IZR m * bpow (e - e'))) * bpow (e' - e + e))%Rring. Qed. End round_repr_same_exp. Context { monotone_exp : Monotone_exp fexp }. Notation format := (generic_format beta fexp). Variable choice : Z -> bool.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndm, e:Ze':=cexp beta fexp (F2R {| Fnum := m; Fexp := e |}):ZHe:(e < e')%Ze' = (e' - e + e)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolforall x y : R, (cexp beta fexp x <= cexp beta fexp y)%Z -> format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolforall x y : R, (cexp beta fexp x <= cexp beta fexp y)%Z -> format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:R(cexp beta fexp x <= cexp beta fexp y)%Z -> format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Z(ex <= cexp beta fexp y)%Z -> format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:Z(ex <= ey)%Z -> format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yformat (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R = R0format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R = R0format R0beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zformat (round beta fexp (Znearest choice) (x + y) - (x + y))(* *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):Zformat (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):Z(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):Z(F2R {| Fnum := Ztrunc (scaled_mantissa beta fexp x); Fexp := cexp beta fexp x |} + F2R {| Fnum := Ztrunc (scaled_mantissa beta fexp y); Fexp := cexp beta fexp y |})%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):Z(F2R {| Fnum := mx; Fexp := ex |} + F2R {| Fnum := my; Fexp := ey |})%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZF2R (Fplus {| Fnum := mx; Fexp := ex |} {| Fnum := my; Fexp := ey |}) = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZF2R (let '(m1, m2, e) := Falign {| Fnum := mx; Fexp := ex |} {| Fnum := my; Fexp := ey |} in {| Fnum := m1 + m2; Fexp := e |}) = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZF2R (let '(m1, m2, e) := if (ex <=? ey)%Z then (mx, (my * beta ^ (ey - ex))%Z, ex) else ((mx * beta ^ (ex - ey))%Z, my, ey) in {| Fnum := m1 + m2; Fexp := e |}) = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))(* *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}format (round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}format (round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}format (F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}format (F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}format (F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}format (F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(mxy - (mx + my * beta ^ (ey - ex)))%Z <> 0%Z -> (cexp beta fexp (F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}) <= ex)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(cexp beta fexp (F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}) <= ex)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(mag beta (F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}) <= mag beta x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(mag beta (round beta fexp (Znearest choice) (x + y) - (x + y)) <= mag beta x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs (- (y - (x + y))))%Rnow apply (round_N_pt beta _ choice (x + y)). Qed.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:Rex:=cexp beta fexp x:Zey:=cexp beta fexp y:ZHe:(ex <= ey)%ZHx:format xHy:format yH0:(round beta fexp (Znearest choice) (x + y) - (x + y))%R <> R0mx:=Ztrunc (scaled_mantissa beta fexp x):Zmy:=Ztrunc (scaled_mantissa beta fexp y):ZHxy:(x + y)%R = F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}mxy:ZHxy':round beta fexp (Znearest choice) (F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |}) = F2R {| Fnum := mxy; Fexp := ex |}H:(F2R {| Fnum := mxy; Fexp := ex |} - F2R {| Fnum := mx + my * beta ^ (ey - ex); Fexp := ex |})%R = F2R {| Fnum := mxy - (mx + my * beta ^ (ey - ex)); Fexp := ex |}(Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs (y - (x + y)))%R
Error of the addition
beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolforall x y : R, format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolforall x y : R, format x -> format y -> format (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:RHx:format xHy:format yformat (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:RHx:format xHy:format yH:(cexp beta fexp x <= cexp beta fexp y)%Zformat (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:RHx:format xHy:format yH:(cexp beta fexp y < cexp beta fexp x)%Zformat (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:RHx:format xHy:format yH:(cexp beta fexp y < cexp beta fexp x)%Zformat (round beta fexp (Znearest choice) (x + y) - (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:RHx:format xHy:format yH:(cexp beta fexp y < cexp beta fexp x)%Zformat (round beta fexp (Znearest choice) (y + x) - (y + x))now apply Zlt_le_weak. Qed. End Fprop_plus_error. Section Fprop_plus_zero. Variable beta : radix. Notation bpow e := (bpow beta e). Variable fexp : Z -> Z. Context { valid_exp : Valid_exp fexp }. Context { exp_not_FTZ : Exp_not_FTZ fexp }. Notation format := (generic_format beta fexp). Section round_plus_eq_zero_aux. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexpchoice:Z -> boolx, y:RHx:format xHy:format yH:(cexp beta fexp y < cexp beta fexp x)%Z(cexp beta fexp y <= cexp beta fexp x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, (cexp beta fexp x <= cexp beta fexp y)%Z -> format x -> format y -> (0 < x + y)%R -> round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, (cexp beta fexp x <= cexp beta fexp y)%Z -> format x -> format y -> (0 < x + y)%R -> round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(x + y)%R <> 0%R -> (bpow (exy - 1) <= Rabs (x + y) < bpow exy)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(x + y)%R <> 0%R -> (bpow (exy - 1) <= Rabs (x + y) < bpow exy)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%Rround beta fexp rnd (x + y) <> 0%R(* . *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%Z(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%Z(F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)); Fexp := fexp exy |} + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%Z(F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)); Fexp := fexp exy |} + F2R {| Fnum := Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |})%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}round beta fexp rnd (F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |} <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}format (F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}(x + y)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}format (F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}format (F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |})beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}(Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)))%Z <> 0%Z -> (cexp beta fexp (F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}) <= fexp exy)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}(cexp beta fexp (F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}) <= fexp exy)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}(cexp beta fexp (x + y) <= fexp exy)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}(fexp (mag beta (x + y)) <= fexp exy)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(exy <= fexp exy)%ZH:(x + y)%R = F2R {| Fnum := Ztrunc (x * bpow (- fexp exy)) + Ztrunc (y * bpow (- fexp exy)); Fexp := fexp exy |}(fexp exy <= fexp exy)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%R(* . *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%RFalsebeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%R(round beta fexp rnd (Rabs (x + y)) < round beta fexp rnd (bpow (exy - 1)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%R(round beta fexp rnd (x + y) < round beta fexp rnd (bpow (exy - 1)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%R(0 < round beta fexp rnd (bpow (exy - 1)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%R(0 < bpow (exy - 1))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%Rformat (bpow (exy - 1))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%Rformat (bpow (exy - 1))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%R(fexp (exy - 1 + 1) <= exy - 1)%Znow rewrite (Zsucc_pred exy) in He'. Qed. End round_plus_eq_zero_aux. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHe:(cexp beta fexp x <= cexp beta fexp y)%ZHx:format xHy:format yHxy:(0 < x + y)%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x + y) < bpow exy)%RHe':(fexp exy < exy)%ZH:round beta fexp rnd (x + y) = 0%R(fexp (exy - 1 + 1) < Z.succ (exy - 1))%Z
rnd(x+y)=0 -> x+y = 0 provided this is not a FTZ format
beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> (x + y)%R <> 0%R -> round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> (x + y)%R <> 0%R -> round beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%Rround beta fexp rnd (x + y) <> 0%R(* . *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp x <= cexp beta fexp y)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp x <= cexp beta fexp y)%Z(0 < x + y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Zround beta fexp rnd (y + x) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Z(cexp beta fexp y <= cexp beta fexp x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Z(0 < y + x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(0 <= x + y)%RH2:(cexp beta fexp y < cexp beta fexp x)%Z(0 < y + x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%R(* . *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp rnd (- (- x + - y)) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%R(- round beta fexp (Zrnd_opp rnd) (- x + - y))%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%Rround beta fexp (Zrnd_opp rnd) (- x + - y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- x) <= cexp beta fexp (- y))%Zround beta fexp (Zrnd_opp rnd) (- x + - y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Zround beta fexp (Zrnd_opp rnd) (- x + - y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- x) <= cexp beta fexp (- y))%Z(0 < - x + - y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Zround beta fexp (Zrnd_opp rnd) (- x + - y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Zround beta fexp (Zrnd_opp rnd) (- x + - y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Zround beta fexp (Zrnd_opp rnd) (- y + - x) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Z(cexp beta fexp (- y) <= cexp beta fexp (- x))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Z(0 < - y + - x)%Rlra. Qed.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x + y)%R <> 0%RH1:(x + y < 0)%RH2:(cexp beta fexp (- y) < cexp beta fexp (- x))%Z(0 < - y + - x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> round beta fexp rnd (x + y) = 0%R -> (x + y)%R = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> round beta fexp rnd (x + y) = 0%R -> (x + y)%R = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yH:round beta fexp rnd (x + y) = 0%R(x + y)%R = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yH:round beta fexp rnd (x + y) = 0%RH':(x + y)%R = 0%R(x + y)%R = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yH:round beta fexp rnd (x + y) = 0%RH':(x + y)%R <> 0%R(x + y)%R = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yH:round beta fexp rnd (x + y) = 0%RH':(x + y)%R <> 0%R(x + y)%R = 0%Rnow apply round_plus_neq_0. Qed. End Fprop_plus_zero. Section Fprop_plus_FLT. Variable beta : radix. Notation bpow e := (bpow beta e). Variable emin prec : Z. Context { prec_gt_0_ : Prec_gt_0 prec }.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpexp_not_FTZ:Exp_not_FTZ fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yH':(x + y)%R <> 0%Rround beta fexp rnd (x + y) <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precforall x y : R, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (Rabs (x + y) <= bpow (prec + emin))%R -> generic_format beta (FLT_exp emin prec) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precforall x y : R, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (Rabs (x + y) <= bpow (prec + emin))%R -> generic_format beta (FLT_exp emin prec) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FLT_exp emin prec) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH:(Rabs (x + y) <= bpow (prec + emin))%R(Rabs (x + y) <= bpow (emin + prec))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FIX_exp emin) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FIX_exp emin) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:RFx:FIX_format beta emin xFy:generic_format beta (FLT_exp emin prec) yH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FIX_exp emin) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:RFx:FIX_format beta emin xFy:FIX_format beta emin yH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FIX_exp emin) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminFy:FIX_format beta emin yH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FIX_exp emin) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%Rgeneric_format beta (FIX_exp emin) (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%RFIX_format beta emin (x + y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%R(x + y)%R = F2R {| Fnum := Fnum nx + Fnum ny; Fexp := emin |}beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%RFexp {| Fnum := Fnum nx + Fnum ny; Fexp := emin |} = eminbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%R(IZR (Fnum nx) * bpow (Fexp nx) + IZR (Fnum ny) * bpow (Fexp ny))%R = (IZR (Fnum nx + Fnum ny) * bpow emin)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%RFexp {| Fnum := Fnum nx + Fnum ny; Fexp := emin |} = eminbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%R(IZR (Fnum nx) * bpow emin + IZR (Fnum ny) * bpow emin)%R = (IZR (Fnum nx + Fnum ny) * bpow emin)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%RFexp {| Fnum := Fnum nx + Fnum ny; Fexp := emin |} = emineasy. Qed. Variable choice : Z -> bool.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Rnx:float betaH1x:x = F2R nxH2x:Fexp nx = eminny:float betaH1y:y = F2R nyH2y:Fexp ny = eminH:(Rabs (x + y) <= bpow (prec + emin))%RFexp {| Fnum := Fnum nx + Fnum ny; Fexp := emin |} = eminbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolforall x y : R, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> exists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolforall x y : R, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> exists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%Rexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(bpow (emin + prec - 1) <= Rabs (x + y))%Rexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(Rabs (x + y) < bpow (emin + prec - 1))%Rexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(bpow (emin + prec - 1) <= Rabs (x + y))%Rexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rnow exists d; split; [exact Bd|]; rewrite <- Hd; apply round_FLT_FLX.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(bpow (emin + prec - 1) <= Rabs (x + y))%Rd:RBd:(Rabs d <= u_ro beta prec / (1 + u_ro beta prec))%RHd:round beta (FLX_exp prec) (Znearest choice) (x + y) = ((x + y) * (1 + d))%Rexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(Rabs (x + y) < bpow (emin + prec - 1))%Rexists eps : R, (Rabs eps <= u_ro beta prec / (1 + u_ro beta prec))%R /\ round beta (FLT_exp emin prec) (Znearest choice) (x + y) = ((x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(Rabs (x + y) < bpow (emin + prec - 1))%Rround beta (FLT_exp emin prec) (Znearest choice) (x + y) = (x + y)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(Rabs (x + y) < bpow (emin + prec - 1))%Rgeneric_format beta (FLT_exp emin prec) (x + y)apply Rlt_le, (Rlt_le_trans _ _ _ M), bpow_le; lia. Qed.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yPb:(0 <= u_ro beta prec / (1 + u_ro beta prec))%RM:(Rabs (x + y) < bpow (emin + prec - 1))%R(Rabs (x + y) <= bpow (prec + emin))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolforall x y : R, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> exists eps : R, (Rabs eps <= u_ro beta prec)%R /\ (x + y)%R = (round beta (FLT_exp emin prec) (Znearest choice) (x + y) * (1 + eps))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolforall x y : R, generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> exists eps : R, (Rabs eps <= u_ro beta prec)%R /\ (x + y)%R = (round beta (FLT_exp emin prec) (Znearest choice) (x + y) * (1 + eps))%Rnow apply relative_error_N_round_ex_derive, FLT_plus_error_N_ex. Qed. End Fprop_plus_FLT. Section Fprop_plus_mult_ulp. Variable beta : radix. Notation bpow e := (bpow beta e). Variable fexp : Z -> Z. Context { valid_exp : Valid_exp fexp }. Context { monotone_exp : Monotone_exp fexp }. Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }. Notation format := (generic_format beta fexp). Notation cexp := (cexp beta fexp).beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precchoice:Z -> boolx, y:RFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yexists eps : R, (Rabs eps <= u_ro beta prec)%R /\ (x + y)%R = (round beta (FLT_exp emin prec) (Znearest choice) (x + y) * (1 + eps))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> (e <= cexp x)%Z -> exists m : Z, x = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> (e <= cexp x)%Z -> exists m : Z, x = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Zexists m : Z, x = (IZR m * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Zx = (IZR (Ztrunc (scaled_mantissa beta fexp x) * beta ^ (cexp x - e)) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Z(IZR (Ztrunc (scaled_mantissa beta fexp x)) * bpow (cexp x))%R = (IZR (Ztrunc (scaled_mantissa beta fexp x) * beta ^ (cexp x - e)) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Z(IZR (Ztrunc (scaled_mantissa beta fexp x)) * bpow (cexp x))%R = (IZR (Ztrunc (scaled_mantissa beta fexp x)) * (IZR (beta ^ (cexp x - e)) * bpow e))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Zbpow (cexp x) = (IZR (beta ^ (cexp x - e)) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Zbpow (cexp x) = (bpow (cexp x - e) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Z(0 <= cexp x - e)%Zrewrite <- bpow_plus; f_equal; ring. Qed.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(e <= cexp x)%Zbpow (cexp x) = (bpow (cexp x - e) * bpow e)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall z : R, z <> 0%R -> (mag beta z - 1)%Z = mag beta (z / IZR beta)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall z : R, z <> 0%R -> (mag beta z - 1)%Z = mag beta (z / IZR beta)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndz:RHz:z <> 0%R(mag beta z - 1)%Z = mag beta (z / IZR beta)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndz:RHz:z <> 0%R(mag beta z + - (1))%Z = mag beta (z / IZR beta)now rewrite bpow_opp, bpow_1. Qed.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndz:RHz:z <> 0%Rmag beta (z * bpow (- (1))) = mag beta (z / IZR beta)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> x <> 0%R -> exists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> x <> 0%R -> exists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%Rexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Z(e <= cexp x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Z(mag beta (x / IZR beta) <= mag beta x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%R(e <= cexp y)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rny:ZHny:y = (IZR ny * bpow e)%Rexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rny:ZHny:y = (IZR ny * bpow e)%Rexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rny:ZHny:y = (IZR ny * bpow e)%Rn:ZHn:round beta fexp rnd (F2R {| Fnum := nx + ny; Fexp := e |}) = F2R {| Fnum := n; Fexp := e |}exists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rny:ZHny:y = (IZR ny * bpow e)%Rn:ZHn:round beta fexp rnd (F2R {| Fnum := nx + ny; Fexp := e |}) = F2R {| Fnum := n; Fexp := e |}round beta fexp rnd (x + y) = F2R {| Fnum := n; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rny:ZHny:y = (IZR ny * bpow e)%Rn:ZHn:round beta fexp rnd (F2R {| Fnum := nx + ny; Fexp := e |}) = F2R {| Fnum := n; Fexp := e |}round beta fexp rnd (x + y) = F2R {| Fnum := n; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta (x / IZR beta) <= mag beta y)%Ze:=cexp (x / IZR beta):Znx:ZHnx:x = (IZR nx * bpow e)%Rny:ZHny:y = (IZR ny * bpow e)%Rn:ZHn:round beta fexp rnd (F2R {| Fnum := nx + ny; Fexp := e |}) = F2R {| Fnum := n; Fexp := e |}(x + y)%R = F2R {| Fnum := nx + ny; Fexp := e |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}(* *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zformat (round beta fexp rnd (x + y))beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x / IZR beta) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x / IZR beta) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x / IZR beta) <= cexp (x + y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(mag beta (x / IZR beta) <= mag beta (x + y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(mag beta x - 1 <= mag beta (x + y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%R(* . *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zforall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(0 <= x)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(0 <= x)%RRabs (x + y) = (Rabs x + y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - y)%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(0 <= x)%RRabs (x + y) = (x + y)%R \/ y <> 0%R /\ Rabs (x + y) = (x - y)%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(0 <= x)%R(0 <= x + y)%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%R(y <= - x)%R -> Rabs (x + y) = (- x + y)%R \/ y <> 0%R /\ Rabs (x + y) = (- x - y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%RH:(y <= - x)%Ry <> 0%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%RH:(y <= - x)%RRabs (x + y) = (- x - y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%RH:(y <= - x)%RRabs (x + y) = (- x - y)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%RH:(y <= - x)%R(- (x + y))%R = (- x - y)%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%RH:(y <= - x)%R(x + y <= 0)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':(0 < y)%RHx:(x < 0)%RH:(y <= - x)%R(x + y <= 0)%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':0%R = y(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(0 <= y)%RHy':0%R = yRabs (x + y) = (Rabs x + Rabs y)%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%R(- y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + - y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - - y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%R(- y <= x)%R -> Rabs (x + y) = (x + - y)%R \/ y <> 0%R /\ Rabs (x + y) = (x - - y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%RH:(- y <= x)%Ry <> 0%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%RH:(- y <= x)%RRabs (x + y) = (x - - y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%RH:(- y <= x)%RRabs (x + y) = (x - - y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%RH:(- y <= x)%R(x + y)%R = (x - - y)%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%RH:(- y <= x)%R(0 <= x + y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(0 <= x)%RH:(- y <= x)%R(0 <= x + y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(Rabs y <= Rabs x)%R -> Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(x < 0)%RRabs (x + y) = (Rabs x + Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(x < 0)%RRabs (x + y) = (Rabs x + - y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(x < 0)%RRabs (x + y) = (- x + - y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(- (x + y))%R = (- x + - y)%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(x + y <= 0)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rx, y:RHy:(y < 0)%RHx:(x < 0)%R(x + y <= 0)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%RRabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%R(Rabs y < Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%R(0 < Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%R(mag beta (Rabs y) < mag beta (Rabs x))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%R(mag beta (Rabs y) < mag beta (Rabs x))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta x - 1)%ZV:forall x0 y0 : R, (Rabs y0 <= Rabs x0)%R -> Rabs (x0 + y0) = (Rabs x0 + Rabs y0)%R \/ y0 <> 0%R /\ Rabs (x0 + y0) = (Rabs x0 - Rabs y0)%R(mag beta (Rabs y) < mag beta (Rabs x))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%R(* . *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R \/ y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(mag beta x - 1 <= mag beta x)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(mag beta x <= mag beta (Rabs x + Rabs y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(mag beta x <= mag beta (Rabs x + Rabs y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(mag beta (Rabs x) <= mag beta (Rabs x + Rabs y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(0 < Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(Rabs x <= Rabs x + Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(Rabs x <= Rabs x + Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:Rabs (x + y) = (Rabs x + Rabs y)%R(0 <= Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU:y <> 0%R /\ Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta x - 1 <= mag beta (Rabs x - Rabs y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta (Rabs x) - 1 <= mag beta (Rabs x - Rabs y))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(0 < Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(0 < Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta (Rabs y) <= mag beta (Rabs x) - 2)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(0 < Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta (Rabs y) <= mag beta (Rabs x) - 2)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta (Rabs y) <= mag beta (Rabs x) - 2)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta y <= mag beta x - 2)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%R(mag beta y < mag beta x - 1)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%RH:(mag beta y < mag beta x - 1)%Z(mag beta y <= mag beta x - 2)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%ZU':y <> 0%RU:Rabs (x + y) = (Rabs x - Rabs y)%RH:(mag beta y < mag beta x - 1)%Z(mag beta y <= mag beta x - 2)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(cexp (x + y) <= cexp (round beta fexp rnd (x + y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zround beta fexp rnd (x + y) <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Z(x + y)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(x + y)%R = 0%R(mag beta (x / IZR beta) <= mag beta y)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(x + y)%R = 0%R(mag beta x - 1 <= mag beta y)%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(x + y)%R = 0%R(mag beta x - 1 <= mag beta (- x))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(x + y)%R = 0%R(- x)%R = ybeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(x + y)%R = 0%R(- x)%R = ybeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rnow exists n. Qed. Context {exp_not_FTZ : Exp_not_FTZ fexp}.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RFx:format xFy:format yZx:x <> 0%RH1:(mag beta y < mag beta (x / IZR beta))%Zn:ZHn:round beta fexp rnd (x + y) = (IZR n * bpow (cexp (x / IZR beta)))%Rexists m : Z, round beta fexp rnd (x + y) = (IZR m * bpow (cexp (x / IZR beta)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpforall x y : R, format x -> format y -> round beta fexp rnd (x + y) <> 0%R -> (ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpforall x y : R, format x -> format y -> round beta fexp rnd (x + y) <> 0%R -> (ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%R(* *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp (0 / IZR beta) <= Rabs (round beta fexp rnd y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp (0 / IZR beta) <= Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp 0 <= Rabs y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp 0 <= Rabs (F2R {| Fnum := Ztrunc (scaled_mantissa beta fexp y); Fexp := cexp y |}))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * Rabs (bpow (cexp y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%R(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) = 0%Z(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) = 0%Zround beta fexp rnd (x + y) = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) = 0%Zround beta fexp rnd (0 + 0 * bpow (cexp y)) = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) = 0%Zround beta fexp rnd 0 = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= 1 * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(ulp beta fexp 0 <= ulp beta fexp y)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Zy <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Zy <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%ZK:y = 0%RZtrunc (scaled_mantissa beta fexp y) = 0%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%ZK:y = 0%RZtrunc 0 = 0%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 * bpow (cexp y) <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))) * bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(0 <= bpow (cexp y))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 <= Rabs (IZR (Ztrunc (scaled_mantissa beta fexp y))))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 <= IZR (Z.abs (Ztrunc (scaled_mantissa beta fexp y))))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(1 <= Z.abs (Ztrunc (scaled_mantissa beta fexp y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x = 0%RHm:Ztrunc (scaled_mantissa beta fexp y) <> 0%Z(0 < Z.abs (Ztrunc (scaled_mantissa beta fexp y)))%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%R(* *)beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m = 0%Z(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m = 0%Zround beta fexp rnd (x + y) = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m = 0%ZF2R {| Fnum := 0; Fexp := cexp (x / IZR beta) |} = 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(ulp beta fexp (x / IZR beta) <= Rabs (round beta fexp rnd (x + y)))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(ulp beta fexp (x / IZR beta) <= F2R {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |})%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(bpow (cexp (x / IZR beta)) <= F2R {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |})%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(1 * bpow (cexp (x / IZR beta)) <= F2R {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |})%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(0 <= bpow (Fexp {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |}))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(1 <= IZR (Fnum {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |}))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(1 <= IZR (Fnum {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |}))%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(1 <= Fnum {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |})%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(0 < Fnum {| Fnum := Z.abs m; Fexp := cexp (x / IZR beta) |})%Zbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(x / IZR beta)%R <> 0%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%Z(/ IZR beta)%R <> 0%Rapply Rgt_not_eq, radix_pos. Qed. End Fprop_plus_mult_ulp. Section Fprop_plus_ge_ulp. Variable beta : radix. Notation bpow e := (bpow beta e). Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }. Variable emin prec : Z. Context { prec_gt_0_ : Prec_gt_0 prec }.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpmonotone_exp:Monotone_exp fexprnd:R -> Zvalid_rnd:Valid_rnd rndexp_not_FTZ:Exp_not_FTZ fexpx, y:RFx:format xFy:format yKK:round beta fexp rnd (x + y) <> 0%RZx:x <> 0%Rm:ZHm:round beta fexp rnd (x + y) = F2R {| Fnum := m; Fexp := cexp (x / IZR beta) |}Zm:m <> 0%ZIZR beta <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precforall (x y : R) (e : Z), generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (bpow (e + prec) <= Rabs x)%R -> round beta (FLT_exp emin prec) rnd (x + y) <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precforall (x y : R) (e : Z), generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (bpow (e + prec) <= Rabs x)%R -> round beta (FLT_exp emin prec) rnd (x + y) <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%Rx <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RHe:x = 0%R~ (bpow (e + prec) <= Rabs x)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RHe:x = 0%R(0 < bpow (e + prec))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= ulp beta (FLT_exp emin prec) (x / IZR beta))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta (FLT_exp emin prec) (x / IZR beta) <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= ulp beta (FLT_exp emin prec) (x / IZR beta))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= bpow (cexp beta (FLT_exp emin prec) (x / IZR beta)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= bpow (FLT_exp emin prec (mag beta (x / IZR beta))))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= bpow (FLT_exp emin prec (mag beta x - 1)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(e <= Z.max (mag beta x - 1 - prec) emin)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(e <= mag beta x - 1 - prec)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(e <= n - 1 - prec)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(e + prec < n)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(bpow (e + prec) < bpow n)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(Rabs x < bpow n)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(/ IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%RIZR beta <> 0%Rapply radix_pos. Qed.beta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RZx:x <> 0%R(IZR beta > 0)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precforall (x y : R) (e : Z), generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (x <> 0%R -> (bpow (e + prec) <= Rabs x)%R) -> (x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%R) -> round beta (FLT_exp emin prec) rnd (x + y) <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precforall (x y : R) (e : Z), generic_format beta (FLT_exp emin prec) x -> generic_format beta (FLT_exp emin prec) y -> (x <> 0%R -> (bpow (e + prec) <= Rabs x)%R) -> (x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%R) -> round beta (FLT_exp emin prec) rnd (x + y) <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x = 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x = 0%RH5:y = 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x = 0%RH5:y <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH4:x = 0%RH5:y = 0%Rround beta (FLT_exp emin prec) rnd (x + y) = 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x = 0%RH5:y <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x = 0%RH5:y <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x = 0%RH5:y <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd y))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x + y)))%Rnow apply H1. Qed.beta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLT_exp emin prec) xFy:generic_format beta (FLT_exp emin prec) yH1:x <> 0%R -> (bpow (e + prec) <= Rabs x)%RH2:x = 0%R -> y <> 0%R -> (bpow e <= Rabs y)%RH3:round beta (FLT_exp emin prec) rnd (x + y) <> 0%RH4:x <> 0%R(bpow (e + prec) <= Rabs x)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precforall (x y : R) (e : Z), generic_format beta (FLX_exp prec) x -> generic_format beta (FLX_exp prec) y -> (bpow (e + prec) <= Rabs x)%R -> round beta (FLX_exp prec) rnd (x + y) <> 0%R -> (bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precforall (x y : R) (e : Z), generic_format beta (FLX_exp prec) x -> generic_format beta (FLX_exp prec) y -> (bpow (e + prec) <= Rabs x)%R -> round beta (FLX_exp prec) rnd (x + y) <> 0%R -> (bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%R(bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%Rx <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RHe:x = 0%R~ (bpow (e + prec) <= Rabs x)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RHe:x = 0%R(0 < bpow (e + prec))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= ulp beta (FLX_exp prec) (x / IZR beta))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(ulp beta (FLX_exp prec) (x / IZR beta) <= Rabs (round beta (FLX_exp prec) rnd (x + y)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= ulp beta (FLX_exp prec) (x / IZR beta))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= bpow (cexp beta (FLX_exp prec) (x / IZR beta)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= bpow (FLX_exp prec (mag beta (x / IZR beta))))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(bpow e <= bpow (FLX_exp prec (mag beta x - 1)))%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(e <= mag beta x - 1 - prec)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(e <= n - 1 - prec)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(e + prec < n)%Zbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(bpow (e + prec) < bpow n)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%Rn:ZHn:x <> 0%R -> (bpow (n - 1) <= Rabs x < bpow n)%R(Rabs x < bpow n)%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(x / IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(/ IZR beta)%R <> 0%Rbeta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%RIZR beta <> 0%Rapply radix_pos. Qed. End Fprop_plus_ge_ulp. Section Fprop_plus_le_ops. Variable beta : radix. Variable fexp : Z -> Z. Context { valid_exp : Valid_exp fexp }. Variable choice : Z -> bool.beta:radixrnd:R -> Zvalid_rnd:Valid_rnd rndemin, prec:Zprec_gt_0_:Prec_gt_0 precx, y:Re:ZFx:generic_format beta (FLX_exp prec) xFy:generic_format beta (FLX_exp prec) yHe:(bpow (e + prec) <= Rabs x)%RKK:round beta (FLX_exp prec) rnd (x + y) <> 0%RZx:x <> 0%R(IZR beta > 0)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpchoice:Z -> boolforall x y : R, generic_format beta fexp x -> generic_format beta fexp y -> (Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpchoice:Z -> boolforall x y : R, generic_format beta fexp x -> generic_format beta fexp y -> (Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpchoice:Z -> boolx, y:RFx:generic_format beta fexp xFy:generic_format beta fexp y(Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs x)%Rrewrite Rabs_minus_sym; right; f_equal; ring. Qed.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpchoice:Z -> boolx, y:RFx:generic_format beta fexp xFy:generic_format beta fexp y(Rabs (y - (x + y)) <= Rabs x)%Rbeta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpchoice:Z -> boolforall x y : R, generic_format beta fexp x -> generic_format beta fexp y -> (Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs y)%Rnow intros x y Fx Fy; rewrite Rplus_comm; apply plus_error_le_l. Qed. End Fprop_plus_le_ops.beta:radixfexp:Z -> Zvalid_exp:Valid_exp fexpchoice:Z -> boolforall x y : R, generic_format beta fexp x -> generic_format beta fexp y -> (Rabs (round beta fexp (Znearest choice) (x + y) - (x + y)) <= Rabs y)%R