Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
This file is part of the Flocq formalization of floating-point
arithmetic in Coq: http://flocq.gforge.inria.fr/
Copyright (C) 2010-2018 Sylvie Boldo
Copyright (C) 2010-2018 Guillaume Melquiond
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
COPYING file for more details.
Copyright (C) 2010-2018 Guillaume Melquiond
Require Import Core Operations Plus_error. Section Fprop_mult_error. Variable beta : radix. Notation bpow e := (bpow beta e). Variable prec : Z. Context { prec_gt_0_ : Prec_gt_0 prec }. Notation format := (generic_format beta (FLX_exp prec)). Notation cexp := (cexp beta (FLX_exp prec)). Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.
Auxiliary result that provides the exponent
beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> (round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%R -> exists f : float beta, F2R f = (round beta (FLX_exp prec) rnd (x * y) - x * y)%R /\ (cexp (F2R f) <= Fexp f)%Z /\ Fexp f = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> (round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%R -> exists f : float beta, F2R f = (round beta (FLX_exp prec) rnd (x * y) - x * y)%R /\ (cexp (F2R f) <= Fexp f)%Z /\ Fexp f = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rexists f : float beta, F2R f = (round beta (FLX_exp prec) rnd (x * y) - x * y)%R /\ (cexp (F2R f) <= Fexp f)%Z /\ Fexp f = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R = 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R = 0%R(round beta (FLX_exp prec) rnd (x * y) - x * y)%R = 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R = 0%R(round beta (FLX_exp prec) rnd 0 - 0)%R = 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R = 0%R(0 - 0)%R = 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(x * y)%R <> 0%R -> (bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(f - x * y)%R <> 0%R -> (bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rx <> 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RHxy0:x = 0%R(x * y)%R = 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%Ry <> 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHxy0:y = 0%R(x * y)%R = 0%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Z(* *)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(mag beta (x * y) - prec - prec <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(mag beta (x * y) - prec - prec <= ex - prec + (mag beta y - prec))%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(mag beta (x * y) - prec - prec <= ex - prec + (ey - prec))%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(exy - prec - prec <= ex - prec + (ey - prec))%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(exy - 1 < ex + ey)%Z -> (exy - prec - prec <= ex - prec + (ey - prec))%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(exy - 1 < ex + ey)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(exy - 1 < ex + ey)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(bpow (exy - 1) < bpow (ex + ey))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs (x * y) < bpow (ex + ey))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs x * Rabs y < bpow (ex + ey))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs x * Rabs y < bpow ex * bpow ey)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(0 <= Rabs x)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(0 <= Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs x < bpow ex)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs y < bpow ey)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(0 <= Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs x < bpow ex)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs y < bpow ey)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs x < bpow ex)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs y < bpow ey)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%R(Rabs y < bpow ey)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Z(* *)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(cexp x + cexp y <= cexp (x * y))%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(mag beta x - prec + (mag beta y - prec) <= mag beta (x * y) - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - prec + (mag beta y - prec) <= mag beta (x * y) - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - prec + (ey - prec) <= mag beta (x * y) - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - prec + (ey - prec) <= exy - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - 1 + (ey - 1) < exy)%Z -> (ex - prec + (ey - prec) <= exy - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - 1 + (ey - 1) < exy)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(0 < prec)%Z -> (ex - 1 + (ey - 1) < exy)%Z -> (ex - prec + (ey - prec) <= exy - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - 1 + (ey - 1) < exy)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(ex - 1 + (ey - 1) < exy)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1 + (ey - 1)) < bpow exy)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1 + (ey - 1)) <= Rabs (x * y))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1 + (ey - 1)) <= Rabs x * Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1) * bpow (ey - 1) <= Rabs x * Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(0 <= bpow (ex - 1))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(0 <= bpow (ey - 1))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ey - 1) <= Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(0 <= bpow (ey - 1))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ey - 1) <= Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ex - 1) <= Rabs x)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ey - 1) <= Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%Z(bpow (ey - 1) <= Rabs y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Z(* *)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x); Fexp := cexp x |} * y)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x); Fexp := cexp x |} * F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) y); Fexp := cexp y |})%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - F2R (Fmult {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x); Fexp := cexp x |} {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) y); Fexp := cexp y |}))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y); Fexp := cexp x + cexp y |})%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (F2R {| Fnum := rnd (scaled_mantissa beta (FLX_exp prec) (x * y)); Fexp := cexp (x * y) |} + - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y); Fexp := cexp x + cexp y |})%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = F2R (Fplus (Fopp {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y); Fexp := cexp x + cexp y |}) {| Fnum := rnd (scaled_mantissa beta (FLX_exp prec) (x * y)); Fexp := cexp (x * y) |})beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = F2R (let '(m1, m2, e) := Falign (Fopp {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y); Fexp := cexp x + cexp y |}) {| Fnum := rnd (scaled_mantissa beta (FLX_exp prec) (x * y)); Fexp := cexp (x * y) |} in {| Fnum := m1 + m2; Fexp := e |})beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = F2R (let '(m1, m2, e) := if (cexp x + cexp y <=? cexp (x * y))%Z then ((- (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)))%Z, (rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)))%Z, (cexp x + cexp y)%Z) else ((- (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) * beta ^ (cexp x + cexp y - cexp (x * y)))%Z, rnd (scaled_mantissa beta (FLX_exp prec) (x * y)), cexp (x * y)) in {| Fnum := m1 + m2; Fexp := e |})beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Z(* *)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%Rexists f0 : float beta, F2R f0 = (f - x * y)%R /\ (cexp (F2R f0) <= Fexp f0)%Z /\ Fexp f0 = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RF2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%R /\ (cexp (F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |}) <= Fexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |})%Z /\ Fexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%R(cexp (F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |}) <= Fexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |})%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%R(cexp (f - x * y) <= Fexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |})%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%R(cexp (f - x * y) <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (f - x * y) <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (f - x * y) <= cexp (x * y) - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(mag beta (f - x * y) - prec <= mag beta (x * y) - prec - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(mag beta (f - x * y) <= mag beta (x * y) - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(mag beta (f - x * y) <= exy - prec)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(Rabs (round beta (FLX_exp prec) rnd (x * y) - x * y) < bpow (exy - prec))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(Rabs (round beta (FLX_exp prec) rnd (x * y) - x * y) < ulp beta (FLX_exp prec) (x * y))%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zulp beta (FLX_exp prec) (x * y) = bpow (exy - prec)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zulp beta (FLX_exp prec) (x * y) = bpow (exy - prec)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zbpow (cexp (x * y)) = bpow (exy - prec)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Zbpow (FLX_exp prec (mag beta (x * y))) = bpow (exy - prec)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%Z(cexp (x * y) - prec <= cexp x + cexp y)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Zreflexivity. Qed.beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHz:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rf:=round beta (FLX_exp prec) rnd (x * y):RHxy0:(x * y)%R <> 0%Rexy:ZHexy:(bpow (exy - 1) <= Rabs (x * y) < bpow exy)%Rer:ZHer:(bpow (er - 1) <= Rabs (f - x * y) < bpow er)%Rex:ZHex:(bpow (ex - 1) <= Rabs x < bpow ex)%RHx0:x <> 0%Rey:ZHey:(bpow (ey - 1) <= Rabs y < bpow ey)%RHy0:y <> 0%RHc1:(cexp (x * y) - prec <= cexp x + cexp y)%ZHc2:(cexp x + cexp y <= cexp (x * y))%ZHr:F2R {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (f - x * y)%RFexp {| Fnum := - (Ztrunc (scaled_mantissa beta (FLX_exp prec) x) * Ztrunc (scaled_mantissa beta (FLX_exp prec) y)) + rnd (scaled_mantissa beta (FLX_exp prec) (x * y)) * beta ^ (cexp (x * y) - (cexp x + cexp y)); Fexp := cexp x + cexp y |} = (cexp x + cexp y)%Z
Error of the multiplication in FLX
beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> format (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> format (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yformat (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R = 0%Rformat (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rformat (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R = 0%Rformat 0beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rformat (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rformat (round beta (FLX_exp prec) rnd (x * y) - x * y)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(cexp (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (cexp x + cexp y)%Zformat (round beta (FLX_exp prec) rnd (x * y) - x * y)now apply generic_format_F2R. Qed.beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHr0:(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(cexp (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (cexp x + cexp y)%Zformat (F2R {| Fnum := m; Fexp := e |})beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> format (x * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> format (x * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xformat (x * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xZx:x = 0%Rformat (x * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rformat (x * bpow e)rewrite Zx, Rmult_0_l; apply generic_format_0.beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xZx:x = 0%Rformat (x * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rformat (x * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rformat (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLX_exp prec) x); Fexp := cexp x |} * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zformat (F2R {| Fnum := mx; Fexp := ex |} * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaformat (F2R {| Fnum := mx; Fexp := ex |} * bpow e)beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaF2R f = (F2R {| Fnum := mx; Fexp := ex |} * bpow e)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float beta(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R -> (cexp (F2R {| Fnum := mx; Fexp := ex |} * bpow e) <= Fexp f)%Znow unfold F2R; simpl; rewrite bpow_plus, Rmult_assoc.beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaF2R f = (F2R {| Fnum := mx; Fexp := ex |} * bpow e)%Rbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float beta(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R -> (cexp (F2R {| Fnum := mx; Fexp := ex |} * bpow e) <= Fexp f)%Zbeta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(cexp (x * bpow e) <= Fexp f)%Zunfold FLX_exp; omega. Qed. End Fprop_mult_error. Section Fprop_mult_error_FLT. Variable beta : radix. Notation bpow e := (bpow beta e). Variable emin prec : Z. Context { prec_gt_0_ : Prec_gt_0 prec }. Notation format := (generic_format beta (FLT_exp emin prec)). Notation cexp := (cexp beta (FLT_exp emin prec)). Variable rnd : R -> Z. Context { valid_rnd : Valid_rnd rnd }.beta:radixprec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLX_exp prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(FLX_exp prec (mag beta x + e) <= FLX_exp prec (mag beta x) + e)%Z
Error of the multiplication in FLT with underflow requirements
beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> ((x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%R) -> format (round beta (FLT_exp emin prec) rnd (x * y) - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall x y : R, format x -> format y -> ((x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%R) -> format (round beta (FLT_exp emin prec) rnd (x * y) - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rformat (round beta (FLT_exp emin prec) rnd (x * y) - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R = 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R = 0%Rformat 0beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R = 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R = 0%Rformat (round beta (FLT_exp emin prec) rnd (x * y) - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R = 0%Rformat (round beta (FLT_exp emin prec) rnd 0 - 0)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R = 0%Rformat (0 - 0)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R = 0%Rformat 0beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(x * y)%R <> 0%R -> (bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rgeneric_format beta (FLX_exp prec) xbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rgeneric_format beta (FLX_exp prec) ybeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rgeneric_format beta (FLX_exp prec) ybeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(round beta (FLX_exp prec) rnd (x * y) - x * y)%R <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(round beta (FLT_exp emin prec) rnd (x * y) - x * y)%R <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(bpow (emin + prec - 1) <= Rabs (x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(bpow (emin + prec - 1) <= Rabs (x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(bpow (emin + prec - 1) <= bpow (emin + 2 * prec - 1))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(emin + prec - 1 <= emin + 2 * prec - 1)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%R(0 < prec)%Z -> (emin + prec - 1 <= emin + 2 * prec - 1)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Z(bpow (emin + prec - 1) <= Rabs (x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLX_exp prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Z(bpow (emin + prec - 1) <= bpow (emin + 2 * prec - 1))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (f - x * y)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zformat (F2R {| Fnum := m; Fexp := e |})beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zm <> 0%Z -> (cexp (F2R {| Fnum := m; Fexp := e |}) <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= Fexp {| Fnum := m; Fexp := e |})%ZH3:Fexp {| Fnum := m; Fexp := e |} = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Z(cexp (F2R {| Fnum := m; Fexp := e |}) <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Z(cexp (F2R {| Fnum := m; Fexp := e |}) <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Z(Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec >= emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec)%Z(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(emin <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec >= emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec)%Z(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec <= Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(emin <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec >= emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec)%Z(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec <= mag beta (F2R {| Fnum := m; Fexp := e |}) - prec)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(emin <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(emin <= e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(emin <= Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = emin(x * y)%R <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHr0:(x * y)%R = 0%R(f - x * y)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHr0:(x * y)%R = 0%R(round beta (FLT_exp emin prec) rnd (x * y) - x * y)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHr0:(x * y)%R = 0%R(round beta (FLT_exp emin prec) rnd 0 - 0)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHr0:(x * y)%R = 0%R(0 - 0)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%Rx <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:x = 0%R(x * y)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%Ry <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHx0:x <> 0%RHxy0:y = 0%R(x * y)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%R(emin <= mag beta x - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(emin <= ex - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(emin <= ex - prec + (mag beta y - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(emin <= ex - prec + (ey - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(emin <= ex - prec + (ey - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(emin + 2 * prec - 1 < ex + ey)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%RH:(emin + 2 * prec - 1 < ex + ey)%Z(emin <= ex - prec + (ey - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(emin + 2 * prec - 1 < ex + ey)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (emin + 2 * prec - 1) < bpow (ex + ey))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs (x * y) < bpow (ex + ey))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x * Rabs y < bpow ex * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x < bpow ex)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rapply Ey. Qed.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:RHx:format xHy:format yHxy:(bpow (emin + 2 * prec - 1) <= Rabs (x * y))%Rf:=round beta (FLT_exp emin prec) rnd (x * y):RHr0:(f - x * y)%R <> 0%RHxy':(x * y)%R <> 0%Rm, e:ZH1:F2R {| Fnum := m; Fexp := e |} = (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%RH2:(Generic_fmt.cexp beta (FLX_exp prec) (F2R {| Fnum := m; Fexp := e |}) <= e)%ZH3:e = (Generic_fmt.cexp beta (FLX_exp prec) x + Generic_fmt.cexp beta (FLX_exp prec) y)%ZM1:(mag beta (F2R {| Fnum := m; Fexp := e |}) - prec < emin)%ZM2:Z.max (mag beta (F2R {| Fnum := m; Fexp := e |}) - prec) emin = eminHxy0:(x * y)%R <> 0%RHx0:x <> 0%RHy0:y <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZEy:(bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall y : float beta, F2R y <> 0%R -> (bpow (Fexp y) <= Rabs (F2R y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall y : float beta, F2R y <> 0%R -> (bpow (Fexp y) <= Rabs (F2R y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZF2R {| Fnum := ny; Fexp := ey |} <> 0%R -> (bpow (Fexp {| Fnum := ny; Fexp := ey |}) <= Rabs (F2R {| Fnum := ny; Fexp := ey |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z(IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z(0 <= Z.abs ny)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z(0 < Z.abs ny)%Z -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z(0 < Z.abs ny)%Z -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZHy:(0 < Z.abs ny)%Z(bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZHy:(0 < Z.abs ny)%Z(1 * bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZHy:(0 < Z.abs ny)%Z(0 <= bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZHy:(0 < Z.abs ny)%Z(1 <= IZR (Z.abs ny))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZHy:(0 < Z.abs ny)%Z(1 <= IZR (Z.abs ny))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:Z0%Z = Z.abs ny -> (IZR ny * bpow ey)%R <> 0%R -> (bpow ey <= IZR (Z.abs ny) * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZH1:0%Z = Z.abs ny(IZR ny * bpow ey)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZH1:0%Z = Z.abs ny(0 * bpow ey)%R = 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZH1:0%Z = Z.abs ny0%Z = nynow apply sym_eq, Z.abs_0_iff, sym_eq. Qed.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndny, ey:ZH1:0%Z = Z.abs ny0%Z = nybeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x y : R) (e : Z), format x -> format y -> (bpow (e + 2 * prec - 1) <= Rabs (x * y))%R -> (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%R <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x * y) - x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x y : R) (e : Z), format x -> format y -> (bpow (e + 2 * prec - 1) <= Rabs (x * y))%R -> (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%R <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x * y) - x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zformat x -> format y -> (bpow (e + 2 * prec - 1) <= Rabs (x * y))%R -> (round beta (FLT_exp emin prec) rnd (x * y) - x * y)%R <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (x * y) - x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):Rformat x -> format y -> (bpow (e + 2 * prec - 1) <= Rabs (x * y))%R -> (f - x * y)%R <> 0%R -> (bpow e <= Rabs (f - x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%R(f - x * y)%R <> 0%R -> (bpow e <= Rabs (f - x * y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%R(round beta (FLT_exp emin prec) rnd (F2R (Fmult {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x); Fexp := cexp x |} {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp y |})) - F2R (Fmult {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x); Fexp := cexp x |} {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp y |}))%R <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (F2R (Fmult {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x); Fexp := cexp x |} {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp y |})) - F2R (Fmult {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x); Fexp := cexp x |} {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp y |})))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%R(round beta (FLT_exp emin prec) rnd (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}) - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |})%R <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}) - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZHn:round beta (FLT_exp emin prec) rnd (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}) = F2R {| Fnum := n; Fexp := cexp x + cexp y |}(round beta (FLT_exp emin prec) rnd (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}) - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |})%R <> 0%R -> (bpow e <= Rabs (round beta (FLT_exp emin prec) rnd (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}) - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:Z(F2R {| Fnum := n; Fexp := cexp x + cexp y |} - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |})%R <> 0%R -> (bpow e <= Rabs (F2R {| Fnum := n; Fexp := cexp x + cexp y |} - F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZF2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%R -> (bpow e <= Rabs (F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%R(bpow e <= Rabs (F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%R(bpow e <= bpow (Fexp {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |}))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%R(bpow e <= bpow (cexp x + cexp y))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%R(e <= cexp x + cexp y)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%R(e <= Z.max (mag beta x - prec) emin + Z.max (mag beta y - prec) emin)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(e <= Z.max (Build_mag_prop beta x ex Hx - prec) emin + Z.max (mag beta y - prec) emin)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(e <= Z.max (Build_mag_prop beta x ex Hx - prec) emin + Z.max (Build_mag_prop beta y ey Hy - prec) emin)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(e <= ex - prec + (ey - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(ex - prec + (ey - prec) <= Z.max (ex - prec) emin + Z.max (ey - prec) emin)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(e <= ex - prec + (ey - prec))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(e + 2 * prec - 1 < ex + ey)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (e + 2 * prec - 1) < bpow (ex + ey))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs (x * y) < bpow (ex + ey))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x * Rabs y < bpow ex * bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 <= Rabs x)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 <= Rabs y)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x < bpow ex)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 <= Rabs y)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x < bpow ex)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x < bpow ex)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%Rx <> 0%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RK':x = 0%R(Rabs (x * y) < bpow (e + 2 * prec - 1))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yH1:(bpow (e + 2 * prec - 1) <= Rabs (x * y))%Rn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%Ry <> 0%Rrewrite K', Rmult_0_r, Rabs_R0; apply bpow_gt_0. Qed.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx, y:Re:Zf:=round beta (FLT_exp emin prec) rnd (x * y):RFx:format xFy:format yn:ZK:F2R {| Fnum := n - Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x) * Ztrunc (scaled_mantissa beta (FLT_exp emin prec) y); Fexp := cexp x + cexp y |} <> 0%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RK':y = 0%R(Rabs (x * y) < bpow (e + 2 * prec - 1))%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> (emin + prec - mag beta x <= e)%Z -> format (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> (emin + prec - mag beta x <= e)%Z -> format (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%Zformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZZx:x = 0%Rformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rformat (x * bpow e)rewrite Zx, Rmult_0_l; apply generic_format_0.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZZx:x = 0%Rformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rformat (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x); Fexp := cexp x |} * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zformat (F2R {| Fnum := mx; Fexp := ex |} * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaformat (F2R {| Fnum := mx; Fexp := ex |} * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaF2R f = (F2R {| Fnum := mx; Fexp := ex |} * bpow e)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float beta(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R -> (cexp (F2R {| Fnum := mx; Fexp := ex |} * bpow e) <= Fexp f)%Znow unfold F2R; simpl; rewrite bpow_plus, Rmult_assoc.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaF2R f = (F2R {| Fnum := mx; Fexp := ex |} * bpow e)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float beta(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R -> (cexp (F2R {| Fnum := mx; Fexp := ex |} * bpow e) <= Fexp f)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(cexp (x * bpow e) <= Fexp f)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(FLT_exp emin prec (mag beta x + e) <= FLT_exp emin prec (mag beta x) + e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(mag beta x + e - prec <= Z.max (mag beta x - prec + e) (emin + e))%Zapply Z.le_max_l. Qed.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(emin + prec - mag beta x <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%Rn:=(mag beta x - prec + e)%Z:Z(n <= Z.max n (emin + e))%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> (0 <= e)%Z -> format (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndforall (x : R) (e : Z), format x -> (0 <= e)%Z -> format (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%Zformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZZx:x = 0%Rformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rformat (x * bpow e)rewrite Zx, Rmult_0_l; apply generic_format_0.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZZx:x = 0%Rformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rformat (x * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rformat (F2R {| Fnum := Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x); Fexp := cexp x |} * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zformat (F2R {| Fnum := mx; Fexp := ex |} * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaformat (F2R {| Fnum := mx; Fexp := ex |} * bpow e)beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaF2R f = (F2R {| Fnum := mx; Fexp := ex |} * bpow e)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float beta(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R -> (cexp (F2R {| Fnum := mx; Fexp := ex |} * bpow e) <= Fexp f)%Znow unfold F2R; simpl; rewrite bpow_plus, Rmult_assoc.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaF2R f = (F2R {| Fnum := mx; Fexp := ex |} * bpow e)%Rbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float beta(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R -> (cexp (F2R {| Fnum := mx; Fexp := ex |} * bpow e) <= Fexp f)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(cexp (x * bpow e) <= Fexp f)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(FLT_exp emin prec (mag beta x + e) <= FLT_exp emin prec (mag beta x) + e)%Zbeta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(Z.max (mag beta x + e - prec) emin <= Z.max (mag beta x - prec + e) (emin + e))%Zapply Z.max_le_compat_l; omega. Qed. End Fprop_mult_error_FLT.beta:radixemin, prec:Zprec_gt_0_:Prec_gt_0 precrnd:R -> Zvalid_rnd:Valid_rnd rndx:Re:ZFx:format xHe:(0 <= e)%ZNzx:x <> 0%Rmx:=Ztrunc (scaled_mantissa beta (FLT_exp emin prec) x):Zex:=cexp x:Zf:={| Fnum := mx; Fexp := ex + e |} : float beta:float betaNzmx:(F2R {| Fnum := mx; Fexp := ex |} * bpow e)%R <> 0%R(Z.max (mag beta x + e - prec) emin <= Z.max (mag beta x + e - prec) (emin + e))%Z